@virtualdisplay.io/client 4.0.0-alpha.29 → 4.0.0-alpha.30
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 +10 -0
- package/dist/index.d.ts +102 -646
- package/dist/virtualdisplay.client.cjs.js +6 -6
- package/dist/virtualdisplay.client.es.js +621 -579
- package/dist/virtualdisplay.client.umd.js +9 -9
- package/package.json +1 -1
|
@@ -23,6 +23,10 @@ const c = {
|
|
|
23
23
|
}, It = {
|
|
24
24
|
FOCUSED: "focused"
|
|
25
25
|
}, Ot = {
|
|
26
|
+
/** Price and submit button both shown (default). */
|
|
27
|
+
AVAILABLE: "available",
|
|
28
|
+
/** Price shown, submit hidden (sold out / coming soon). */
|
|
29
|
+
VIEW_ONLY: "view_only",
|
|
26
30
|
/** Behaves exactly like an unpriced combination: no price, no button. */
|
|
27
31
|
HIDDEN: "hidden"
|
|
28
32
|
}, Lt = new Set(Object.values(c));
|
|
@@ -33,58 +37,58 @@ function Mt(n) {
|
|
|
33
37
|
return typeof t.target == "string" ? !1 : typeof t.type == "string" && Lt.has(t.type);
|
|
34
38
|
}
|
|
35
39
|
function Nt(n) {
|
|
36
|
-
const t =
|
|
40
|
+
const t = S(n);
|
|
37
41
|
return t !== null && t.type === c.HANDSHAKE;
|
|
38
42
|
}
|
|
39
43
|
function zt(n) {
|
|
40
|
-
const t =
|
|
44
|
+
const t = S(n);
|
|
41
45
|
return t !== null && t.type === c.SESSION && typeof t.sessionId == "string";
|
|
42
46
|
}
|
|
43
47
|
function Pt(n) {
|
|
44
|
-
const t =
|
|
48
|
+
const t = S(n);
|
|
45
49
|
return t !== null && t.type === c.APP_RESOLVED && typeof t.appType == "string" && t.appType !== "" && typeof t.name == "string";
|
|
46
50
|
}
|
|
47
51
|
function Ft(n) {
|
|
48
|
-
const t =
|
|
52
|
+
const t = S(n);
|
|
49
53
|
return t !== null && t.type === c.MUTATION && typeof t.instance == "string" && t.instance !== "" && Array.isArray(t.results);
|
|
50
54
|
}
|
|
51
|
-
function
|
|
52
|
-
const t =
|
|
55
|
+
function $t(n) {
|
|
56
|
+
const t = S(n);
|
|
53
57
|
return t !== null && t.type === c.SNAPSHOT && ("data" in t || "error" in t);
|
|
54
58
|
}
|
|
55
|
-
function
|
|
56
|
-
const t =
|
|
59
|
+
function Dt(n) {
|
|
60
|
+
const t = S(n);
|
|
57
61
|
return t !== null && t.type === c.CAMERA && Array.isArray(t.transforms);
|
|
58
62
|
}
|
|
59
63
|
function Bt(n) {
|
|
60
|
-
const t =
|
|
64
|
+
const t = S(n);
|
|
61
65
|
return t !== null && t.type === c.MAPPING && typeof t.instance == "string" && t.instance !== "" && Array.isArray(t.attributes);
|
|
62
66
|
}
|
|
63
67
|
function Ut(n) {
|
|
64
|
-
const t =
|
|
68
|
+
const t = S(n);
|
|
65
69
|
return t !== null && t.type === c.LOADING_INDICATOR && typeof t.progress == "number";
|
|
66
70
|
}
|
|
67
71
|
function Vt(n) {
|
|
68
|
-
const t =
|
|
72
|
+
const t = S(n);
|
|
69
73
|
return t !== null && t.type === c.SYNC && typeof t.connected == "boolean";
|
|
70
74
|
}
|
|
71
|
-
function
|
|
72
|
-
const t =
|
|
75
|
+
function Ht(n) {
|
|
76
|
+
const t = S(n);
|
|
73
77
|
return t !== null && t.type === c.SELECTABLE && typeof t.instance == "string" && t.instance !== "" && Array.isArray(t.attributes);
|
|
74
78
|
}
|
|
75
|
-
function
|
|
76
|
-
const t =
|
|
79
|
+
function jt(n) {
|
|
80
|
+
const t = S(n);
|
|
77
81
|
return t !== null && t.type === c.CONFIG && typeof t.viewerSettings == "object";
|
|
78
82
|
}
|
|
79
83
|
function qt(n) {
|
|
80
|
-
const t =
|
|
84
|
+
const t = S(n);
|
|
81
85
|
return t !== null && t.type === c.FOCUS && typeof t.instance == "string" && t.instance !== "" && typeof t.state == "string";
|
|
82
86
|
}
|
|
83
87
|
function Gt(n) {
|
|
84
|
-
const t =
|
|
88
|
+
const t = S(n);
|
|
85
89
|
return t !== null && t.type === c.PRICING && typeof t.instance == "string" && t.instance !== "" && typeof t.pricing == "object" && t.pricing !== null;
|
|
86
90
|
}
|
|
87
|
-
function
|
|
91
|
+
function S(n) {
|
|
88
92
|
return typeof n != "object" || n === null ? null : n;
|
|
89
93
|
}
|
|
90
94
|
class nt {
|
|
@@ -136,7 +140,7 @@ class nt {
|
|
|
136
140
|
}
|
|
137
141
|
class Zt {
|
|
138
142
|
constructor(t, e) {
|
|
139
|
-
this.getTarget = t, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = e?.isValid ?? Mt, this.publisher = new nt((i) => this.post(i)), this.consumer = new nt((i) => this.routeToHandler(i)), e?.bufferIncoming !== !0 && this.consumer.markReady();
|
|
143
|
+
this.getTarget = t, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = e?.isValid ?? Mt, this.onHandlerError = e?.onHandlerError ?? Wt, this.publisher = new nt((i) => this.post(i)), this.consumer = new nt((i) => this.routeToHandler(i)), e?.bufferIncoming !== !0 && this.consumer.markReady();
|
|
140
144
|
}
|
|
141
145
|
getTarget;
|
|
142
146
|
handlers = /* @__PURE__ */ new Map();
|
|
@@ -146,6 +150,7 @@ class Zt {
|
|
|
146
150
|
sourceId;
|
|
147
151
|
targetOrigin;
|
|
148
152
|
isValid;
|
|
153
|
+
onHandlerError;
|
|
149
154
|
/**
|
|
150
155
|
* Register a handler for a specific message type
|
|
151
156
|
*/
|
|
@@ -226,12 +231,16 @@ class Zt {
|
|
|
226
231
|
return;
|
|
227
232
|
const i = e(t);
|
|
228
233
|
i instanceof Promise && i.catch((o) => {
|
|
229
|
-
|
|
230
|
-
console.error(`Virtualdisplay: error handling ${t.type}: ${s}`);
|
|
234
|
+
this.onHandlerError(t, o);
|
|
231
235
|
});
|
|
232
236
|
}
|
|
233
237
|
}
|
|
234
|
-
|
|
238
|
+
function Wt(n, t) {
|
|
239
|
+
const e = t instanceof Error ? t.message : String(t);
|
|
240
|
+
console.error(`Virtualdisplay: error handling ${n.type}: ${e}`);
|
|
241
|
+
}
|
|
242
|
+
class Qt {
|
|
243
|
+
/** @internal */
|
|
235
244
|
constructor(t, e) {
|
|
236
245
|
this.send = t, this.instance = e;
|
|
237
246
|
}
|
|
@@ -245,7 +254,8 @@ class Wt {
|
|
|
245
254
|
});
|
|
246
255
|
}
|
|
247
256
|
}
|
|
248
|
-
class
|
|
257
|
+
class Yt {
|
|
258
|
+
/** @internal */
|
|
249
259
|
constructor(t, e) {
|
|
250
260
|
this.value = t, this.attribute = e;
|
|
251
261
|
}
|
|
@@ -255,6 +265,7 @@ class Qt {
|
|
|
255
265
|
get isSelected() {
|
|
256
266
|
return this.isSelectedValue;
|
|
257
267
|
}
|
|
268
|
+
/** @internal */
|
|
258
269
|
setSelected(t) {
|
|
259
270
|
this.isSelectedValue = t;
|
|
260
271
|
}
|
|
@@ -288,12 +299,13 @@ class y extends Error {
|
|
|
288
299
|
return new y(t, A.INVALID_PARAMETER);
|
|
289
300
|
}
|
|
290
301
|
}
|
|
291
|
-
class
|
|
302
|
+
class Kt {
|
|
292
303
|
name;
|
|
293
304
|
defaultValue;
|
|
294
305
|
values;
|
|
295
306
|
onSelect;
|
|
296
307
|
onChangeCallback;
|
|
308
|
+
/** @internal */
|
|
297
309
|
constructor(t) {
|
|
298
310
|
this.name = t.name, this.defaultValue = t.defaultValue, this.onSelect = t.onSelect, this.values = this.createValues(t.values);
|
|
299
311
|
}
|
|
@@ -328,6 +340,7 @@ class Yt {
|
|
|
328
340
|
/**
|
|
329
341
|
* Update selection state from server mutation result
|
|
330
342
|
* Direct value comparison - no source/target translation
|
|
343
|
+
* @internal
|
|
331
344
|
*/
|
|
332
345
|
handleResult(t) {
|
|
333
346
|
let e;
|
|
@@ -340,18 +353,18 @@ class Yt {
|
|
|
340
353
|
createValues(t) {
|
|
341
354
|
const e = /* @__PURE__ */ new Map();
|
|
342
355
|
for (const i of t) {
|
|
343
|
-
const o = new
|
|
356
|
+
const o = new Yt(i, this.name);
|
|
344
357
|
i === this.defaultValue && o.setSelected(!0), e.set(i, o);
|
|
345
358
|
}
|
|
346
359
|
return e;
|
|
347
360
|
}
|
|
348
361
|
}
|
|
349
|
-
class
|
|
362
|
+
class Xt {
|
|
350
363
|
attributes = /* @__PURE__ */ new Map();
|
|
351
364
|
constructor(t, e, i) {
|
|
352
365
|
for (const o of t) {
|
|
353
366
|
const s = this.buildOptions(o, e);
|
|
354
|
-
this.attributes.set(o.name, new
|
|
367
|
+
this.attributes.set(o.name, new Kt(s));
|
|
355
368
|
}
|
|
356
369
|
this.onMutationFailed = i;
|
|
357
370
|
}
|
|
@@ -368,6 +381,7 @@ class Kt {
|
|
|
368
381
|
}
|
|
369
382
|
return t;
|
|
370
383
|
}
|
|
384
|
+
/** @internal */
|
|
371
385
|
handleResults(t) {
|
|
372
386
|
for (const e of t) {
|
|
373
387
|
if (!e.success) {
|
|
@@ -388,32 +402,32 @@ class Kt {
|
|
|
388
402
|
return t.defaultValue !== void 0 ? { ...i, defaultValue: t.defaultValue } : i;
|
|
389
403
|
}
|
|
390
404
|
}
|
|
391
|
-
const N = 4096,
|
|
392
|
-
function
|
|
405
|
+
const N = 4096, $ = 16384, Jt = [1024, 256, 64], te = 20, Q = ["timestamp", "level", "msg", "service", "trace_id", "span_id"];
|
|
406
|
+
function ee(n) {
|
|
393
407
|
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]) => !Q.includes(r)).map(([r, a]) => `${r}=${O(a, N).line}`).join(" ");
|
|
394
408
|
return `${t} ${e} [${i}] ${o}${s ? " " + s : ""}`;
|
|
395
409
|
}
|
|
396
|
-
function
|
|
397
|
-
for (const o of [N, ...
|
|
410
|
+
function ne(n) {
|
|
411
|
+
for (const o of [N, ...Jt]) {
|
|
398
412
|
const { line: s, truncated: r } = O(n, o);
|
|
399
413
|
if (!r) {
|
|
400
|
-
if (s.length <=
|
|
414
|
+
if (s.length <= $)
|
|
401
415
|
return s;
|
|
402
416
|
continue;
|
|
403
417
|
}
|
|
404
418
|
const { line: a } = O({ ...n, log_truncated: !0 }, o);
|
|
405
|
-
if (a.length <=
|
|
419
|
+
if (a.length <= $)
|
|
406
420
|
return a;
|
|
407
421
|
}
|
|
408
|
-
const t = Object.keys(n).filter((o) => !Q.includes(o)), e = { ...
|
|
409
|
-
return i.line.length <=
|
|
422
|
+
const t = Object.keys(n).filter((o) => !Q.includes(o)), e = { ...oe(n, Q), log_truncated: !0, log_dropped_count: t.length }, i = O({ ...e, log_dropped_attrs: t.slice(0, te) }, N);
|
|
423
|
+
return i.line.length <= $ ? i.line : O(e, N).line;
|
|
410
424
|
}
|
|
411
425
|
function O(n, t) {
|
|
412
426
|
const e = [];
|
|
413
427
|
let i = !1;
|
|
414
428
|
return { line: JSON.stringify(n, function(r, a) {
|
|
415
429
|
if (typeof a == "string")
|
|
416
|
-
return a.length > t && (i = !0),
|
|
430
|
+
return a.length > t && (i = !0), ie(a, t);
|
|
417
431
|
if (typeof a == "bigint")
|
|
418
432
|
return a.toString();
|
|
419
433
|
if (typeof a != "object" || a === null)
|
|
@@ -423,17 +437,17 @@ function O(n, t) {
|
|
|
423
437
|
return e.includes(a) ? "[Circular]" : (e.push(a), a);
|
|
424
438
|
}), truncated: i };
|
|
425
439
|
}
|
|
426
|
-
function
|
|
440
|
+
function ie(n, t) {
|
|
427
441
|
return n.length <= t ? n : `${n.slice(0, t)}...[truncated ${n.length - t} chars]`;
|
|
428
442
|
}
|
|
429
|
-
function
|
|
443
|
+
function oe(n, t) {
|
|
430
444
|
const e = {};
|
|
431
445
|
for (const i of t)
|
|
432
446
|
n[i] !== void 0 && (e[i] = n[i]);
|
|
433
447
|
return e;
|
|
434
448
|
}
|
|
435
|
-
function
|
|
436
|
-
const e = t ?
|
|
449
|
+
function se(n, t) {
|
|
450
|
+
const e = t ? ee(n) : ne(n);
|
|
437
451
|
n.level === "error" ? console.error(e) : n.level === "warn" ? console.warn(e) : console.log(e);
|
|
438
452
|
}
|
|
439
453
|
function ft(n, t = 0) {
|
|
@@ -450,34 +464,34 @@ function ft(n, t = 0) {
|
|
|
450
464
|
}
|
|
451
465
|
return n.cause !== void 0 && n.cause !== null && (e.cause = n.cause instanceof Error && t < 5 ? ft(n.cause, t + 1) : String(n.cause)), e;
|
|
452
466
|
}
|
|
453
|
-
function
|
|
467
|
+
function re(n) {
|
|
454
468
|
const t = {};
|
|
455
469
|
for (const [e, i] of Object.entries(n))
|
|
456
470
|
t[e] = i instanceof Error ? ft(i) : i;
|
|
457
471
|
return t;
|
|
458
472
|
}
|
|
459
|
-
function
|
|
473
|
+
function ae() {
|
|
460
474
|
return /* @__PURE__ */ new Date();
|
|
461
475
|
}
|
|
462
|
-
function
|
|
476
|
+
function le(n) {
|
|
463
477
|
return n.toISOString();
|
|
464
478
|
}
|
|
465
479
|
function gt() {
|
|
466
480
|
return typeof navigator > "u" ? "" : navigator.userAgent;
|
|
467
481
|
}
|
|
468
|
-
function le() {
|
|
469
|
-
return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
470
|
-
}
|
|
471
482
|
function ce() {
|
|
472
|
-
return
|
|
483
|
+
return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
473
484
|
}
|
|
474
485
|
function de() {
|
|
475
|
-
return /
|
|
486
|
+
return /iPhone|iPad|iPod/i.test(gt()) || ce();
|
|
476
487
|
}
|
|
477
488
|
function ue() {
|
|
478
|
-
return
|
|
489
|
+
return /Android/i.test(gt());
|
|
490
|
+
}
|
|
491
|
+
function he() {
|
|
492
|
+
return de() || ue();
|
|
479
493
|
}
|
|
480
|
-
class
|
|
494
|
+
class pe {
|
|
481
495
|
constructor(t) {
|
|
482
496
|
this.config = t;
|
|
483
497
|
}
|
|
@@ -487,14 +501,14 @@ class he {
|
|
|
487
501
|
*/
|
|
488
502
|
log(t, e, i = {}) {
|
|
489
503
|
const o = this.config.traceProvider?.() ?? {}, s = {
|
|
490
|
-
timestamp: ae(
|
|
504
|
+
timestamp: le(ae()),
|
|
491
505
|
level: t,
|
|
492
506
|
msg: e,
|
|
493
507
|
service: this.config.service,
|
|
494
508
|
...o,
|
|
495
|
-
...
|
|
509
|
+
...re(i)
|
|
496
510
|
};
|
|
497
|
-
|
|
511
|
+
se(s, this.config.isDev);
|
|
498
512
|
}
|
|
499
513
|
/**
|
|
500
514
|
* Log at DEBUG level (development only).
|
|
@@ -523,7 +537,7 @@ class he {
|
|
|
523
537
|
}
|
|
524
538
|
function bt(n, t) {
|
|
525
539
|
const e = t?.isDev !== void 0 ? t.isDev : typeof process < "u" ? process.env.NODE_ENV !== "production" : !0;
|
|
526
|
-
return new
|
|
540
|
+
return new pe({ service: n, isDev: e, traceProvider: t?.traceProvider });
|
|
527
541
|
}
|
|
528
542
|
function M(n) {
|
|
529
543
|
if (n !== void 0)
|
|
@@ -537,14 +551,15 @@ function vt(n) {
|
|
|
537
551
|
error: (t, e) => n.error(t, M(e))
|
|
538
552
|
};
|
|
539
553
|
}
|
|
540
|
-
let yt = !1,
|
|
541
|
-
function
|
|
542
|
-
yt = !0,
|
|
554
|
+
let yt = !1, w = vt(bt("client", { isDev: !1 }));
|
|
555
|
+
function me() {
|
|
556
|
+
yt = !0, w = vt(bt("client", { isDev: !0 }));
|
|
543
557
|
}
|
|
544
|
-
function
|
|
558
|
+
function Ao() {
|
|
545
559
|
return yt;
|
|
546
560
|
}
|
|
547
|
-
class
|
|
561
|
+
class fe {
|
|
562
|
+
/** @internal */
|
|
548
563
|
constructor(t, e, i) {
|
|
549
564
|
this.send = t, this.instance = e, this.onMutationFailed = i;
|
|
550
565
|
}
|
|
@@ -555,16 +570,18 @@ class me {
|
|
|
555
570
|
pendingCallbacks = [];
|
|
556
571
|
/**
|
|
557
572
|
* Handle incoming MAPPING message from server
|
|
573
|
+
* @internal
|
|
558
574
|
*/
|
|
559
575
|
handleMappingReceived(t) {
|
|
560
|
-
|
|
576
|
+
w.debug("Initializing from server mapping", {
|
|
561
577
|
attributeCount: t.attributes.length
|
|
562
|
-
}), this.registry = new
|
|
578
|
+
}), this.registry = new Xt(
|
|
563
579
|
t.attributes,
|
|
564
580
|
(e, i) => this.sendMutation(e, i),
|
|
565
581
|
this.onMutationFailed
|
|
566
582
|
), this.replayPendingCallbacks();
|
|
567
583
|
}
|
|
584
|
+
/** @internal */
|
|
568
585
|
handleMutationResult(t) {
|
|
569
586
|
this.registry?.handleResults(t.results);
|
|
570
587
|
}
|
|
@@ -604,7 +621,7 @@ class me {
|
|
|
604
621
|
}
|
|
605
622
|
const i = this.registry.get(t);
|
|
606
623
|
if (i === void 0) {
|
|
607
|
-
|
|
624
|
+
w.warn(`onChange: attribute "${t}" not found — callback will not fire`);
|
|
608
625
|
return;
|
|
609
626
|
}
|
|
610
627
|
i.onChange(e);
|
|
@@ -629,14 +646,15 @@ class me {
|
|
|
629
646
|
replayPendingCallbacks() {
|
|
630
647
|
for (const { name: t, callback: e } of this.pendingCallbacks) {
|
|
631
648
|
const i = this.registry?.get(t);
|
|
632
|
-
i === void 0 &&
|
|
649
|
+
i === void 0 && w.warn(`onChange: attribute "${t}" not found — buffered callback will not fire`), i?.onChange(e);
|
|
633
650
|
}
|
|
634
651
|
this.pendingCallbacks.length = 0;
|
|
635
652
|
}
|
|
636
653
|
}
|
|
637
|
-
class
|
|
654
|
+
class ge {
|
|
638
655
|
snapshot;
|
|
639
656
|
callbacks = [];
|
|
657
|
+
/** @internal */
|
|
640
658
|
handleSnapshot(t) {
|
|
641
659
|
this.snapshot = t.attributes;
|
|
642
660
|
for (const e of this.callbacks)
|
|
@@ -654,7 +672,8 @@ class fe {
|
|
|
654
672
|
return this.snapshot ?? [];
|
|
655
673
|
}
|
|
656
674
|
}
|
|
657
|
-
let
|
|
675
|
+
let be = class {
|
|
676
|
+
/** @internal */
|
|
658
677
|
constructor(t) {
|
|
659
678
|
this.send = t;
|
|
660
679
|
}
|
|
@@ -717,10 +736,11 @@ let ge = class {
|
|
|
717
736
|
this.send(t);
|
|
718
737
|
}
|
|
719
738
|
};
|
|
720
|
-
class
|
|
739
|
+
class ve {
|
|
721
740
|
state;
|
|
722
741
|
limitsState;
|
|
723
742
|
changeCallbacks = [];
|
|
743
|
+
/** @internal */
|
|
724
744
|
constructor() {
|
|
725
745
|
this.state = {
|
|
726
746
|
rotation: 0,
|
|
@@ -747,9 +767,9 @@ class be {
|
|
|
747
767
|
return this.state.zoom;
|
|
748
768
|
}
|
|
749
769
|
/**
|
|
750
|
-
* Subscribe to camera position changes.
|
|
751
|
-
*
|
|
752
|
-
*
|
|
770
|
+
* Subscribe to camera position changes. Also fires when the viewer reports new
|
|
771
|
+
* movement limits, so controls can re-evaluate their disabled state without a
|
|
772
|
+
* second callback.
|
|
753
773
|
*/
|
|
754
774
|
onChange(t) {
|
|
755
775
|
this.changeCallbacks.push(t);
|
|
@@ -764,6 +784,7 @@ class be {
|
|
|
764
784
|
/**
|
|
765
785
|
* Apply camera limits received from the server CONFIG message.
|
|
766
786
|
* Fires onChange callbacks so button disabled states update immediately.
|
|
787
|
+
* @internal
|
|
767
788
|
*/
|
|
768
789
|
applyLimits(t) {
|
|
769
790
|
this.limitsState = t;
|
|
@@ -773,12 +794,14 @@ class be {
|
|
|
773
794
|
}
|
|
774
795
|
/**
|
|
775
796
|
* Handle incoming camera position message from server
|
|
797
|
+
* @internal
|
|
776
798
|
*/
|
|
777
799
|
handlePositionUpdate(t) {
|
|
778
800
|
this.update(t.transforms);
|
|
779
801
|
}
|
|
780
802
|
/**
|
|
781
803
|
* Update camera position from server transforms
|
|
804
|
+
* @internal
|
|
782
805
|
*/
|
|
783
806
|
update(t) {
|
|
784
807
|
let e = !1;
|
|
@@ -805,20 +828,21 @@ class be {
|
|
|
805
828
|
}
|
|
806
829
|
}
|
|
807
830
|
}
|
|
808
|
-
function
|
|
809
|
-
const e = n.filter((s) =>
|
|
831
|
+
function ye(n, t) {
|
|
832
|
+
const e = n.filter((s) => we(s, t));
|
|
810
833
|
if (e.length === 0)
|
|
811
834
|
return;
|
|
812
835
|
const i = Math.max(...e.map(it)), o = e.filter((s) => it(s) === i);
|
|
813
836
|
return o.length === 1 ? o[0] : void 0;
|
|
814
837
|
}
|
|
815
|
-
function
|
|
838
|
+
function we(n, t) {
|
|
816
839
|
return Object.entries(n.attributes).every(([e, i]) => t[e] === i);
|
|
817
840
|
}
|
|
818
841
|
function it(n) {
|
|
819
842
|
return Object.keys(n.attributes).length;
|
|
820
843
|
}
|
|
821
|
-
class
|
|
844
|
+
class Se {
|
|
845
|
+
/** @internal */
|
|
822
846
|
constructor(t, e) {
|
|
823
847
|
this.dispatchChange = t, this.dispatchSubmit = e;
|
|
824
848
|
}
|
|
@@ -888,6 +912,7 @@ class we {
|
|
|
888
912
|
* resolve and when a submit handler is registered (which can switch the button
|
|
889
913
|
* on without a configuration change). Separate from `onChange`, which stays the
|
|
890
914
|
* host-facing, mutation-driven contract. Returns a disposer.
|
|
915
|
+
* @internal
|
|
891
916
|
*/
|
|
892
917
|
onRender(t) {
|
|
893
918
|
return this.renderCallbacks.push(t), () => {
|
|
@@ -907,11 +932,17 @@ class we {
|
|
|
907
932
|
const t = this.resolved !== void 0 ? { attributes: this.resolved.attributes, reference: this.resolved.reference } : { attributes: { ...this.selection }, reference: "" };
|
|
908
933
|
this.dispatchSubmit(t), await this.submitCallback?.(t);
|
|
909
934
|
}
|
|
910
|
-
/**
|
|
935
|
+
/**
|
|
936
|
+
* Called by the client when a PRICING message arrives from the viewer.
|
|
937
|
+
* @internal
|
|
938
|
+
*/
|
|
911
939
|
handlePricingReceived(t) {
|
|
912
940
|
this.pricing = t, this.recompute();
|
|
913
941
|
}
|
|
914
|
-
/**
|
|
942
|
+
/**
|
|
943
|
+
* Called by the client after every mutation result, with the full selection.
|
|
944
|
+
* @internal
|
|
945
|
+
*/
|
|
915
946
|
handleSelectionChanged(t) {
|
|
916
947
|
this.selection = t, this.recompute();
|
|
917
948
|
}
|
|
@@ -928,7 +959,7 @@ class we {
|
|
|
928
959
|
resolve() {
|
|
929
960
|
if (this.pricing === void 0)
|
|
930
961
|
return;
|
|
931
|
-
const t =
|
|
962
|
+
const t = ye(this.pricing.rules, this.selection);
|
|
932
963
|
if (!(t === void 0 || t.availability === Ot.HIDDEN))
|
|
933
964
|
return {
|
|
934
965
|
attributes: { ...this.selection },
|
|
@@ -939,7 +970,8 @@ class we {
|
|
|
939
970
|
};
|
|
940
971
|
}
|
|
941
972
|
}
|
|
942
|
-
class
|
|
973
|
+
class _e {
|
|
974
|
+
/** @internal */
|
|
943
975
|
constructor(t, e, i) {
|
|
944
976
|
this.send = t, this.dispatch = e, this.instance = i;
|
|
945
977
|
}
|
|
@@ -980,7 +1012,10 @@ class Se {
|
|
|
980
1012
|
onChange(t) {
|
|
981
1013
|
this.changeCallbacks.push(t);
|
|
982
1014
|
}
|
|
983
|
-
/**
|
|
1015
|
+
/**
|
|
1016
|
+
* Called by the client when a FocusStateMessage is received from the viewer.
|
|
1017
|
+
* @internal
|
|
1018
|
+
*/
|
|
984
1019
|
handleStateReceived(t) {
|
|
985
1020
|
t.state === It.FOCUSED && t.component !== void 0 ? (this.focused = t.component, this.attributes = t.attributes ?? []) : (this.focused = null, this.attributes = []);
|
|
986
1021
|
const e = this.focused !== null ? { component: this.focused, attributes: this.attributes } : null;
|
|
@@ -990,6 +1025,7 @@ class Se {
|
|
|
990
1025
|
}
|
|
991
1026
|
}
|
|
992
1027
|
class ke {
|
|
1028
|
+
/** @internal */
|
|
993
1029
|
constructor(t) {
|
|
994
1030
|
this.filename = t;
|
|
995
1031
|
}
|
|
@@ -1027,6 +1063,7 @@ class ke {
|
|
|
1027
1063
|
/**
|
|
1028
1064
|
* Mark the photo as developed and notify all callbacks
|
|
1029
1065
|
* This method is called by Snapshot when the photo data arrives from the server
|
|
1066
|
+
* @internal
|
|
1030
1067
|
*/
|
|
1031
1068
|
develop(t) {
|
|
1032
1069
|
this.developed || this.failed || (this.photoData = t, this.developed = !0, this.developedCallbacks.forEach((e) => {
|
|
@@ -1035,6 +1072,7 @@ class ke {
|
|
|
1035
1072
|
}
|
|
1036
1073
|
/**
|
|
1037
1074
|
* Mark the photo as failed and notify error callbacks
|
|
1075
|
+
* @internal
|
|
1038
1076
|
*/
|
|
1039
1077
|
fail(t) {
|
|
1040
1078
|
this.developed || this.failed || (this.failed = !0, this.errorCallbacks.forEach((e) => {
|
|
@@ -1044,6 +1082,7 @@ class ke {
|
|
|
1044
1082
|
}
|
|
1045
1083
|
const ot = 3e4;
|
|
1046
1084
|
class Ce {
|
|
1085
|
+
/** @internal */
|
|
1047
1086
|
constructor(t) {
|
|
1048
1087
|
this.send = t;
|
|
1049
1088
|
}
|
|
@@ -1058,9 +1097,9 @@ class Ce {
|
|
|
1058
1097
|
* @throws VirtualdisplayError if filename is invalid
|
|
1059
1098
|
*/
|
|
1060
1099
|
take(t) {
|
|
1061
|
-
this.validateFilename(t),
|
|
1100
|
+
this.validateFilename(t), w.debug("Taking snapshot", { filename: t });
|
|
1062
1101
|
const e = new ke(t), i = setTimeout(() => {
|
|
1063
|
-
this.pendingPhotos.delete(t),
|
|
1102
|
+
this.pendingPhotos.delete(t), w.warn("Snapshot timed out", { filename: t }), e.fail(new y(
|
|
1064
1103
|
`Snapshot timed out: the viewer did not respond within ${ot}ms`,
|
|
1065
1104
|
A.SNAPSHOT_FAILED
|
|
1066
1105
|
));
|
|
@@ -1073,11 +1112,12 @@ class Ce {
|
|
|
1073
1112
|
/**
|
|
1074
1113
|
* Handle incoming snapshot result from server
|
|
1075
1114
|
* Matches the message to a pending photo by filename, then develops or fails it
|
|
1115
|
+
* @internal
|
|
1076
1116
|
*/
|
|
1077
1117
|
handleSnapshotResult(t) {
|
|
1078
1118
|
const e = this.pendingPhotos.get(t.filename);
|
|
1079
1119
|
if (e === void 0) {
|
|
1080
|
-
|
|
1120
|
+
w.warn("No pending photo found for filename", {
|
|
1081
1121
|
filename: t.filename,
|
|
1082
1122
|
pendingFilenames: Array.from(this.pendingPhotos.keys())
|
|
1083
1123
|
});
|
|
@@ -1130,7 +1170,7 @@ class Ce {
|
|
|
1130
1170
|
);
|
|
1131
1171
|
}
|
|
1132
1172
|
}
|
|
1133
|
-
class
|
|
1173
|
+
class Ae {
|
|
1134
1174
|
container = null;
|
|
1135
1175
|
attach(t) {
|
|
1136
1176
|
this.container = t;
|
|
@@ -1151,7 +1191,7 @@ class _e {
|
|
|
1151
1191
|
};
|
|
1152
1192
|
}
|
|
1153
1193
|
}
|
|
1154
|
-
const
|
|
1194
|
+
const Ee = {}, xe = "en", wt = (
|
|
1155
1195
|
/** @type {const} */
|
|
1156
1196
|
["en", "nl", "de"]
|
|
1157
1197
|
), X = [
|
|
@@ -1163,25 +1203,25 @@ globalThis.__paraglide.ssr = /** @type {any} */
|
|
|
1163
1203
|
globalThis.__paraglide.ssr ?? {};
|
|
1164
1204
|
let rt = !1, p = () => {
|
|
1165
1205
|
let n = X;
|
|
1166
|
-
!Y && typeof window < "u" && window.location?.href && (n =
|
|
1167
|
-
const t =
|
|
1206
|
+
!Y && typeof window < "u" && window.location?.href && (n = _t(window.location.href));
|
|
1207
|
+
const t = Te(n);
|
|
1168
1208
|
if (t)
|
|
1169
1209
|
return rt || (rt = !0, St(t, { reload: !1 })), t;
|
|
1170
1210
|
throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
|
|
1171
1211
|
};
|
|
1172
|
-
function
|
|
1212
|
+
function Te(n, t) {
|
|
1173
1213
|
let e;
|
|
1174
1214
|
for (const i of n) {
|
|
1175
1215
|
if (i === "baseLocale")
|
|
1176
|
-
e =
|
|
1177
|
-
else if (
|
|
1216
|
+
e = xe;
|
|
1217
|
+
else if (kt(i) && z.has(i)) {
|
|
1178
1218
|
const s = z.get(i);
|
|
1179
1219
|
if (s) {
|
|
1180
1220
|
const r = s.getLocale();
|
|
1181
1221
|
if (r instanceof Promise)
|
|
1182
1222
|
continue;
|
|
1183
1223
|
if (r !== void 0)
|
|
1184
|
-
return
|
|
1224
|
+
return Oe(r);
|
|
1185
1225
|
}
|
|
1186
1226
|
}
|
|
1187
1227
|
const o = J(e);
|
|
@@ -1189,7 +1229,7 @@ function xe(n, t) {
|
|
|
1189
1229
|
return o;
|
|
1190
1230
|
}
|
|
1191
1231
|
}
|
|
1192
|
-
const
|
|
1232
|
+
const Re = (n) => {
|
|
1193
1233
|
window.location.reload();
|
|
1194
1234
|
};
|
|
1195
1235
|
let St = (n, t) => {
|
|
@@ -1204,9 +1244,9 @@ let St = (n, t) => {
|
|
|
1204
1244
|
}
|
|
1205
1245
|
const o = [];
|
|
1206
1246
|
let s = X;
|
|
1207
|
-
!Y && typeof window < "u" && window.location?.href && (s =
|
|
1247
|
+
!Y && typeof window < "u" && window.location?.href && (s = _t(window.location.href));
|
|
1208
1248
|
for (const a of s)
|
|
1209
|
-
if (a !== "baseLocale" &&
|
|
1249
|
+
if (a !== "baseLocale" && kt(a) && z.has(a)) {
|
|
1210
1250
|
const d = z.get(a);
|
|
1211
1251
|
if (d) {
|
|
1212
1252
|
let u = d.setLocale(n);
|
|
@@ -1218,14 +1258,14 @@ let St = (n, t) => {
|
|
|
1218
1258
|
}
|
|
1219
1259
|
}
|
|
1220
1260
|
const r = () => {
|
|
1221
|
-
!Y && e.reload && window.location && n !== i &&
|
|
1261
|
+
!Y && e.reload && window.location && n !== i && Re();
|
|
1222
1262
|
};
|
|
1223
1263
|
if (o.length)
|
|
1224
1264
|
return Promise.all(o).then(() => {
|
|
1225
1265
|
r();
|
|
1226
1266
|
});
|
|
1227
1267
|
r();
|
|
1228
|
-
},
|
|
1268
|
+
}, Ie = () => typeof window < "u" ? window.location.origin : "http://fallback.com";
|
|
1229
1269
|
function J(n) {
|
|
1230
1270
|
if (typeof n != "string")
|
|
1231
1271
|
return;
|
|
@@ -1234,553 +1274,558 @@ function J(n) {
|
|
|
1234
1274
|
if (e.toLowerCase() === t)
|
|
1235
1275
|
return e;
|
|
1236
1276
|
}
|
|
1237
|
-
function
|
|
1277
|
+
function Oe(n) {
|
|
1238
1278
|
const t = J(n);
|
|
1239
1279
|
if (t)
|
|
1240
1280
|
return t;
|
|
1241
1281
|
throw new Error(`Invalid locale: ${n}. Expected one of: ${wt.join(", ")}`);
|
|
1242
1282
|
}
|
|
1243
|
-
function
|
|
1244
|
-
return
|
|
1283
|
+
function Le(n, t) {
|
|
1284
|
+
return n.exec(t.href);
|
|
1285
|
+
}
|
|
1286
|
+
function Me(n) {
|
|
1287
|
+
return Ne(n);
|
|
1245
1288
|
}
|
|
1246
|
-
function
|
|
1247
|
-
const t = typeof n == "string" ? new URL(n,
|
|
1289
|
+
function Ne(n) {
|
|
1290
|
+
const t = typeof n == "string" ? new URL(n, Ie()) : new URL(n), e = t.pathname.split("/").filter(Boolean);
|
|
1248
1291
|
return e.length > 0 && J(e[0]) && (t.pathname = "/" + e.slice(1).join("/")), t;
|
|
1249
1292
|
}
|
|
1250
1293
|
let at, lt;
|
|
1251
|
-
function
|
|
1294
|
+
function ze(n) {
|
|
1252
1295
|
if (st.length === 0)
|
|
1253
1296
|
return;
|
|
1254
1297
|
const t = typeof n == "string" ? n : n.href;
|
|
1255
1298
|
if (at === t)
|
|
1256
1299
|
return lt;
|
|
1257
|
-
const e = new URL(t, "http://example.com"), i =
|
|
1300
|
+
const e = new URL(t, "http://example.com"), i = Me(e), o = i.href === e.href ? [e] : [e, i];
|
|
1258
1301
|
let s;
|
|
1259
1302
|
for (const r of o) {
|
|
1260
|
-
for (const a of st)
|
|
1261
|
-
|
|
1303
|
+
for (const a of st) {
|
|
1304
|
+
const d = new Ee(a.match, r.href);
|
|
1305
|
+
if (Le(d, r)) {
|
|
1262
1306
|
s = a;
|
|
1263
1307
|
break;
|
|
1264
1308
|
}
|
|
1309
|
+
}
|
|
1265
1310
|
if (s)
|
|
1266
1311
|
break;
|
|
1267
1312
|
}
|
|
1268
1313
|
return at = t, lt = s, s;
|
|
1269
1314
|
}
|
|
1270
|
-
function
|
|
1271
|
-
const t =
|
|
1315
|
+
function _t(n) {
|
|
1316
|
+
const t = ze(n);
|
|
1272
1317
|
return t && t.exclude !== !0 && Array.isArray(t.strategy) ? t.strategy : X;
|
|
1273
1318
|
}
|
|
1274
1319
|
const z = /* @__PURE__ */ new Map();
|
|
1275
|
-
function
|
|
1320
|
+
function kt(n) {
|
|
1276
1321
|
return typeof n == "string" && /^custom-[A-Za-z0-9_-]+$/.test(n);
|
|
1277
1322
|
}
|
|
1278
|
-
const
|
|
1279
|
-
/** @type {(inputs:
|
|
1323
|
+
const Pe = (
|
|
1324
|
+
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1280
1325
|
() => (
|
|
1281
1326
|
/** @type {LocalizedString} */
|
|
1282
|
-
"
|
|
1327
|
+
"Working…"
|
|
1283
1328
|
)
|
|
1284
|
-
),
|
|
1285
|
-
/** @type {(inputs:
|
|
1329
|
+
), Fe = (
|
|
1330
|
+
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1286
1331
|
() => (
|
|
1287
1332
|
/** @type {LocalizedString} */
|
|
1288
|
-
"
|
|
1333
|
+
"Bezig…"
|
|
1289
1334
|
)
|
|
1290
|
-
),
|
|
1291
|
-
/** @type {(inputs:
|
|
1335
|
+
), $e = (
|
|
1336
|
+
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1292
1337
|
() => (
|
|
1293
1338
|
/** @type {LocalizedString} */
|
|
1294
|
-
"
|
|
1339
|
+
"Läuft…"
|
|
1295
1340
|
)
|
|
1296
|
-
),
|
|
1297
|
-
/** @type {((inputs?:
|
|
1341
|
+
), De = (
|
|
1342
|
+
/** @type {((inputs?: Commerce_Submit_BusyInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_BusyInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1298
1343
|
((n = {}, t = {}) => {
|
|
1299
1344
|
const e = t.locale ?? p();
|
|
1300
|
-
return e === "nl" ?
|
|
1345
|
+
return e === "nl" ? Fe() : e === "de" ? $e() : Pe();
|
|
1301
1346
|
})
|
|
1302
|
-
), De = (
|
|
1303
|
-
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1304
|
-
() => (
|
|
1305
|
-
/** @type {LocalizedString} */
|
|
1306
|
-
"Scan to view in AR"
|
|
1307
|
-
)
|
|
1308
|
-
), $e = (
|
|
1309
|
-
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1310
|
-
() => (
|
|
1311
|
-
/** @type {LocalizedString} */
|
|
1312
|
-
"Scan om in AR te bekijken"
|
|
1313
|
-
)
|
|
1314
1347
|
), Be = (
|
|
1315
|
-
/** @type {(inputs:
|
|
1348
|
+
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1316
1349
|
() => (
|
|
1317
1350
|
/** @type {LocalizedString} */
|
|
1318
|
-
"
|
|
1351
|
+
"Failed"
|
|
1319
1352
|
)
|
|
1320
1353
|
), Ue = (
|
|
1321
|
-
/** @type {(
|
|
1322
|
-
((n = {}, t = {}) => {
|
|
1323
|
-
const e = t.locale ?? p();
|
|
1324
|
-
return e === "nl" ? $e() : e === "de" ? Be() : De();
|
|
1325
|
-
})
|
|
1326
|
-
), Ve = (
|
|
1327
|
-
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1354
|
+
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1328
1355
|
() => (
|
|
1329
1356
|
/** @type {LocalizedString} */
|
|
1330
|
-
"
|
|
1357
|
+
"Mislukt"
|
|
1331
1358
|
)
|
|
1332
|
-
),
|
|
1333
|
-
/** @type {(inputs:
|
|
1359
|
+
), Ve = (
|
|
1360
|
+
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1334
1361
|
() => (
|
|
1335
1362
|
/** @type {LocalizedString} */
|
|
1336
|
-
"
|
|
1363
|
+
"Fehlgeschlagen"
|
|
1337
1364
|
)
|
|
1338
1365
|
), He = (
|
|
1339
|
-
/** @type {(inputs
|
|
1340
|
-
() => (
|
|
1341
|
-
/** @type {LocalizedString} */
|
|
1342
|
-
"Verwende die Kamera deines Smartphones, um diesen QR-Code zu scannen"
|
|
1343
|
-
)
|
|
1344
|
-
), qe = (
|
|
1345
|
-
/** @type {((inputs?: Controls_Qr_Modaldescription1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaldescription1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1346
|
-
((n = {}, t = {}) => {
|
|
1347
|
-
const e = t.locale ?? p();
|
|
1348
|
-
return e === "nl" ? je() : e === "de" ? He() : Ve();
|
|
1349
|
-
})
|
|
1350
|
-
), Ge = (
|
|
1351
|
-
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1352
|
-
() => (
|
|
1353
|
-
/** @type {LocalizedString} */
|
|
1354
|
-
"Your phone will open the 3D model in AR mode."
|
|
1355
|
-
)
|
|
1356
|
-
), Ze = (
|
|
1357
|
-
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1358
|
-
() => (
|
|
1359
|
-
/** @type {LocalizedString} */
|
|
1360
|
-
"Je telefoon opent het 3D-model in AR-modus."
|
|
1361
|
-
)
|
|
1362
|
-
), We = (
|
|
1363
|
-
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1364
|
-
() => (
|
|
1365
|
-
/** @type {LocalizedString} */
|
|
1366
|
-
"Dein Telefon öffnet das 3D-Modell im AR-Modus."
|
|
1367
|
-
)
|
|
1368
|
-
), Qe = (
|
|
1369
|
-
/** @type {((inputs?: Controls_Qr_Modalinstructions1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modalinstructions1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1366
|
+
/** @type {((inputs?: Commerce_Submit_FailedInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_FailedInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1370
1367
|
((n = {}, t = {}) => {
|
|
1371
1368
|
const e = t.locale ?? p();
|
|
1372
|
-
return e === "nl" ?
|
|
1369
|
+
return e === "nl" ? Ue() : e === "de" ? Ve() : Be();
|
|
1373
1370
|
})
|
|
1374
|
-
),
|
|
1375
|
-
/** @type {(inputs:
|
|
1371
|
+
), je = (
|
|
1372
|
+
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1376
1373
|
() => (
|
|
1377
1374
|
/** @type {LocalizedString} */
|
|
1378
|
-
"
|
|
1375
|
+
"Done"
|
|
1379
1376
|
)
|
|
1380
|
-
),
|
|
1381
|
-
/** @type {(inputs:
|
|
1377
|
+
), qe = (
|
|
1378
|
+
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1382
1379
|
() => (
|
|
1383
1380
|
/** @type {LocalizedString} */
|
|
1384
|
-
"
|
|
1381
|
+
"Gelukt"
|
|
1385
1382
|
)
|
|
1386
|
-
),
|
|
1387
|
-
/** @type {(inputs:
|
|
1383
|
+
), Ge = (
|
|
1384
|
+
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1388
1385
|
() => (
|
|
1389
1386
|
/** @type {LocalizedString} */
|
|
1390
|
-
"
|
|
1387
|
+
"Fertig"
|
|
1391
1388
|
)
|
|
1392
|
-
),
|
|
1393
|
-
/** @type {((inputs?:
|
|
1389
|
+
), Ze = (
|
|
1390
|
+
/** @type {((inputs?: Commerce_Submit_SuccessInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_SuccessInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1394
1391
|
((n = {}, t = {}) => {
|
|
1395
1392
|
const e = t.locale ?? p();
|
|
1396
|
-
return e === "nl" ?
|
|
1393
|
+
return e === "nl" ? qe() : e === "de" ? Ge() : je();
|
|
1397
1394
|
})
|
|
1398
|
-
),
|
|
1395
|
+
), We = (
|
|
1399
1396
|
/** @type {(inputs: Controls_Annotations_Buttonlabel1Inputs) => LocalizedString} */
|
|
1400
1397
|
() => (
|
|
1401
1398
|
/** @type {LocalizedString} */
|
|
1402
1399
|
"Annotations"
|
|
1403
1400
|
)
|
|
1404
|
-
),
|
|
1401
|
+
), Qe = (
|
|
1405
1402
|
/** @type {(inputs: Controls_Annotations_Buttonlabel1Inputs) => LocalizedString} */
|
|
1406
1403
|
() => (
|
|
1407
1404
|
/** @type {LocalizedString} */
|
|
1408
1405
|
"Annotaties"
|
|
1409
1406
|
)
|
|
1410
|
-
),
|
|
1407
|
+
), Ye = (
|
|
1411
1408
|
/** @type {(inputs: Controls_Annotations_Buttonlabel1Inputs) => LocalizedString} */
|
|
1412
1409
|
() => (
|
|
1413
1410
|
/** @type {LocalizedString} */
|
|
1414
1411
|
"Anmerkungen"
|
|
1415
1412
|
)
|
|
1416
|
-
),
|
|
1413
|
+
), Ke = (
|
|
1417
1414
|
/** @type {((inputs?: Controls_Annotations_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Annotations_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1418
1415
|
((n = {}, t = {}) => {
|
|
1419
1416
|
const e = t.locale ?? p();
|
|
1420
|
-
return e === "nl" ?
|
|
1417
|
+
return e === "nl" ? Qe() : e === "de" ? Ye() : We();
|
|
1421
1418
|
})
|
|
1422
|
-
),
|
|
1423
|
-
/** @type {(inputs:
|
|
1419
|
+
), Xe = (
|
|
1420
|
+
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1424
1421
|
() => (
|
|
1425
1422
|
/** @type {LocalizedString} */
|
|
1426
|
-
"
|
|
1423
|
+
"Activate AR"
|
|
1427
1424
|
)
|
|
1428
|
-
),
|
|
1429
|
-
/** @type {(inputs:
|
|
1425
|
+
), Je = (
|
|
1426
|
+
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1430
1427
|
() => (
|
|
1431
1428
|
/** @type {LocalizedString} */
|
|
1432
|
-
"
|
|
1429
|
+
"AR activeren"
|
|
1433
1430
|
)
|
|
1434
|
-
),
|
|
1435
|
-
/** @type {(inputs:
|
|
1431
|
+
), tn = (
|
|
1432
|
+
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1436
1433
|
() => (
|
|
1437
1434
|
/** @type {LocalizedString} */
|
|
1438
|
-
"
|
|
1435
|
+
"AR aktivieren"
|
|
1439
1436
|
)
|
|
1440
|
-
),
|
|
1441
|
-
/** @type {((inputs?:
|
|
1437
|
+
), en = (
|
|
1438
|
+
/** @type {((inputs?: Controls_Ar_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Ar_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1442
1439
|
((n = {}, t = {}) => {
|
|
1443
1440
|
const e = t.locale ?? p();
|
|
1444
|
-
return e === "nl" ?
|
|
1441
|
+
return e === "nl" ? Je() : e === "de" ? tn() : Xe();
|
|
1445
1442
|
})
|
|
1446
|
-
),
|
|
1447
|
-
/** @type {(inputs:
|
|
1443
|
+
), nn = (
|
|
1444
|
+
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1448
1445
|
() => (
|
|
1449
1446
|
/** @type {LocalizedString} */
|
|
1450
|
-
"
|
|
1447
|
+
"Reset camera"
|
|
1451
1448
|
)
|
|
1452
|
-
),
|
|
1453
|
-
/** @type {(inputs:
|
|
1449
|
+
), on = (
|
|
1450
|
+
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1454
1451
|
() => (
|
|
1455
1452
|
/** @type {LocalizedString} */
|
|
1456
|
-
"
|
|
1453
|
+
"Camera resetten"
|
|
1457
1454
|
)
|
|
1458
|
-
),
|
|
1459
|
-
/** @type {(inputs:
|
|
1455
|
+
), sn = (
|
|
1456
|
+
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1460
1457
|
() => (
|
|
1461
1458
|
/** @type {LocalizedString} */
|
|
1462
|
-
"
|
|
1459
|
+
"Kamera zurücksetzen"
|
|
1463
1460
|
)
|
|
1464
|
-
),
|
|
1465
|
-
/** @type {((inputs?:
|
|
1461
|
+
), rn = (
|
|
1462
|
+
/** @type {((inputs?: Controls_Camera_ResetInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_ResetInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1466
1463
|
((n = {}, t = {}) => {
|
|
1467
1464
|
const e = t.locale ?? p();
|
|
1468
|
-
return e === "nl" ?
|
|
1465
|
+
return e === "nl" ? on() : e === "de" ? sn() : nn();
|
|
1469
1466
|
})
|
|
1470
|
-
),
|
|
1471
|
-
/** @type {(inputs:
|
|
1467
|
+
), an = (
|
|
1468
|
+
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1472
1469
|
() => (
|
|
1473
1470
|
/** @type {LocalizedString} */
|
|
1474
|
-
"
|
|
1471
|
+
"Rotate left"
|
|
1475
1472
|
)
|
|
1476
|
-
),
|
|
1477
|
-
/** @type {(inputs:
|
|
1473
|
+
), ln = (
|
|
1474
|
+
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1478
1475
|
() => (
|
|
1479
1476
|
/** @type {LocalizedString} */
|
|
1480
|
-
"
|
|
1477
|
+
"Naar links draaien"
|
|
1481
1478
|
)
|
|
1482
|
-
),
|
|
1483
|
-
/** @type {(inputs:
|
|
1479
|
+
), cn = (
|
|
1480
|
+
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1484
1481
|
() => (
|
|
1485
1482
|
/** @type {LocalizedString} */
|
|
1486
|
-
"
|
|
1483
|
+
"Nach links drehen"
|
|
1487
1484
|
)
|
|
1488
|
-
),
|
|
1489
|
-
/** @type {((inputs?:
|
|
1485
|
+
), dn = (
|
|
1486
|
+
/** @type {((inputs?: Controls_Camera_Rotateleft1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateleft1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1490
1487
|
((n = {}, t = {}) => {
|
|
1491
1488
|
const e = t.locale ?? p();
|
|
1492
|
-
return e === "nl" ?
|
|
1489
|
+
return e === "nl" ? ln() : e === "de" ? cn() : an();
|
|
1493
1490
|
})
|
|
1494
|
-
),
|
|
1495
|
-
/** @type {(inputs:
|
|
1491
|
+
), un = (
|
|
1492
|
+
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1496
1493
|
() => (
|
|
1497
1494
|
/** @type {LocalizedString} */
|
|
1498
|
-
"
|
|
1495
|
+
"Rotate right"
|
|
1499
1496
|
)
|
|
1500
|
-
),
|
|
1501
|
-
/** @type {(inputs:
|
|
1497
|
+
), hn = (
|
|
1498
|
+
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1502
1499
|
() => (
|
|
1503
1500
|
/** @type {LocalizedString} */
|
|
1504
|
-
"
|
|
1501
|
+
"Naar rechts draaien"
|
|
1505
1502
|
)
|
|
1506
|
-
),
|
|
1507
|
-
/** @type {(inputs:
|
|
1503
|
+
), pn = (
|
|
1504
|
+
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1508
1505
|
() => (
|
|
1509
1506
|
/** @type {LocalizedString} */
|
|
1510
|
-
"
|
|
1507
|
+
"Nach rechts drehen"
|
|
1511
1508
|
)
|
|
1512
|
-
),
|
|
1513
|
-
/** @type {((inputs?:
|
|
1509
|
+
), mn = (
|
|
1510
|
+
/** @type {((inputs?: Controls_Camera_Rotateright1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateright1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1514
1511
|
((n = {}, t = {}) => {
|
|
1515
1512
|
const e = t.locale ?? p();
|
|
1516
|
-
return e === "nl" ?
|
|
1513
|
+
return e === "nl" ? hn() : e === "de" ? pn() : un();
|
|
1517
1514
|
})
|
|
1518
|
-
),
|
|
1519
|
-
/** @type {(inputs:
|
|
1515
|
+
), fn = (
|
|
1516
|
+
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1520
1517
|
() => (
|
|
1521
1518
|
/** @type {LocalizedString} */
|
|
1522
|
-
"
|
|
1519
|
+
"Tilt down"
|
|
1523
1520
|
)
|
|
1524
|
-
),
|
|
1525
|
-
/** @type {(inputs:
|
|
1521
|
+
), gn = (
|
|
1522
|
+
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1526
1523
|
() => (
|
|
1527
1524
|
/** @type {LocalizedString} */
|
|
1528
|
-
"
|
|
1525
|
+
"Omlaag kantelen"
|
|
1529
1526
|
)
|
|
1530
|
-
),
|
|
1531
|
-
/** @type {(inputs:
|
|
1527
|
+
), bn = (
|
|
1528
|
+
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1532
1529
|
() => (
|
|
1533
1530
|
/** @type {LocalizedString} */
|
|
1534
|
-
"
|
|
1531
|
+
"Nach unten kippen"
|
|
1535
1532
|
)
|
|
1536
|
-
),
|
|
1537
|
-
/** @type {((inputs?:
|
|
1533
|
+
), vn = (
|
|
1534
|
+
/** @type {((inputs?: Controls_Camera_Tiltdown1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltdown1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1538
1535
|
((n = {}, t = {}) => {
|
|
1539
1536
|
const e = t.locale ?? p();
|
|
1540
|
-
return e === "nl" ?
|
|
1537
|
+
return e === "nl" ? gn() : e === "de" ? bn() : fn();
|
|
1541
1538
|
})
|
|
1542
|
-
),
|
|
1543
|
-
/** @type {(inputs:
|
|
1539
|
+
), yn = (
|
|
1540
|
+
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1544
1541
|
() => (
|
|
1545
1542
|
/** @type {LocalizedString} */
|
|
1546
|
-
"
|
|
1543
|
+
"Tilt up"
|
|
1547
1544
|
)
|
|
1548
|
-
),
|
|
1549
|
-
/** @type {(inputs:
|
|
1545
|
+
), wn = (
|
|
1546
|
+
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1550
1547
|
() => (
|
|
1551
1548
|
/** @type {LocalizedString} */
|
|
1552
|
-
"
|
|
1549
|
+
"Omhoog kantelen"
|
|
1553
1550
|
)
|
|
1554
|
-
),
|
|
1555
|
-
/** @type {(inputs:
|
|
1551
|
+
), Sn = (
|
|
1552
|
+
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1556
1553
|
() => (
|
|
1557
1554
|
/** @type {LocalizedString} */
|
|
1558
|
-
"
|
|
1555
|
+
"Nach oben kippen"
|
|
1559
1556
|
)
|
|
1560
|
-
),
|
|
1561
|
-
/** @type {((inputs?:
|
|
1557
|
+
), _n = (
|
|
1558
|
+
/** @type {((inputs?: Controls_Camera_Tiltup1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltup1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1562
1559
|
((n = {}, t = {}) => {
|
|
1563
1560
|
const e = t.locale ?? p();
|
|
1564
|
-
return e === "nl" ?
|
|
1561
|
+
return e === "nl" ? wn() : e === "de" ? Sn() : yn();
|
|
1565
1562
|
})
|
|
1566
|
-
),
|
|
1563
|
+
), kn = (
|
|
1567
1564
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1568
1565
|
() => (
|
|
1569
1566
|
/** @type {LocalizedString} */
|
|
1570
1567
|
"Zoom in"
|
|
1571
1568
|
)
|
|
1572
|
-
),
|
|
1569
|
+
), Cn = (
|
|
1573
1570
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1574
1571
|
() => (
|
|
1575
1572
|
/** @type {LocalizedString} */
|
|
1576
1573
|
"Inzoomen"
|
|
1577
1574
|
)
|
|
1578
|
-
),
|
|
1575
|
+
), An = (
|
|
1579
1576
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1580
1577
|
() => (
|
|
1581
1578
|
/** @type {LocalizedString} */
|
|
1582
1579
|
"Hineinzoomen"
|
|
1583
1580
|
)
|
|
1584
|
-
),
|
|
1581
|
+
), En = (
|
|
1585
1582
|
/** @type {((inputs?: Controls_Camera_Zoomin1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomin1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1586
1583
|
((n = {}, t = {}) => {
|
|
1587
1584
|
const e = t.locale ?? p();
|
|
1588
|
-
return e === "nl" ?
|
|
1585
|
+
return e === "nl" ? Cn() : e === "de" ? An() : kn();
|
|
1589
1586
|
})
|
|
1590
|
-
),
|
|
1587
|
+
), xn = (
|
|
1591
1588
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1592
1589
|
() => (
|
|
1593
1590
|
/** @type {LocalizedString} */
|
|
1594
1591
|
"Zoom out"
|
|
1595
1592
|
)
|
|
1596
|
-
),
|
|
1593
|
+
), Tn = (
|
|
1597
1594
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1598
1595
|
() => (
|
|
1599
1596
|
/** @type {LocalizedString} */
|
|
1600
1597
|
"Uitzoomen"
|
|
1601
1598
|
)
|
|
1602
|
-
),
|
|
1599
|
+
), Rn = (
|
|
1603
1600
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1604
1601
|
() => (
|
|
1605
1602
|
/** @type {LocalizedString} */
|
|
1606
1603
|
"Herauszoomen"
|
|
1607
1604
|
)
|
|
1608
|
-
),
|
|
1605
|
+
), In = (
|
|
1609
1606
|
/** @type {((inputs?: Controls_Camera_Zoomout1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomout1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1610
1607
|
((n = {}, t = {}) => {
|
|
1611
1608
|
const e = t.locale ?? p();
|
|
1612
|
-
return e === "nl" ?
|
|
1609
|
+
return e === "nl" ? Tn() : e === "de" ? Rn() : xn();
|
|
1613
1610
|
})
|
|
1614
|
-
),
|
|
1615
|
-
/** @type {(inputs:
|
|
1611
|
+
), On = (
|
|
1612
|
+
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1616
1613
|
() => (
|
|
1617
1614
|
/** @type {LocalizedString} */
|
|
1618
|
-
"
|
|
1615
|
+
"Close"
|
|
1619
1616
|
)
|
|
1620
|
-
),
|
|
1621
|
-
/** @type {(inputs:
|
|
1617
|
+
), Ln = (
|
|
1618
|
+
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1622
1619
|
() => (
|
|
1623
1620
|
/** @type {LocalizedString} */
|
|
1624
|
-
"
|
|
1621
|
+
"Sluiten"
|
|
1625
1622
|
)
|
|
1626
|
-
),
|
|
1627
|
-
/** @type {(inputs:
|
|
1623
|
+
), Mn = (
|
|
1624
|
+
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1628
1625
|
() => (
|
|
1629
1626
|
/** @type {LocalizedString} */
|
|
1630
|
-
"
|
|
1627
|
+
"Schließen"
|
|
1631
1628
|
)
|
|
1632
|
-
),
|
|
1633
|
-
/** @type {((inputs?:
|
|
1629
|
+
), Nn = (
|
|
1630
|
+
/** @type {((inputs?: Controls_Configurator_CloseInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_CloseInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1631
|
+
((n = {}, t = {}) => {
|
|
1632
|
+
const e = t.locale ?? p();
|
|
1633
|
+
return e === "nl" ? Ln() : e === "de" ? Mn() : On();
|
|
1634
|
+
})
|
|
1635
|
+
), zn = (
|
|
1636
|
+
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1637
|
+
() => (
|
|
1638
|
+
/** @type {LocalizedString} */
|
|
1639
|
+
"Configure"
|
|
1640
|
+
)
|
|
1641
|
+
), Pn = (
|
|
1642
|
+
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1643
|
+
() => (
|
|
1644
|
+
/** @type {LocalizedString} */
|
|
1645
|
+
"Configureren"
|
|
1646
|
+
)
|
|
1647
|
+
), Fn = (
|
|
1648
|
+
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1649
|
+
() => (
|
|
1650
|
+
/** @type {LocalizedString} */
|
|
1651
|
+
"Konfigurieren"
|
|
1652
|
+
)
|
|
1653
|
+
), $n = (
|
|
1654
|
+
/** @type {((inputs?: Controls_Configurator_OpenInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_OpenInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1634
1655
|
((n = {}, t = {}) => {
|
|
1635
1656
|
const e = t.locale ?? p();
|
|
1636
|
-
return e === "nl" ?
|
|
1657
|
+
return e === "nl" ? Pn() : e === "de" ? Fn() : zn();
|
|
1637
1658
|
})
|
|
1659
|
+
), Dn = (
|
|
1660
|
+
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1661
|
+
() => (
|
|
1662
|
+
/** @type {LocalizedString} */
|
|
1663
|
+
"Fullscreen"
|
|
1664
|
+
)
|
|
1665
|
+
), Bn = (
|
|
1666
|
+
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1667
|
+
() => (
|
|
1668
|
+
/** @type {LocalizedString} */
|
|
1669
|
+
"Volledig scherm"
|
|
1670
|
+
)
|
|
1638
1671
|
), Un = (
|
|
1639
|
-
/** @type {(inputs:
|
|
1672
|
+
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1640
1673
|
() => (
|
|
1641
1674
|
/** @type {LocalizedString} */
|
|
1642
|
-
"
|
|
1675
|
+
"Vollbild"
|
|
1643
1676
|
)
|
|
1644
1677
|
), Vn = (
|
|
1645
|
-
/** @type {(inputs
|
|
1678
|
+
/** @type {((inputs?: Controls_Fullscreen_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Fullscreen_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1679
|
+
((n = {}, t = {}) => {
|
|
1680
|
+
const e = t.locale ?? p();
|
|
1681
|
+
return e === "nl" ? Bn() : e === "de" ? Un() : Dn();
|
|
1682
|
+
})
|
|
1683
|
+
), Hn = (
|
|
1684
|
+
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1646
1685
|
() => (
|
|
1647
1686
|
/** @type {LocalizedString} */
|
|
1648
|
-
"
|
|
1687
|
+
"Close"
|
|
1649
1688
|
)
|
|
1650
1689
|
), jn = (
|
|
1651
|
-
/** @type {(inputs:
|
|
1690
|
+
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1652
1691
|
() => (
|
|
1653
1692
|
/** @type {LocalizedString} */
|
|
1654
|
-
"
|
|
1693
|
+
"Sluiten"
|
|
1655
1694
|
)
|
|
1656
|
-
),
|
|
1657
|
-
/** @type {(
|
|
1695
|
+
), qn = (
|
|
1696
|
+
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1697
|
+
() => (
|
|
1698
|
+
/** @type {LocalizedString} */
|
|
1699
|
+
"Schließen"
|
|
1700
|
+
)
|
|
1701
|
+
), Gn = (
|
|
1702
|
+
/** @type {((inputs?: Controls_Qr_Closebutton1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Closebutton1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1658
1703
|
((n = {}, t = {}) => {
|
|
1659
1704
|
const e = t.locale ?? p();
|
|
1660
|
-
return e === "nl" ?
|
|
1705
|
+
return e === "nl" ? jn() : e === "de" ? qn() : Hn();
|
|
1661
1706
|
})
|
|
1662
|
-
),
|
|
1663
|
-
/** @type {(inputs:
|
|
1707
|
+
), Zn = (
|
|
1708
|
+
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1664
1709
|
() => (
|
|
1665
1710
|
/** @type {LocalizedString} */
|
|
1666
|
-
"
|
|
1711
|
+
"Use your smartphone camera to scan this QR code"
|
|
1667
1712
|
)
|
|
1668
|
-
),
|
|
1669
|
-
/** @type {(inputs:
|
|
1713
|
+
), Wn = (
|
|
1714
|
+
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1670
1715
|
() => (
|
|
1671
1716
|
/** @type {LocalizedString} */
|
|
1672
|
-
"
|
|
1717
|
+
"Gebruik de camera van je smartphone om deze QR-code te scannen"
|
|
1673
1718
|
)
|
|
1674
|
-
),
|
|
1675
|
-
/** @type {(inputs:
|
|
1719
|
+
), Qn = (
|
|
1720
|
+
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1676
1721
|
() => (
|
|
1677
1722
|
/** @type {LocalizedString} */
|
|
1678
|
-
"
|
|
1723
|
+
"Verwende die Kamera deines Smartphones, um diesen QR-Code zu scannen"
|
|
1679
1724
|
)
|
|
1680
|
-
),
|
|
1681
|
-
/** @type {((inputs?:
|
|
1725
|
+
), Yn = (
|
|
1726
|
+
/** @type {((inputs?: Controls_Qr_Modaldescription1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaldescription1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1682
1727
|
((n = {}, t = {}) => {
|
|
1683
1728
|
const e = t.locale ?? p();
|
|
1684
|
-
return e === "nl" ?
|
|
1729
|
+
return e === "nl" ? Wn() : e === "de" ? Qn() : Zn();
|
|
1685
1730
|
})
|
|
1686
|
-
),
|
|
1687
|
-
/** @type {(inputs:
|
|
1731
|
+
), Kn = (
|
|
1732
|
+
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1688
1733
|
() => (
|
|
1689
1734
|
/** @type {LocalizedString} */
|
|
1690
|
-
"
|
|
1735
|
+
"Your phone will open the 3D model in AR mode."
|
|
1691
1736
|
)
|
|
1692
|
-
),
|
|
1693
|
-
/** @type {(inputs:
|
|
1737
|
+
), Xn = (
|
|
1738
|
+
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1694
1739
|
() => (
|
|
1695
1740
|
/** @type {LocalizedString} */
|
|
1696
|
-
"
|
|
1741
|
+
"Je telefoon opent het 3D-model in AR-modus."
|
|
1697
1742
|
)
|
|
1698
|
-
),
|
|
1699
|
-
/** @type {(inputs:
|
|
1743
|
+
), Jn = (
|
|
1744
|
+
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1700
1745
|
() => (
|
|
1701
1746
|
/** @type {LocalizedString} */
|
|
1702
|
-
"
|
|
1747
|
+
"Dein Telefon öffnet das 3D-Modell im AR-Modus."
|
|
1703
1748
|
)
|
|
1704
|
-
),
|
|
1705
|
-
/** @type {((inputs?:
|
|
1749
|
+
), ti = (
|
|
1750
|
+
/** @type {((inputs?: Controls_Qr_Modalinstructions1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modalinstructions1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1706
1751
|
((n = {}, t = {}) => {
|
|
1707
1752
|
const e = t.locale ?? p();
|
|
1708
|
-
return e === "nl" ?
|
|
1753
|
+
return e === "nl" ? Xn() : e === "de" ? Jn() : Kn();
|
|
1709
1754
|
})
|
|
1710
|
-
),
|
|
1711
|
-
/** @type {(inputs:
|
|
1755
|
+
), ei = (
|
|
1756
|
+
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1712
1757
|
() => (
|
|
1713
1758
|
/** @type {LocalizedString} */
|
|
1714
|
-
"
|
|
1759
|
+
"Scan to view in AR"
|
|
1715
1760
|
)
|
|
1716
|
-
),
|
|
1717
|
-
/** @type {(inputs:
|
|
1761
|
+
), ni = (
|
|
1762
|
+
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1718
1763
|
() => (
|
|
1719
1764
|
/** @type {LocalizedString} */
|
|
1720
|
-
"
|
|
1765
|
+
"Scan om in AR te bekijken"
|
|
1721
1766
|
)
|
|
1722
|
-
),
|
|
1723
|
-
/** @type {(inputs:
|
|
1767
|
+
), ii = (
|
|
1768
|
+
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1724
1769
|
() => (
|
|
1725
1770
|
/** @type {LocalizedString} */
|
|
1726
|
-
"
|
|
1771
|
+
"Scannen für AR-Ansicht"
|
|
1727
1772
|
)
|
|
1728
|
-
),
|
|
1729
|
-
/** @type {((inputs?:
|
|
1773
|
+
), oi = (
|
|
1774
|
+
/** @type {((inputs?: Controls_Qr_Modaltitle1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaltitle1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1730
1775
|
((n = {}, t = {}) => {
|
|
1731
1776
|
const e = t.locale ?? p();
|
|
1732
|
-
return e === "nl" ?
|
|
1777
|
+
return e === "nl" ? ni() : e === "de" ? ii() : ei();
|
|
1733
1778
|
})
|
|
1734
|
-
),
|
|
1735
|
-
/** @type {(inputs:
|
|
1779
|
+
), si = (
|
|
1780
|
+
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1736
1781
|
() => (
|
|
1737
1782
|
/** @type {LocalizedString} */
|
|
1738
|
-
"
|
|
1783
|
+
"Screenshot"
|
|
1739
1784
|
)
|
|
1740
|
-
),
|
|
1741
|
-
/** @type {(inputs:
|
|
1785
|
+
), ri = (
|
|
1786
|
+
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1742
1787
|
() => (
|
|
1743
1788
|
/** @type {LocalizedString} */
|
|
1744
|
-
"
|
|
1789
|
+
"Screenshot"
|
|
1745
1790
|
)
|
|
1746
|
-
),
|
|
1747
|
-
/** @type {(inputs:
|
|
1791
|
+
), ai = (
|
|
1792
|
+
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1748
1793
|
() => (
|
|
1749
1794
|
/** @type {LocalizedString} */
|
|
1750
|
-
"
|
|
1795
|
+
"Screenshot"
|
|
1751
1796
|
)
|
|
1752
|
-
),
|
|
1753
|
-
/** @type {((inputs?:
|
|
1797
|
+
), li = (
|
|
1798
|
+
/** @type {((inputs?: Controls_Screenshot_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Screenshot_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1754
1799
|
((n = {}, t = {}) => {
|
|
1755
1800
|
const e = t.locale ?? p();
|
|
1756
|
-
return e === "nl" ?
|
|
1801
|
+
return e === "nl" ? ri() : e === "de" ? ai() : si();
|
|
1757
1802
|
})
|
|
1758
|
-
),
|
|
1759
|
-
/** @type {(inputs:
|
|
1803
|
+
), ci = (
|
|
1804
|
+
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1760
1805
|
() => (
|
|
1761
1806
|
/** @type {LocalizedString} */
|
|
1762
|
-
"
|
|
1807
|
+
"Downloading"
|
|
1763
1808
|
)
|
|
1764
|
-
),
|
|
1765
|
-
/** @type {(inputs:
|
|
1809
|
+
), di = (
|
|
1810
|
+
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1766
1811
|
() => (
|
|
1767
1812
|
/** @type {LocalizedString} */
|
|
1768
|
-
"
|
|
1813
|
+
"Downloaden"
|
|
1769
1814
|
)
|
|
1770
|
-
),
|
|
1771
|
-
/** @type {(inputs:
|
|
1815
|
+
), ui = (
|
|
1816
|
+
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1772
1817
|
() => (
|
|
1773
1818
|
/** @type {LocalizedString} */
|
|
1774
|
-
"
|
|
1819
|
+
"Herunterladen"
|
|
1775
1820
|
)
|
|
1776
|
-
),
|
|
1777
|
-
/** @type {((inputs?:
|
|
1821
|
+
), hi = (
|
|
1822
|
+
/** @type {((inputs?: Loading_Downloadingshort1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_Downloadingshort1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1778
1823
|
((n = {}, t = {}) => {
|
|
1779
1824
|
const e = t.locale ?? p();
|
|
1780
|
-
return e === "nl" ?
|
|
1825
|
+
return e === "nl" ? di() : e === "de" ? ui() : ci();
|
|
1781
1826
|
})
|
|
1782
1827
|
);
|
|
1783
|
-
const
|
|
1828
|
+
const pi = {
|
|
1784
1829
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1785
1830
|
width: 24,
|
|
1786
1831
|
height: 24,
|
|
@@ -1791,22 +1836,22 @@ const ui = {
|
|
|
1791
1836
|
"stroke-linecap": "round",
|
|
1792
1837
|
"stroke-linejoin": "round"
|
|
1793
1838
|
};
|
|
1794
|
-
const
|
|
1839
|
+
const Ct = ([n, t, e]) => {
|
|
1795
1840
|
const i = document.createElementNS("http://www.w3.org/2000/svg", n);
|
|
1796
1841
|
return Object.keys(t).forEach((o) => {
|
|
1797
1842
|
i.setAttribute(o, String(t[o]));
|
|
1798
1843
|
}), e?.length && e.forEach((o) => {
|
|
1799
|
-
const s =
|
|
1844
|
+
const s = Ct(o);
|
|
1800
1845
|
i.appendChild(s);
|
|
1801
1846
|
}), i;
|
|
1802
1847
|
}, At = (n, t = {}) => {
|
|
1803
1848
|
const i = {
|
|
1804
|
-
...
|
|
1849
|
+
...pi,
|
|
1805
1850
|
...t
|
|
1806
1851
|
};
|
|
1807
|
-
return
|
|
1852
|
+
return Ct(["svg", i, n]);
|
|
1808
1853
|
};
|
|
1809
|
-
const
|
|
1854
|
+
const mi = [
|
|
1810
1855
|
[
|
|
1811
1856
|
"path",
|
|
1812
1857
|
{
|
|
@@ -1816,7 +1861,7 @@ const hi = [
|
|
|
1816
1861
|
["path", { d: "m3.3 7 8.7 5 8.7-5" }],
|
|
1817
1862
|
["path", { d: "M12 22V12" }]
|
|
1818
1863
|
];
|
|
1819
|
-
const
|
|
1864
|
+
const fi = [
|
|
1820
1865
|
[
|
|
1821
1866
|
"path",
|
|
1822
1867
|
{
|
|
@@ -1826,10 +1871,10 @@ const pi = [
|
|
|
1826
1871
|
["circle", { cx: "12", cy: "13", r: "3" }]
|
|
1827
1872
|
];
|
|
1828
1873
|
const Et = [["path", { d: "m6 9 6 6 6-6" }]];
|
|
1829
|
-
const
|
|
1830
|
-
const
|
|
1831
|
-
const
|
|
1832
|
-
const
|
|
1874
|
+
const gi = [["path", { d: "m15 18-6-6 6-6" }]];
|
|
1875
|
+
const bi = [["path", { d: "m9 18 6-6-6-6" }]];
|
|
1876
|
+
const vi = [["path", { d: "m18 15-6-6-6 6" }]];
|
|
1877
|
+
const yi = [
|
|
1833
1878
|
["path", { d: "M12.75 7.09a3 3 0 0 1 2.16 2.16" }],
|
|
1834
1879
|
[
|
|
1835
1880
|
"path",
|
|
@@ -1841,7 +1886,7 @@ const bi = [
|
|
|
1841
1886
|
["path", { d: "M8.475 2.818A8 8 0 0 1 20 10c0 1.183-.31 2.377-.81 3.533" }],
|
|
1842
1887
|
["path", { d: "M9.13 9.13a3 3 0 0 0 3.74 3.74" }]
|
|
1843
1888
|
];
|
|
1844
|
-
const
|
|
1889
|
+
const wi = [
|
|
1845
1890
|
[
|
|
1846
1891
|
"path",
|
|
1847
1892
|
{
|
|
@@ -1850,23 +1895,23 @@ const vi = [
|
|
|
1850
1895
|
],
|
|
1851
1896
|
["circle", { cx: "12", cy: "10", r: "3" }]
|
|
1852
1897
|
];
|
|
1853
|
-
const
|
|
1898
|
+
const Si = [
|
|
1854
1899
|
["path", { d: "M15 3h6v6" }],
|
|
1855
1900
|
["path", { d: "m21 3-7 7" }],
|
|
1856
1901
|
["path", { d: "m3 21 7-7" }],
|
|
1857
1902
|
["path", { d: "M9 21H3v-6" }]
|
|
1858
1903
|
];
|
|
1859
|
-
const
|
|
1904
|
+
const _i = [
|
|
1860
1905
|
["path", { d: "m14 10 7-7" }],
|
|
1861
1906
|
["path", { d: "M20 10h-6V4" }],
|
|
1862
1907
|
["path", { d: "m3 21 7-7" }],
|
|
1863
1908
|
["path", { d: "M4 14h6v6" }]
|
|
1864
1909
|
];
|
|
1865
|
-
const
|
|
1910
|
+
const ki = [
|
|
1866
1911
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
|
|
1867
1912
|
["path", { d: "M3 3v5h5" }]
|
|
1868
1913
|
];
|
|
1869
|
-
const
|
|
1914
|
+
const Ci = [
|
|
1870
1915
|
["path", { d: "M10 5H3" }],
|
|
1871
1916
|
["path", { d: "M12 19H3" }],
|
|
1872
1917
|
["path", { d: "M14 3v4" }],
|
|
@@ -1877,17 +1922,17 @@ const ki = [
|
|
|
1877
1922
|
["path", { d: "M8 10v4" }],
|
|
1878
1923
|
["path", { d: "M8 12H3" }]
|
|
1879
1924
|
];
|
|
1880
|
-
const
|
|
1925
|
+
const Ai = [
|
|
1881
1926
|
["path", { d: "M18 6 6 18" }],
|
|
1882
1927
|
["path", { d: "m6 6 12 12" }]
|
|
1883
1928
|
];
|
|
1884
|
-
const
|
|
1929
|
+
const Ei = [
|
|
1885
1930
|
["circle", { cx: "11", cy: "11", r: "8" }],
|
|
1886
1931
|
["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
|
|
1887
1932
|
["line", { x1: "11", x2: "11", y1: "8", y2: "14" }],
|
|
1888
1933
|
["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
|
|
1889
1934
|
];
|
|
1890
|
-
const
|
|
1935
|
+
const xi = [
|
|
1891
1936
|
["circle", { cx: "11", cy: "11", r: "8" }],
|
|
1892
1937
|
["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
|
|
1893
1938
|
["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
|
|
@@ -1896,21 +1941,21 @@ function b(n, { size: t = 20, strokeWidth: e = 1.75 } = {}) {
|
|
|
1896
1941
|
return At(n, { width: t, height: t, "stroke-width": e });
|
|
1897
1942
|
}
|
|
1898
1943
|
const g = {
|
|
1899
|
-
ar: (n) => b(
|
|
1900
|
-
annotations: (n) => b(
|
|
1901
|
-
annotationsOff: (n) => b(
|
|
1902
|
-
fullscreen: (n) => b(
|
|
1903
|
-
exitFullscreen: (n) => b(
|
|
1904
|
-
screenshot: (n) => b(
|
|
1905
|
-
tiltUp: (n) => b(
|
|
1944
|
+
ar: (n) => b(mi, n),
|
|
1945
|
+
annotations: (n) => b(wi, n),
|
|
1946
|
+
annotationsOff: (n) => b(yi, n),
|
|
1947
|
+
fullscreen: (n) => b(Si, n),
|
|
1948
|
+
exitFullscreen: (n) => b(_i, n),
|
|
1949
|
+
screenshot: (n) => b(fi, n),
|
|
1950
|
+
tiltUp: (n) => b(vi, n),
|
|
1906
1951
|
tiltDown: (n) => b(Et, n),
|
|
1907
|
-
rotateLeft: (n) => b(
|
|
1908
|
-
rotateRight: (n) => b(
|
|
1909
|
-
zoomIn: (n) => b(
|
|
1910
|
-
zoomOut: (n) => b(
|
|
1911
|
-
reset: (n) => b(
|
|
1912
|
-
configurator: (n) => b(
|
|
1913
|
-
close: (n) => b(
|
|
1952
|
+
rotateLeft: (n) => b(gi, n),
|
|
1953
|
+
rotateRight: (n) => b(bi, n),
|
|
1954
|
+
zoomIn: (n) => b(Ei, n),
|
|
1955
|
+
zoomOut: (n) => b(xi, n),
|
|
1956
|
+
reset: (n) => b(ki, n),
|
|
1957
|
+
configurator: (n) => b(Ci, n),
|
|
1958
|
+
close: (n) => b(Ai, n)
|
|
1914
1959
|
};
|
|
1915
1960
|
class v {
|
|
1916
1961
|
element;
|
|
@@ -1956,7 +2001,7 @@ const m = {
|
|
|
1956
2001
|
// 32px
|
|
1957
2002
|
9: "2.25rem"
|
|
1958
2003
|
};
|
|
1959
|
-
class
|
|
2004
|
+
class Ti {
|
|
1960
2005
|
element;
|
|
1961
2006
|
constructor() {
|
|
1962
2007
|
this.element = document.createElement("div"), Object.assign(this.element.style, {
|
|
@@ -1969,9 +2014,9 @@ class Ei {
|
|
|
1969
2014
|
});
|
|
1970
2015
|
}
|
|
1971
2016
|
}
|
|
1972
|
-
class
|
|
2017
|
+
class Ri {
|
|
1973
2018
|
constructor(t = {}) {
|
|
1974
|
-
this.options = t, this.card = new
|
|
2019
|
+
this.options = t, this.card = new Ti(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
|
|
1975
2020
|
}
|
|
1976
2021
|
options;
|
|
1977
2022
|
card;
|
|
@@ -2000,7 +2045,7 @@ class xi {
|
|
|
2000
2045
|
}), t;
|
|
2001
2046
|
}
|
|
2002
2047
|
}
|
|
2003
|
-
class
|
|
2048
|
+
class Ii {
|
|
2004
2049
|
element;
|
|
2005
2050
|
selectCallback = null;
|
|
2006
2051
|
constructor(t, e, i) {
|
|
@@ -2033,7 +2078,7 @@ class Ti {
|
|
|
2033
2078
|
}
|
|
2034
2079
|
}
|
|
2035
2080
|
}
|
|
2036
|
-
class
|
|
2081
|
+
class Oi {
|
|
2037
2082
|
element;
|
|
2038
2083
|
select;
|
|
2039
2084
|
constructor(t, e, i, o, s) {
|
|
@@ -2063,7 +2108,7 @@ class Ri {
|
|
|
2063
2108
|
e.value !== "" && (e.disabled = t !== null && !t.includes(e.value));
|
|
2064
2109
|
}
|
|
2065
2110
|
}
|
|
2066
|
-
class
|
|
2111
|
+
class Li {
|
|
2067
2112
|
element;
|
|
2068
2113
|
input;
|
|
2069
2114
|
valueText;
|
|
@@ -2128,7 +2173,7 @@ class Ii {
|
|
|
2128
2173
|
return this.options.unit === void 0 ? e : `${e} ${this.options.unit}`;
|
|
2129
2174
|
}
|
|
2130
2175
|
}
|
|
2131
|
-
const
|
|
2176
|
+
const _ = {
|
|
2132
2177
|
fontFamily: {
|
|
2133
2178
|
sans: ["Mona Sans", "ui-sans-serif", "system-ui", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"]
|
|
2134
2179
|
},
|
|
@@ -2145,7 +2190,7 @@ const S = {
|
|
|
2145
2190
|
medium: "500",
|
|
2146
2191
|
semibold: "600"
|
|
2147
2192
|
}
|
|
2148
|
-
}, x =
|
|
2193
|
+
}, x = _.fontFamily.sans.join(", "), Mi = `
|
|
2149
2194
|
--primary: oklch(5% 0 0);
|
|
2150
2195
|
--primary-foreground: oklch(100% 0 0);
|
|
2151
2196
|
--secondary: oklch(92% 0 0);
|
|
@@ -2158,8 +2203,8 @@ const S = {
|
|
|
2158
2203
|
--accent: oklch(92% 0 0);
|
|
2159
2204
|
--accent-foreground: oklch(5% 0 0);
|
|
2160
2205
|
--muted-foreground: oklch(44% 0 0);
|
|
2161
|
-
`,
|
|
2162
|
-
:root { ${
|
|
2206
|
+
`, Ni = `
|
|
2207
|
+
:root { ${Mi} }
|
|
2163
2208
|
|
|
2164
2209
|
/* ── Button ──────────────────────────────────────────────── */
|
|
2165
2210
|
.ui-btn {
|
|
@@ -2550,37 +2595,37 @@ function xt() {
|
|
|
2550
2595
|
return;
|
|
2551
2596
|
ct = !0;
|
|
2552
2597
|
const n = document.createElement("style");
|
|
2553
|
-
n.id = "vd-ui-vanilla", n.textContent =
|
|
2598
|
+
n.id = "vd-ui-vanilla", n.textContent = Ni, document.head.appendChild(n);
|
|
2554
2599
|
}
|
|
2555
|
-
const
|
|
2556
|
-
class
|
|
2600
|
+
const zi = _.fontFamily.sans.join(", ");
|
|
2601
|
+
class Pi {
|
|
2557
2602
|
qrLib = null;
|
|
2558
2603
|
dialog = null;
|
|
2559
2604
|
qrSlot = null;
|
|
2560
2605
|
/** Open the modal immediately, with a loading placeholder in the QR slot. */
|
|
2561
2606
|
show() {
|
|
2562
|
-
this.hide(), xt(), this.dialog = new
|
|
2607
|
+
this.hide(), xt(), this.dialog = new Ri({ onClose: () => {
|
|
2563
2608
|
this.dialog = null, this.qrSlot = null;
|
|
2564
2609
|
} }), Object.assign(this.dialog.card.element.style, {
|
|
2565
2610
|
display: "flex",
|
|
2566
2611
|
flexDirection: "column",
|
|
2567
2612
|
alignItems: "center",
|
|
2568
2613
|
gap: l[3],
|
|
2569
|
-
fontFamily:
|
|
2570
|
-
}), this.dialog.card.element.appendChild(this.createText(
|
|
2571
|
-
fontSize:
|
|
2572
|
-
fontWeight:
|
|
2614
|
+
fontFamily: zi
|
|
2615
|
+
}), this.dialog.card.element.appendChild(this.createText(oi(), {
|
|
2616
|
+
fontSize: _.fontSize.base,
|
|
2617
|
+
fontWeight: _.fontWeight.semibold,
|
|
2573
2618
|
color: m.neutral[900]
|
|
2574
|
-
})), this.dialog.card.element.appendChild(this.createText(
|
|
2575
|
-
fontSize:
|
|
2619
|
+
})), this.dialog.card.element.appendChild(this.createText(Yn(), {
|
|
2620
|
+
fontSize: _.fontSize.sm,
|
|
2576
2621
|
color: m.neutral[600]
|
|
2577
|
-
})), this.qrSlot = this.createQrSlot(), this.dialog.card.element.appendChild(this.qrSlot), this.dialog.card.element.appendChild(this.createText(
|
|
2578
|
-
fontSize:
|
|
2622
|
+
})), this.qrSlot = this.createQrSlot(), this.dialog.card.element.appendChild(this.qrSlot), this.dialog.card.element.appendChild(this.createText(ti(), {
|
|
2623
|
+
fontSize: _.fontSize.xs,
|
|
2579
2624
|
color: m.neutral[500]
|
|
2580
2625
|
}));
|
|
2581
2626
|
const t = new v({
|
|
2582
2627
|
variant: "outline",
|
|
2583
|
-
label:
|
|
2628
|
+
label: Gn(),
|
|
2584
2629
|
onClick: () => {
|
|
2585
2630
|
this.hide();
|
|
2586
2631
|
}
|
|
@@ -2622,36 +2667,36 @@ function dt(n) {
|
|
|
2622
2667
|
const t = Math.max(0, Math.min(1, n));
|
|
2623
2668
|
return t * t * (3 - 2 * t);
|
|
2624
2669
|
}
|
|
2625
|
-
function
|
|
2626
|
-
const [r, a, d] = n, u = Math.cos(t), f = Math.sin(t), h = u * r + f * d, E = -f * r + u * d,
|
|
2670
|
+
function Fi(n, t, e, i, o, s) {
|
|
2671
|
+
const [r, a, d] = n, u = Math.cos(t), f = Math.sin(t), h = u * r + f * d, E = -f * r + u * d, C = Math.cos(e), k = Math.sin(e), I = C * a - k * E, F = k * a + C * E, tt = 0.55;
|
|
2627
2672
|
return [i + h * s * tt, o - I * s * tt, F];
|
|
2628
2673
|
}
|
|
2629
|
-
function
|
|
2674
|
+
function $i(n, t, e) {
|
|
2630
2675
|
n.beginPath(), n.moveTo(t[0], t[1]), n.lineTo(e[0], e[1]), n.strokeStyle = "#000", n.lineWidth = 2, n.stroke();
|
|
2631
2676
|
}
|
|
2632
|
-
function
|
|
2677
|
+
function Di(n, t, e, i, o) {
|
|
2633
2678
|
const s = t(e), r = t(i), a = [
|
|
2634
2679
|
s[0] + (r[0] - s[0]) * o,
|
|
2635
2680
|
s[1] + (r[1] - s[1]) * o,
|
|
2636
2681
|
s[2]
|
|
2637
2682
|
];
|
|
2638
|
-
|
|
2683
|
+
$i(n, s, a);
|
|
2639
2684
|
}
|
|
2640
|
-
const
|
|
2641
|
-
[
|
|
2685
|
+
const D = [-1, -1, 1], B = [1, -1, 1], U = [1, -1, -1], V = [-1, -1, -1], H = [-1, 1, 1], j = [1, 1, 1], q = [1, 1, -1], G = [-1, 1, -1], ut = [
|
|
2686
|
+
[D, B],
|
|
2642
2687
|
[B, U],
|
|
2643
2688
|
[U, V],
|
|
2644
|
-
[V,
|
|
2645
|
-
[
|
|
2646
|
-
[B,
|
|
2689
|
+
[V, D],
|
|
2690
|
+
[D, H],
|
|
2691
|
+
[B, j],
|
|
2647
2692
|
[U, q],
|
|
2648
2693
|
[V, G],
|
|
2649
|
-
[
|
|
2650
|
-
[
|
|
2694
|
+
[H, j],
|
|
2695
|
+
[j, q],
|
|
2651
2696
|
[q, G],
|
|
2652
|
-
[G,
|
|
2653
|
-
],
|
|
2654
|
-
function
|
|
2697
|
+
[G, H]
|
|
2698
|
+
], Bi = 400, ht = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
|
|
2699
|
+
function Ui() {
|
|
2655
2700
|
const n = document.createElement("div");
|
|
2656
2701
|
Object.assign(n.style, {
|
|
2657
2702
|
position: "absolute",
|
|
@@ -2694,9 +2739,9 @@ function $i() {
|
|
|
2694
2739
|
fontSize: "13px",
|
|
2695
2740
|
color: "#000",
|
|
2696
2741
|
fontFamily: ht
|
|
2697
|
-
}), o.textContent =
|
|
2742
|
+
}), o.textContent = hi(), e.appendChild(i), e.appendChild(o), n.appendChild(t), n.appendChild(e), { overlay: n, canvas: t, pctEl: i, phaseEl: o };
|
|
2698
2743
|
}
|
|
2699
|
-
class
|
|
2744
|
+
class Vi {
|
|
2700
2745
|
overlay;
|
|
2701
2746
|
canvas;
|
|
2702
2747
|
ctx;
|
|
@@ -2709,9 +2754,9 @@ class Bi {
|
|
|
2709
2754
|
visible = !1;
|
|
2710
2755
|
constructor(t, e = {}) {
|
|
2711
2756
|
this.startTime = performance.now();
|
|
2712
|
-
const i =
|
|
2757
|
+
const i = Ui();
|
|
2713
2758
|
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());
|
|
2714
|
-
const o = e.showDelay ??
|
|
2759
|
+
const o = e.showDelay ?? Bi;
|
|
2715
2760
|
this.showTimerId = setTimeout(() => {
|
|
2716
2761
|
this.reveal();
|
|
2717
2762
|
}, o);
|
|
@@ -2766,20 +2811,20 @@ class Bi {
|
|
|
2766
2811
|
return;
|
|
2767
2812
|
const t = this.canvas.width / Math.min(devicePixelRatio, 2), e = this.canvas.height / Math.min(devicePixelRatio, 2), i = (performance.now() - this.startTime) / 1e3;
|
|
2768
2813
|
this.ctx.fillStyle = "#fff", this.ctx.fillRect(0, 0, t, e);
|
|
2769
|
-
const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, a = 0.785, d = 0.615, u = (
|
|
2770
|
-
let
|
|
2771
|
-
h < 0.35 ?
|
|
2772
|
-
for (let
|
|
2773
|
-
const I = ut[
|
|
2814
|
+
const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, a = 0.785, d = 0.615, u = (k) => Fi(k, a, d, o, s, r), f = 6, h = i % f / f, E = ut.length;
|
|
2815
|
+
let C;
|
|
2816
|
+
h < 0.35 ? C = dt(h / 0.35) * E : h < 0.55 ? C = E : h < 0.9 ? C = (1 - dt((h - 0.55) / 0.35)) * E : C = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
|
|
2817
|
+
for (let k = 0; k < E && !(k >= C); k++) {
|
|
2818
|
+
const I = ut[k];
|
|
2774
2819
|
if (I === void 0)
|
|
2775
2820
|
continue;
|
|
2776
|
-
const F = Math.min(1,
|
|
2777
|
-
|
|
2821
|
+
const F = Math.min(1, C - k);
|
|
2822
|
+
Di(this.ctx, u, I[0], I[1], F);
|
|
2778
2823
|
}
|
|
2779
2824
|
this.ctx.shadowBlur = 0;
|
|
2780
2825
|
}
|
|
2781
2826
|
}
|
|
2782
|
-
class
|
|
2827
|
+
class Hi {
|
|
2783
2828
|
constructor(t) {
|
|
2784
2829
|
this.options = t, this.element = document.createElement("div"), Object.assign(this.element.style, { display: "flex", gap: "0.375rem" }), this.onFullscreenChange = () => {
|
|
2785
2830
|
this.setFullscreenIcon(document.fullscreenElement !== null);
|
|
@@ -2811,7 +2856,7 @@ class Ui {
|
|
|
2811
2856
|
this.arBtn = this.syncButton(this.arBtn, t.ar !== !1 && this.options.onAr !== void 0, () => new v({
|
|
2812
2857
|
variant: "outline",
|
|
2813
2858
|
size: "icon",
|
|
2814
|
-
label:
|
|
2859
|
+
label: en(),
|
|
2815
2860
|
icon: g.ar(),
|
|
2816
2861
|
onClick: () => {
|
|
2817
2862
|
this.options.onAr?.();
|
|
@@ -2819,7 +2864,7 @@ class Ui {
|
|
|
2819
2864
|
})), this.fullscreenBtn = this.syncButton(this.fullscreenBtn, t.fullscreen !== !1 && this.options.onFullscreen !== void 0, () => new v({
|
|
2820
2865
|
variant: "outline",
|
|
2821
2866
|
size: "icon",
|
|
2822
|
-
label:
|
|
2867
|
+
label: Vn(),
|
|
2823
2868
|
icon: g.fullscreen(),
|
|
2824
2869
|
onClick: () => {
|
|
2825
2870
|
this.options.onFullscreen?.();
|
|
@@ -2831,7 +2876,7 @@ class Ui {
|
|
|
2831
2876
|
const i = new v({
|
|
2832
2877
|
variant: "outline",
|
|
2833
2878
|
size: "icon",
|
|
2834
|
-
label:
|
|
2879
|
+
label: Ke(),
|
|
2835
2880
|
icon: this.annotationsShown ? g.annotations() : g.annotationsOff(),
|
|
2836
2881
|
onClick: () => {
|
|
2837
2882
|
this.flipAnnotations();
|
|
@@ -2857,9 +2902,9 @@ class P {
|
|
|
2857
2902
|
targetTilt: e.tilt,
|
|
2858
2903
|
targetZoom: e.zoom,
|
|
2859
2904
|
thetaOffset: 0
|
|
2860
|
-
}, o =
|
|
2905
|
+
}, o = ji(t, e, i);
|
|
2861
2906
|
e.onChange((s) => {
|
|
2862
|
-
i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom,
|
|
2907
|
+
i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, qi(o, e, s);
|
|
2863
2908
|
}), this.element.appendChild(P.buildZoom(o.zoomOut, o.zoomIn)), this.element.appendChild(P.buildDpad(o.tiltUp, o.rotateLeft, o.reset, o.rotateRight, o.tiltDown));
|
|
2864
2909
|
}
|
|
2865
2910
|
static buildZoom(t, e) {
|
|
@@ -2880,7 +2925,7 @@ class P {
|
|
|
2880
2925
|
return r;
|
|
2881
2926
|
}
|
|
2882
2927
|
}
|
|
2883
|
-
function
|
|
2928
|
+
function ji(n, t, e) {
|
|
2884
2929
|
const i = (r) => Math.max(t.limits?.minZoom ?? 1, Math.min(t.limits?.maxZoom ?? 1 / 0, r)), o = (r) => {
|
|
2885
2930
|
const a = t.limits?.minRotate, d = t.limits?.maxRotate;
|
|
2886
2931
|
return a !== void 0 || d !== void 0 ? Math.max(a ?? -1 / 0, Math.min(d ?? 1 / 0, r)) : r;
|
|
@@ -2894,30 +2939,30 @@ function Vi(n, t, e) {
|
|
|
2894
2939
|
u > 180 || u < 0 ? (e.targetTilt = u > 180 ? 360 - u : -u, e.thetaOffset = (e.thetaOffset + 180) % 360, n.tilt(e.targetTilt).rotate(e.targetRotation + e.thetaOffset).set()) : (e.targetTilt = u, n.tilt(e.targetTilt).set());
|
|
2895
2940
|
};
|
|
2896
2941
|
return {
|
|
2897
|
-
zoomOut: new v({ variant: "outline", size: "icon", label:
|
|
2942
|
+
zoomOut: new v({ variant: "outline", size: "icon", label: In(), icon: g.zoomOut(), onClick: () => {
|
|
2898
2943
|
e.targetZoom = i(e.targetZoom - 10), n.zoom(e.targetZoom).set();
|
|
2899
2944
|
} }),
|
|
2900
|
-
zoomIn: new v({ variant: "outline", size: "icon", label:
|
|
2945
|
+
zoomIn: new v({ variant: "outline", size: "icon", label: En(), icon: g.zoomIn(), onClick: () => {
|
|
2901
2946
|
e.targetZoom = i(e.targetZoom + 10), n.zoom(e.targetZoom).set();
|
|
2902
2947
|
} }),
|
|
2903
|
-
tiltUp: new v({ variant: "outline", size: "icon", label:
|
|
2948
|
+
tiltUp: new v({ variant: "outline", size: "icon", label: _n(), icon: g.tiltUp(), onClick: () => {
|
|
2904
2949
|
s(-15);
|
|
2905
2950
|
} }),
|
|
2906
|
-
rotateLeft: new v({ variant: "outline", size: "icon", label:
|
|
2951
|
+
rotateLeft: new v({ variant: "outline", size: "icon", label: dn(), icon: g.rotateLeft(), onClick: () => {
|
|
2907
2952
|
e.targetRotation = o(e.targetRotation - 15), n.rotate(e.targetRotation + e.thetaOffset).set();
|
|
2908
2953
|
} }),
|
|
2909
|
-
reset: new v({ variant: "outline", size: "icon", label:
|
|
2954
|
+
reset: new v({ variant: "outline", size: "icon", label: rn(), icon: g.reset(), onClick: () => {
|
|
2910
2955
|
e.thetaOffset = 0, n.reset();
|
|
2911
2956
|
} }),
|
|
2912
|
-
rotateRight: new v({ variant: "outline", size: "icon", label:
|
|
2957
|
+
rotateRight: new v({ variant: "outline", size: "icon", label: mn(), icon: g.rotateRight(), onClick: () => {
|
|
2913
2958
|
e.targetRotation = o(e.targetRotation + 15), n.rotate(e.targetRotation + e.thetaOffset).set();
|
|
2914
2959
|
} }),
|
|
2915
|
-
tiltDown: new v({ variant: "outline", size: "icon", label:
|
|
2960
|
+
tiltDown: new v({ variant: "outline", size: "icon", label: vn(), icon: g.tiltDown(), onClick: () => {
|
|
2916
2961
|
s(15);
|
|
2917
2962
|
} })
|
|
2918
2963
|
};
|
|
2919
2964
|
}
|
|
2920
|
-
function
|
|
2965
|
+
function qi(n, t, e) {
|
|
2921
2966
|
const i = t.limits;
|
|
2922
2967
|
i !== void 0 && (n.zoomOut.element.disabled = i.minZoom !== void 0 && e.zoom <= i.minZoom + R, n.zoomIn.element.disabled = i.maxZoom !== void 0 && e.zoom >= i.maxZoom - R, n.tiltUp.element.disabled = i.minTilt !== void 0 && e.tilt <= i.minTilt + R, n.tiltDown.element.disabled = i.maxTilt !== void 0 && e.tilt >= i.maxTilt - R, n.rotateLeft.element.disabled = i.minRotate !== void 0 && e.rotation <= i.minRotate + R, n.rotateRight.element.disabled = i.maxRotate !== void 0 && e.rotation >= i.maxRotate - R);
|
|
2923
2968
|
}
|
|
@@ -2938,7 +2983,7 @@ const T = {
|
|
|
2938
2983
|
m: 1e3,
|
|
2939
2984
|
in: 25.4
|
|
2940
2985
|
}, pt = 3;
|
|
2941
|
-
function
|
|
2986
|
+
function Gi(n) {
|
|
2942
2987
|
const t = n.stepMm / Tt[n.displayUnit];
|
|
2943
2988
|
for (let e = 0; e <= pt; e++) {
|
|
2944
2989
|
const i = t * 10 ** e;
|
|
@@ -2947,15 +2992,15 @@ function Hi(n) {
|
|
|
2947
2992
|
}
|
|
2948
2993
|
return pt;
|
|
2949
2994
|
}
|
|
2950
|
-
function
|
|
2951
|
-
const i =
|
|
2995
|
+
function Zi(n, t, e) {
|
|
2996
|
+
const i = Gi(t), o = n / Tt[t.displayUnit];
|
|
2952
2997
|
return new Intl.NumberFormat(e, {
|
|
2953
2998
|
minimumFractionDigits: i,
|
|
2954
2999
|
maximumFractionDigits: i
|
|
2955
3000
|
}).format(o);
|
|
2956
3001
|
}
|
|
2957
|
-
function
|
|
2958
|
-
const a = p(), d = n.values.map((h) =>
|
|
3002
|
+
function Wi(n, t, e, i, o, s, r) {
|
|
3003
|
+
const a = p(), d = n.values.map((h) => Zi(Number(h), t, a)), u = n.values.find((h) => e.getValue(n.name, h)?.isSelected === !0) ?? n.defaultValue, f = new Li(n.values, {
|
|
2959
3004
|
label: n.name,
|
|
2960
3005
|
labels: d,
|
|
2961
3006
|
unit: t.displayUnit,
|
|
@@ -2978,20 +3023,20 @@ function Gi(n, t, e, i, o, s, r) {
|
|
|
2978
3023
|
}
|
|
2979
3024
|
};
|
|
2980
3025
|
}
|
|
2981
|
-
const
|
|
2982
|
-
let
|
|
3026
|
+
const Qi = 5;
|
|
3027
|
+
let Yi = 0;
|
|
2983
3028
|
function K(n) {
|
|
2984
3029
|
const t = n.replace(/([A-Z])/g, " $1").trim();
|
|
2985
3030
|
return t.charAt(0).toUpperCase() + t.slice(1).toLowerCase();
|
|
2986
3031
|
}
|
|
2987
|
-
function
|
|
3032
|
+
function Ki(n, t, e, i, o, s) {
|
|
2988
3033
|
const r = document.createElement("div");
|
|
2989
3034
|
r.className = "vd-attribute", r.dataset.name = n.name;
|
|
2990
3035
|
const a = document.createElement("span");
|
|
2991
|
-
a.className = "vd-attribute-label", a.textContent = K(n.name), a.id = `vd-attribute-label-${
|
|
3036
|
+
a.className = "vd-attribute-label", a.textContent = K(n.name), a.id = `vd-attribute-label-${Yi++}`, r.appendChild(a), r.setAttribute("role", "group"), r.setAttribute("aria-labelledby", a.id);
|
|
2992
3037
|
const d = (f) => {
|
|
2993
3038
|
r.style.display = f ? "none" : "";
|
|
2994
|
-
}, u = n.dimension !== void 0 ?
|
|
3039
|
+
}, u = n.dimension !== void 0 ? Wi(
|
|
2995
3040
|
n,
|
|
2996
3041
|
n.dimension,
|
|
2997
3042
|
t,
|
|
@@ -2999,13 +3044,13 @@ function Qi(n, t, e, i, o, s) {
|
|
|
2999
3044
|
o,
|
|
3000
3045
|
i,
|
|
3001
3046
|
s
|
|
3002
|
-
) :
|
|
3047
|
+
) : Xi(n, t, e, i, s);
|
|
3003
3048
|
return r.appendChild(u.element), { element: r, setSelectable: u.setSelectable, setHidden: d };
|
|
3004
3049
|
}
|
|
3005
|
-
function
|
|
3050
|
+
function Xi(n, t, e, i, o) {
|
|
3006
3051
|
const s = n.values.find(
|
|
3007
3052
|
(d) => t.getValue(n.name, d)?.isSelected === !0
|
|
3008
|
-
), r = n.values.map(K), a = n.values.length <=
|
|
3053
|
+
), r = n.values.map(K), a = n.values.length <= Qi ? new Ii(n.values, s, r) : new Oi(n.name, n.values, K(n.name), s, r);
|
|
3009
3054
|
return a.onSelect((d) => {
|
|
3010
3055
|
e.dispatch(T.SELECT, { attribute: n.name, value: d }, !0).defaultPrevented || i(n.name, d);
|
|
3011
3056
|
}), o(n.name, (d) => {
|
|
@@ -3017,9 +3062,9 @@ function Yi(n, t, e, i, o) {
|
|
|
3017
3062
|
}
|
|
3018
3063
|
};
|
|
3019
3064
|
}
|
|
3020
|
-
const
|
|
3021
|
-
class
|
|
3022
|
-
constructor(t, e =
|
|
3065
|
+
const Ji = 80, to = 2500;
|
|
3066
|
+
class eo {
|
|
3067
|
+
constructor(t, e = to) {
|
|
3023
3068
|
this.configuration = t, this.resetMs = e, this.element = document.createElement("div"), this.element.className = "vd-commerce vd-hidden";
|
|
3024
3069
|
const i = document.createElement("div");
|
|
3025
3070
|
i.className = "vd-commerce-price", this.priceEl = document.createElement("span"), this.priceEl.className = "vd-price", this.vatEl = document.createElement("span"), this.vatEl.className = "vd-vat", i.append(this.priceEl, this.vatEl), this.button = new v({ variant: "default", onClick: () => {
|
|
@@ -3051,7 +3096,7 @@ class Ji {
|
|
|
3051
3096
|
this.priceEl.textContent = "", this.vatEl.textContent = "";
|
|
3052
3097
|
return;
|
|
3053
3098
|
}
|
|
3054
|
-
this.priceEl.textContent =
|
|
3099
|
+
this.priceEl.textContent = no(t.price, t.currency), this.vatEl.textContent = mt(this.configuration.vatDisplay);
|
|
3055
3100
|
}
|
|
3056
3101
|
renderButton() {
|
|
3057
3102
|
const t = this.configuration.submitEnabled;
|
|
@@ -3059,11 +3104,11 @@ class Ji {
|
|
|
3059
3104
|
}
|
|
3060
3105
|
async handleSubmit() {
|
|
3061
3106
|
if (this.state !== "busy") {
|
|
3062
|
-
this.setState("busy",
|
|
3107
|
+
this.setState("busy", De());
|
|
3063
3108
|
try {
|
|
3064
|
-
await this.configuration.submit(), this.setState("success",
|
|
3109
|
+
await this.configuration.submit(), this.setState("success", Ze());
|
|
3065
3110
|
} catch {
|
|
3066
|
-
this.setState("failed",
|
|
3111
|
+
this.setState("failed", He());
|
|
3067
3112
|
}
|
|
3068
3113
|
this.scheduleReset();
|
|
3069
3114
|
}
|
|
@@ -3081,9 +3126,9 @@ class Ji {
|
|
|
3081
3126
|
}
|
|
3082
3127
|
}
|
|
3083
3128
|
function mt(n) {
|
|
3084
|
-
return (n ?? "").slice(0,
|
|
3129
|
+
return (n ?? "").slice(0, Ji);
|
|
3085
3130
|
}
|
|
3086
|
-
function
|
|
3131
|
+
function no(n, t) {
|
|
3087
3132
|
try {
|
|
3088
3133
|
const e = new Intl.NumberFormat(p(), { style: "currency", currency: t }), i = e.resolvedOptions().maximumFractionDigits ?? 2;
|
|
3089
3134
|
return e.format(n / 10 ** i);
|
|
@@ -3104,8 +3149,8 @@ class Rt {
|
|
|
3104
3149
|
this.slot?.remove(), this.slot = null, this.panel = null;
|
|
3105
3150
|
}
|
|
3106
3151
|
}
|
|
3107
|
-
const
|
|
3108
|
-
class
|
|
3152
|
+
const io = 572;
|
|
3153
|
+
class oo {
|
|
3109
3154
|
/** @param actionBarSlot The shared corner slot the AR/fullscreen buttons live in — the
|
|
3110
3155
|
* "open configurator" toggle joins them there instead of floating as its own overlay. */
|
|
3111
3156
|
constructor(t) {
|
|
@@ -3125,7 +3170,7 @@ class no {
|
|
|
3125
3170
|
this.container = t, e.classList.add("vd-attributes-sidebar"), this.closeButton = new v({
|
|
3126
3171
|
variant: "ghost",
|
|
3127
3172
|
size: "icon-sm",
|
|
3128
|
-
label:
|
|
3173
|
+
label: Nn(),
|
|
3129
3174
|
icon: g.close({ size: 18 }),
|
|
3130
3175
|
onClick: () => {
|
|
3131
3176
|
this.expanded = !1, this.render();
|
|
@@ -3135,7 +3180,7 @@ class no {
|
|
|
3135
3180
|
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 v({
|
|
3136
3181
|
variant: "outline",
|
|
3137
3182
|
size: "icon",
|
|
3138
|
-
label:
|
|
3183
|
+
label: $n(),
|
|
3139
3184
|
icon: g.configurator({ size: 18 }),
|
|
3140
3185
|
onClick: () => {
|
|
3141
3186
|
this.expanded = !0, this.render();
|
|
@@ -3151,7 +3196,7 @@ class no {
|
|
|
3151
3196
|
observe() {
|
|
3152
3197
|
typeof ResizeObserver > "u" || this.container === null || (this.observer = new ResizeObserver((t) => {
|
|
3153
3198
|
const e = t[0]?.contentRect.width ?? 0;
|
|
3154
|
-
this.setCollapsible(e > 0 && e <
|
|
3199
|
+
this.setCollapsible(e > 0 && e < io);
|
|
3155
3200
|
}), this.observer.observe(this.container));
|
|
3156
3201
|
}
|
|
3157
3202
|
setCollapsible(t) {
|
|
@@ -3164,7 +3209,7 @@ class no {
|
|
|
3164
3209
|
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);
|
|
3165
3210
|
}
|
|
3166
3211
|
}
|
|
3167
|
-
class
|
|
3212
|
+
class so {
|
|
3168
3213
|
attach(t, e) {
|
|
3169
3214
|
}
|
|
3170
3215
|
setVisible(t) {
|
|
@@ -3172,20 +3217,20 @@ class io {
|
|
|
3172
3217
|
destroy() {
|
|
3173
3218
|
}
|
|
3174
3219
|
}
|
|
3175
|
-
const
|
|
3220
|
+
const ro = {
|
|
3176
3221
|
"inframe-bottom-left": () => new Rt(),
|
|
3177
|
-
"sidebar-right": (n) => new
|
|
3178
|
-
hidden: () => new
|
|
3222
|
+
"sidebar-right": (n) => new oo(n),
|
|
3223
|
+
hidden: () => new so()
|
|
3179
3224
|
};
|
|
3180
|
-
function
|
|
3181
|
-
return (
|
|
3225
|
+
function ao(n, t) {
|
|
3226
|
+
return (ro[n ?? ""] ?? (() => new Rt()))(t);
|
|
3182
3227
|
}
|
|
3183
|
-
const Z =
|
|
3228
|
+
const Z = _.fontFamily.sans.join(", "), W = `
|
|
3184
3229
|
position: absolute;
|
|
3185
3230
|
display: flex;
|
|
3186
3231
|
z-index: 10;
|
|
3187
3232
|
transition: inset-inline-end 0.18s ease;
|
|
3188
|
-
`,
|
|
3233
|
+
`, lo = `
|
|
3189
3234
|
/* Override browser's default black fullscreen backdrop */
|
|
3190
3235
|
.vd-container:fullscreen {
|
|
3191
3236
|
background: oklch(100% 0 0);
|
|
@@ -3268,8 +3313,8 @@ const Z = S.fontFamily.sans.join(", "), W = `
|
|
|
3268
3313
|
|
|
3269
3314
|
/* Micro-label: recedes so the controls lead. */
|
|
3270
3315
|
.vd-attribute-label {
|
|
3271
|
-
font-size: ${
|
|
3272
|
-
font-weight: ${
|
|
3316
|
+
font-size: ${_.fontSize.xs};
|
|
3317
|
+
font-weight: ${_.fontWeight.medium};
|
|
3273
3318
|
color: ${m.neutral[500]};
|
|
3274
3319
|
text-transform: uppercase;
|
|
3275
3320
|
letter-spacing: 0.05em;
|
|
@@ -3365,13 +3410,13 @@ const Z = S.fontFamily.sans.join(", "), W = `
|
|
|
3365
3410
|
}
|
|
3366
3411
|
|
|
3367
3412
|
.vd-price {
|
|
3368
|
-
font-size: ${
|
|
3369
|
-
font-weight: ${
|
|
3413
|
+
font-size: ${_.fontSize.lg};
|
|
3414
|
+
font-weight: ${_.fontWeight.semibold};
|
|
3370
3415
|
color: ${m.neutral[900]};
|
|
3371
3416
|
}
|
|
3372
3417
|
|
|
3373
3418
|
.vd-vat {
|
|
3374
|
-
font-size: ${
|
|
3419
|
+
font-size: ${_.fontSize.xs};
|
|
3375
3420
|
color: ${m.neutral[500]};
|
|
3376
3421
|
}
|
|
3377
3422
|
|
|
@@ -3388,17 +3433,17 @@ const Z = S.fontFamily.sans.join(", "), W = `
|
|
|
3388
3433
|
}
|
|
3389
3434
|
|
|
3390
3435
|
`;
|
|
3391
|
-
function
|
|
3436
|
+
function co() {
|
|
3392
3437
|
if (xt(), document.getElementById("vd-styles") !== null)
|
|
3393
3438
|
return;
|
|
3394
3439
|
const n = document.createElement("style");
|
|
3395
|
-
n.id = "vd-styles", n.textContent =
|
|
3440
|
+
n.id = "vd-styles", n.textContent = lo, document.head.appendChild(n);
|
|
3396
3441
|
}
|
|
3397
|
-
function
|
|
3442
|
+
function uo(n, t) {
|
|
3398
3443
|
const e = document.createElement("a");
|
|
3399
3444
|
e.href = `data:image/png;base64,${n}`, e.download = t, e.click();
|
|
3400
3445
|
}
|
|
3401
|
-
class
|
|
3446
|
+
class ho {
|
|
3402
3447
|
options;
|
|
3403
3448
|
settings = {};
|
|
3404
3449
|
container = null;
|
|
@@ -3418,7 +3463,7 @@ class co {
|
|
|
3418
3463
|
this.options = t;
|
|
3419
3464
|
}
|
|
3420
3465
|
attach(t) {
|
|
3421
|
-
|
|
3466
|
+
co(), this.container = t, this.loading = new Vi(t), this.slots.topRight = this.createSlot(t, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(t, "vd-slot-bottom-right");
|
|
3422
3467
|
}
|
|
3423
3468
|
onReady() {
|
|
3424
3469
|
this.loading?.hide(), this.loading = null, this.mountToolbar(), this.cameraControls !== null && (this.cameraControls.element.style.display = "flex"), this.layout?.setVisible(!0);
|
|
@@ -3427,7 +3472,7 @@ class co {
|
|
|
3427
3472
|
if (this.actionBar !== null || this.slots.bottomRight === null || this.container === null)
|
|
3428
3473
|
return;
|
|
3429
3474
|
const t = typeof this.container.requestFullscreen == "function";
|
|
3430
|
-
this.actionBar = new
|
|
3475
|
+
this.actionBar = new Hi({
|
|
3431
3476
|
onAr: this.options.onAr,
|
|
3432
3477
|
onFullscreen: t ? () => {
|
|
3433
3478
|
this.toggleFullscreen();
|
|
@@ -3454,7 +3499,7 @@ class co {
|
|
|
3454
3499
|
), this.cameraControls.element.style.display = "none", this.slots.topRight.appendChild(this.cameraControls.element)), this.placeScreenshotButton(), e.length !== 0)) {
|
|
3455
3500
|
this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes", this.groupHandles = /* @__PURE__ */ new Map();
|
|
3456
3501
|
for (const i of e) {
|
|
3457
|
-
const o =
|
|
3502
|
+
const o = Ki(
|
|
3458
3503
|
i,
|
|
3459
3504
|
t,
|
|
3460
3505
|
this.options.eventBus,
|
|
@@ -3464,7 +3509,7 @@ class co {
|
|
|
3464
3509
|
);
|
|
3465
3510
|
this.groupHandles.set(i.name, o), this.attributes.appendChild(o.element);
|
|
3466
3511
|
}
|
|
3467
|
-
this.commerce = new
|
|
3512
|
+
this.commerce = new eo(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = ao(
|
|
3468
3513
|
this.settings.configuratorLayout,
|
|
3469
3514
|
this.slots.bottomRight
|
|
3470
3515
|
), this.layout.attach(this.container, this.attributes), this.lastSelectable !== null && this.applySelectable(this.lastSelectable);
|
|
@@ -3505,11 +3550,11 @@ class co {
|
|
|
3505
3550
|
t && this.screenshotBtn === null && (this.screenshotBtn = new v({
|
|
3506
3551
|
variant: "outline",
|
|
3507
3552
|
size: "icon",
|
|
3508
|
-
label:
|
|
3553
|
+
label: li(),
|
|
3509
3554
|
icon: g.screenshot(),
|
|
3510
3555
|
onClick: () => {
|
|
3511
3556
|
this.options.snapshotApi.take("snapshot.png").onDeveloped(({ data: e, filename: i }) => {
|
|
3512
|
-
|
|
3557
|
+
uo(e, i);
|
|
3513
3558
|
});
|
|
3514
3559
|
}
|
|
3515
3560
|
})), !t && this.screenshotBtn !== null && (this.screenshotBtn.element.remove(), this.screenshotBtn = null);
|
|
@@ -3518,8 +3563,8 @@ class co {
|
|
|
3518
3563
|
this.screenshotBtn === null || this.slots.topRight === null || (this.cameraControls !== null ? this.cameraControls.element.appendChild(this.screenshotBtn.element) : this.slots.topRight.appendChild(this.screenshotBtn.element));
|
|
3519
3564
|
}
|
|
3520
3565
|
}
|
|
3521
|
-
const
|
|
3522
|
-
class
|
|
3566
|
+
const po = {};
|
|
3567
|
+
class mo {
|
|
3523
3568
|
defaultServer = "https://server.virtualdisplay.io";
|
|
3524
3569
|
options;
|
|
3525
3570
|
serverHost;
|
|
@@ -3568,12 +3613,12 @@ class ho {
|
|
|
3568
3613
|
t.searchParams.set("license", this.options.license), t.searchParams.set("model", this.options.model);
|
|
3569
3614
|
return;
|
|
3570
3615
|
}
|
|
3571
|
-
t.searchParams.set("app", this.options.app), (this.options.license !== void 0 || this.options.model !== void 0) &&
|
|
3616
|
+
t.searchParams.set("app", this.options.app), (this.options.license !== void 0 || this.options.model !== void 0) && w.warn("Both `app` and `license`/`model` were supplied: `app` wins, the pair was ignored");
|
|
3572
3617
|
}
|
|
3573
3618
|
getServerUrl() {
|
|
3574
3619
|
if (this.serverHost !== void 0)
|
|
3575
3620
|
return this.serverHost;
|
|
3576
|
-
if (
|
|
3621
|
+
if (po?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
|
|
3577
3622
|
return this.defaultServer;
|
|
3578
3623
|
}
|
|
3579
3624
|
getParentElement() {
|
|
@@ -3585,27 +3630,27 @@ class ho {
|
|
|
3585
3630
|
return t;
|
|
3586
3631
|
}
|
|
3587
3632
|
}
|
|
3588
|
-
function
|
|
3633
|
+
function fo(n) {
|
|
3589
3634
|
const { messenger: t } = n;
|
|
3590
3635
|
t.on(c.HANDSHAKE, (e) => {
|
|
3591
|
-
Nt(e) && (
|
|
3636
|
+
Nt(e) && (w.info("Server handshake received, flushing publisher queue"), t.markReady());
|
|
3592
3637
|
}), t.on(c.SESSION, (e) => {
|
|
3593
3638
|
zt(e) && n.onSession(e.sessionId);
|
|
3594
3639
|
}), t.on(c.MUTATION, (e) => {
|
|
3595
3640
|
Ft(e) && (n.attributes.handleMutationResult(e), n.configuration.handleSelectionChanged(n.attributes.getSelection()));
|
|
3596
3641
|
}), t.on(c.SNAPSHOT, (e) => {
|
|
3597
|
-
|
|
3642
|
+
$t(e) && n.snapshot.handleSnapshotResult(e);
|
|
3598
3643
|
}), t.on(c.CAMERA, (e) => {
|
|
3599
|
-
|
|
3644
|
+
Dt(e) && n.cameraPosition.handlePositionUpdate(e);
|
|
3600
3645
|
}), t.on(c.LOADING_INDICATOR, (e) => {
|
|
3601
3646
|
Ut(e) && (e.error !== void 0 ? n.ui.showError(e.error) : n.ui.updateProgress(e.progress, e.phase));
|
|
3602
3647
|
}), t.on(c.CONFIG, (e) => {
|
|
3603
|
-
|
|
3648
|
+
jt(e) && n.applyConfig(e);
|
|
3604
3649
|
}), t.on(c.MAPPING, (e) => {
|
|
3605
3650
|
Bt(e) && (n.attributes.handleMappingReceived(e), n.configuration.handleSelectionChanged(n.attributes.getSelection()), n.ui.renderAttributeControls(n.attributes, e.attributes), n.readyStateTracker.handleMappingReceived());
|
|
3606
|
-
}),
|
|
3651
|
+
}), go(n);
|
|
3607
3652
|
}
|
|
3608
|
-
function
|
|
3653
|
+
function go(n) {
|
|
3609
3654
|
const { messenger: t } = n;
|
|
3610
3655
|
t.on(c.FOCUS, (e) => {
|
|
3611
3656
|
qt(e) && n.focus.handleStateReceived(e);
|
|
@@ -3614,19 +3659,19 @@ function mo(n) {
|
|
|
3614
3659
|
}), t.on(c.SYNC, (e) => {
|
|
3615
3660
|
Vt(e) && n.onSync(e.connected);
|
|
3616
3661
|
}), t.on(c.SELECTABLE, (e) => {
|
|
3617
|
-
|
|
3662
|
+
Ht(e) && (n.selectable.handleSnapshot(e), n.ui.applySelectable(e.attributes));
|
|
3618
3663
|
}), t.on(c.APP_RESOLVED, (e) => {
|
|
3619
3664
|
Pt(e) && n.onAppResolved(e);
|
|
3620
3665
|
});
|
|
3621
3666
|
}
|
|
3622
|
-
class
|
|
3667
|
+
class bo {
|
|
3623
3668
|
ready = !1;
|
|
3624
3669
|
onReady;
|
|
3625
3670
|
constructor(t) {
|
|
3626
3671
|
this.onReady = t;
|
|
3627
3672
|
}
|
|
3628
3673
|
handleMappingReceived() {
|
|
3629
|
-
this.ready || (this.ready = !0,
|
|
3674
|
+
this.ready || (this.ready = !0, w.info("Mapping received from server, client is now ready"), this.onReady?.());
|
|
3630
3675
|
}
|
|
3631
3676
|
get isReady() {
|
|
3632
3677
|
return this.ready;
|
|
@@ -3635,13 +3680,13 @@ class fo {
|
|
|
3635
3680
|
this.ready = !1;
|
|
3636
3681
|
}
|
|
3637
3682
|
}
|
|
3638
|
-
function
|
|
3683
|
+
function vo(n) {
|
|
3639
3684
|
if (n === void 0)
|
|
3640
3685
|
return;
|
|
3641
3686
|
const { annotations: t, ...e } = n;
|
|
3642
3687
|
return t === void 0 ? e : t === !0 ? { ...e, annotations: "show" } : t === !1 ? { ...e, annotations: "hide" } : { ...e, annotations: t };
|
|
3643
3688
|
}
|
|
3644
|
-
class
|
|
3689
|
+
class yo {
|
|
3645
3690
|
attributes;
|
|
3646
3691
|
selectableState;
|
|
3647
3692
|
readyStateTracker;
|
|
@@ -3657,48 +3702,49 @@ class bo {
|
|
|
3657
3702
|
options;
|
|
3658
3703
|
serverHost;
|
|
3659
3704
|
iframeParams;
|
|
3660
|
-
|
|
3705
|
+
// The composed AR flow, or undefined in a build that composes none.
|
|
3661
3706
|
arActivation;
|
|
3662
|
-
|
|
3707
|
+
// The composed sync tracker, or undefined in a build that composes none.
|
|
3663
3708
|
syncTracker;
|
|
3664
3709
|
iframe;
|
|
3665
3710
|
container;
|
|
3666
3711
|
readyCallbacks = [];
|
|
3667
3712
|
mutationFailedCallbacks = [];
|
|
3668
|
-
|
|
3713
|
+
// The viewer's tracking session id, once the server announces it (SESSION).
|
|
3669
3714
|
viewerSessionId;
|
|
3670
|
-
|
|
3715
|
+
// Which app the viewer resolved, once reported (APP_RESOLVED).
|
|
3671
3716
|
resolvedApp;
|
|
3672
3717
|
appResolvedCallbacks = [];
|
|
3718
|
+
/** @internal */
|
|
3673
3719
|
constructor(t, e) {
|
|
3674
3720
|
this.options = t;
|
|
3675
3721
|
const i = e ?? {};
|
|
3676
|
-
this.serverHost = i.serverHost, this.iframeParams = i.iframeParams, this.initializeLogging(), this.messenger = new Zt(
|
|
3677
|
-
() =>
|
|
3678
|
-
i.messengerOptions
|
|
3679
|
-
);
|
|
3722
|
+
this.serverHost = i.serverHost, this.iframeParams = i.iframeParams, this.initializeLogging(), this.messenger = new Zt(() => this.iframe?.contentWindow ?? null, {
|
|
3723
|
+
onHandlerError: (s, r) => w.error(`Error handling ${s.type}`, r),
|
|
3724
|
+
...i.messengerOptions
|
|
3725
|
+
});
|
|
3680
3726
|
const o = (s) => {
|
|
3681
3727
|
this.messenger.send(s);
|
|
3682
3728
|
};
|
|
3683
|
-
this.attributes = new
|
|
3729
|
+
this.attributes = new fe(o, L, (s, r) => {
|
|
3684
3730
|
this.notifyMutationFailed(s, r);
|
|
3685
|
-
}), this.selectableState = new
|
|
3731
|
+
}), this.selectableState = new ge(), this.snapshotApi = new Ce(o), this.annotationsApi = new Qt(o, L), this.cameraApi = new be(o), this.cameraPositionApi = new ve(), this.focusApi = new _e(o, (s) => {
|
|
3686
3732
|
this.dispatchFocusChange(s);
|
|
3687
|
-
}, L), this.configurationApi = new
|
|
3733
|
+
}, L), this.configurationApi = new Se(
|
|
3688
3734
|
(s) => {
|
|
3689
3735
|
this.dispatchConfigurationChange(s);
|
|
3690
3736
|
},
|
|
3691
3737
|
(s) => {
|
|
3692
3738
|
this.dispatchConfigurationSubmit(s);
|
|
3693
3739
|
}
|
|
3694
|
-
), this.eventBus = new
|
|
3740
|
+
), this.eventBus = new Ae(), this.arActivation = i.createArActivation?.(o), this.syncTracker = i.createSyncTracker?.(), this.readyStateTracker = new bo(() => {
|
|
3695
3741
|
this.notifyReady();
|
|
3696
3742
|
}), this.ui = this.createStandardInterface(), this.wireIncomingMessages(), i.registerHandlers?.(this.messenger, o), this.messenger.start(), this.createAndConnectIframe();
|
|
3697
3743
|
}
|
|
3698
|
-
|
|
3744
|
+
// The configurator UI, every callback bridging it to the facade that owns the action.
|
|
3699
3745
|
createStandardInterface() {
|
|
3700
3746
|
const t = this.arActivation;
|
|
3701
|
-
return new
|
|
3747
|
+
return new ho({
|
|
3702
3748
|
snapshotApi: this.snapshotApi,
|
|
3703
3749
|
cameraApi: this.cameraApi,
|
|
3704
3750
|
cameraPositionApi: this.cameraPositionApi,
|
|
@@ -3733,9 +3779,9 @@ class bo {
|
|
|
3733
3779
|
origin: "control"
|
|
3734
3780
|
});
|
|
3735
3781
|
}
|
|
3736
|
-
|
|
3782
|
+
// Wire the inbound viewer protocol to the facades.
|
|
3737
3783
|
wireIncomingMessages() {
|
|
3738
|
-
|
|
3784
|
+
fo({
|
|
3739
3785
|
messenger: this.messenger,
|
|
3740
3786
|
attributes: this.attributes,
|
|
3741
3787
|
selectable: this.selectableState,
|
|
@@ -3764,22 +3810,22 @@ class bo {
|
|
|
3764
3810
|
}
|
|
3765
3811
|
});
|
|
3766
3812
|
}
|
|
3767
|
-
|
|
3813
|
+
// Store the resolved app and notify every registered `onAppResolved` callback.
|
|
3768
3814
|
handleAppResolved(t) {
|
|
3769
3815
|
this.resolvedApp = t;
|
|
3770
3816
|
for (const e of this.appResolvedCallbacks)
|
|
3771
3817
|
e(t);
|
|
3772
3818
|
}
|
|
3773
|
-
|
|
3819
|
+
// Store the tracking session id and hand it to the AR flow, which waits on it for the QR.
|
|
3774
3820
|
handleSession(t) {
|
|
3775
3821
|
this.viewerSessionId = t, this.arActivation?.onSession(t);
|
|
3776
3822
|
}
|
|
3777
|
-
|
|
3823
|
+
// Forward a failed mutation to every registered `onMutationFailed` callback.
|
|
3778
3824
|
notifyMutationFailed(t, e) {
|
|
3779
3825
|
for (const i of this.mutationFailedCallbacks)
|
|
3780
3826
|
i({ attribute: t, value: e });
|
|
3781
3827
|
}
|
|
3782
|
-
|
|
3828
|
+
// Flush the queued `onReady` callbacks once, then let the standard interface know.
|
|
3783
3829
|
notifyReady() {
|
|
3784
3830
|
const t = this.readyCallbacks;
|
|
3785
3831
|
this.readyCallbacks = [];
|
|
@@ -3787,39 +3833,35 @@ class bo {
|
|
|
3787
3833
|
e(this);
|
|
3788
3834
|
this.ui.onReady();
|
|
3789
3835
|
}
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
* react to focus without registering an `onChange` callback.
|
|
3793
|
-
*/
|
|
3836
|
+
// Dispatch a bubbling `vd:focus-change` event on the container so a page can
|
|
3837
|
+
// react to focus without registering an `onChange` callback.
|
|
3794
3838
|
dispatchFocusChange(t) {
|
|
3795
3839
|
this.container?.dispatchEvent(
|
|
3796
3840
|
new CustomEvent(T.FOCUS_CHANGE, { detail: t, bubbles: !0 })
|
|
3797
3841
|
);
|
|
3798
3842
|
}
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
* page or tag manager can react to price changes without a client callback.
|
|
3802
|
-
*/
|
|
3843
|
+
// Dispatch a bubbling `vd:configuration-change` event on the container so a
|
|
3844
|
+
// page or tag manager can react to price changes without a client callback.
|
|
3803
3845
|
dispatchConfigurationChange(t) {
|
|
3804
3846
|
this.container?.dispatchEvent(
|
|
3805
3847
|
new CustomEvent(T.CONFIGURATION_CHANGE, { detail: t ?? null, bubbles: !0 })
|
|
3806
3848
|
);
|
|
3807
3849
|
}
|
|
3808
|
-
|
|
3850
|
+
// Dispatch a bubbling `vd:configuration-submit` event when the CTA is used.
|
|
3809
3851
|
dispatchConfigurationSubmit(t) {
|
|
3810
3852
|
this.container?.dispatchEvent(
|
|
3811
3853
|
new CustomEvent(T.CONFIGURATION_SUBMIT, { detail: t, bubbles: !0 })
|
|
3812
3854
|
);
|
|
3813
3855
|
}
|
|
3814
3856
|
handleConfig(t) {
|
|
3815
|
-
const e = t.viewerSettings, i =
|
|
3857
|
+
const e = t.viewerSettings, i = vo(this.options.viewerSettings);
|
|
3816
3858
|
if (e !== void 0 || i !== void 0) {
|
|
3817
3859
|
const o = i !== void 0 ? { ...e ?? {}, ...i } : e;
|
|
3818
3860
|
if (i !== void 0 && e !== void 0) {
|
|
3819
3861
|
const s = Object.entries(i).filter(([r, a]) => e[r] !== a).map(
|
|
3820
3862
|
([r, a]) => `${r} (metadata: ${e[r] ?? "undefined"}, override: ${a})`
|
|
3821
3863
|
);
|
|
3822
|
-
s.length > 0 &&
|
|
3864
|
+
s.length > 0 && w.warn(`Viewer settings override active: ${s.join(", ")}`);
|
|
3823
3865
|
}
|
|
3824
3866
|
this.ui.applyViewerSettings(o), this.echoAnnotationsDifference(e?.annotations, o.annotations);
|
|
3825
3867
|
}
|
|
@@ -3828,24 +3870,22 @@ class bo {
|
|
|
3828
3870
|
// The viewer already applied the announced mode itself, so speaking up when
|
|
3829
3871
|
// the merged mode matches would toggle it back and forth for nothing. A boot
|
|
3830
3872
|
// without overrides therefore sends no toggle at all.
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
* from the one it announced.
|
|
3834
|
-
*/
|
|
3873
|
+
// Tell the viewer about the annotation mode only when the merged mode differs
|
|
3874
|
+
// from the one it announced.
|
|
3835
3875
|
echoAnnotationsDifference(t, e) {
|
|
3836
3876
|
e === void 0 || e === t || this.annotationsApi.setEnabled(e === "show" || e === "toggle-shown");
|
|
3837
3877
|
}
|
|
3838
|
-
|
|
3878
|
+
// Tell the viewer the user entered fullscreen, so it records the engagement.
|
|
3839
3879
|
trackFullscreen() {
|
|
3840
3880
|
this.messenger.send({ type: c.FULLSCREEN });
|
|
3841
3881
|
}
|
|
3842
3882
|
initializeLogging() {
|
|
3843
|
-
this.options.debug === !0 &&
|
|
3883
|
+
this.options.debug === !0 && me(), w.info("Initializing Virtualdisplay client", {
|
|
3844
3884
|
...this.options.app === void 0 ? { model: this.options.model } : { app: this.options.app }
|
|
3845
3885
|
});
|
|
3846
3886
|
}
|
|
3847
3887
|
createAndConnectIframe() {
|
|
3848
|
-
const e = new
|
|
3888
|
+
const e = new mo(this.options, this.serverHost, this.iframeParams).create();
|
|
3849
3889
|
this.container = e.container, this.iframe = e.iframe, this.eventBus.attach(this.container), this.ui.attach(this.container);
|
|
3850
3890
|
try {
|
|
3851
3891
|
const i = new URL(this.iframe.src).origin;
|
|
@@ -3942,15 +3982,15 @@ class bo {
|
|
|
3942
3982
|
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;
|
|
3943
3983
|
}
|
|
3944
3984
|
}
|
|
3945
|
-
const
|
|
3946
|
-
function
|
|
3947
|
-
const t = new URL(`https://${
|
|
3985
|
+
const wo = "ar.virtualdisplay.io";
|
|
3986
|
+
function So(n) {
|
|
3987
|
+
const t = new URL(`https://${wo}/go`);
|
|
3948
3988
|
return n.sessionId !== void 0 ? t.searchParams.set("session", n.sessionId) : n.app !== void 0 ? t.searchParams.set("app", n.app) : n.license !== void 0 && n.model !== void 0 && (t.searchParams.set("license", n.license), t.searchParams.set("model", n.model)), t.toString();
|
|
3949
3989
|
}
|
|
3950
|
-
const
|
|
3951
|
-
class
|
|
3990
|
+
const _o = 1500;
|
|
3991
|
+
class ko {
|
|
3952
3992
|
options;
|
|
3953
|
-
qrModal = new
|
|
3993
|
+
qrModal = new Pi();
|
|
3954
3994
|
/** The viewer's tracking session id, once the engine announces it (SESSION). */
|
|
3955
3995
|
sessionId;
|
|
3956
3996
|
/** Callbacks waiting on the SESSION message, resolved (or timed out) exactly once each. */
|
|
@@ -3972,7 +4012,7 @@ class So {
|
|
|
3972
4012
|
}
|
|
3973
4013
|
/** The AR button handler: mobile activates AR in the engine, desktop shows the hand-off QR. */
|
|
3974
4014
|
activate() {
|
|
3975
|
-
if (
|
|
4015
|
+
if (he()) {
|
|
3976
4016
|
this.options.send({ type: c.AR_ACTIVATE });
|
|
3977
4017
|
return;
|
|
3978
4018
|
}
|
|
@@ -3996,7 +4036,7 @@ class So {
|
|
|
3996
4036
|
const t = await this.waitForSessionId();
|
|
3997
4037
|
if (this.destroyed)
|
|
3998
4038
|
return;
|
|
3999
|
-
const e =
|
|
4039
|
+
const e = So({
|
|
4000
4040
|
sessionId: t,
|
|
4001
4041
|
app: this.options.app,
|
|
4002
4042
|
license: this.options.license,
|
|
@@ -4018,14 +4058,14 @@ class So {
|
|
|
4018
4058
|
return this.sessionId !== void 0 ? Promise.resolve(this.sessionId) : new Promise((t) => {
|
|
4019
4059
|
const e = setTimeout(() => {
|
|
4020
4060
|
this.pendingTimers.delete(e), t(void 0);
|
|
4021
|
-
},
|
|
4061
|
+
}, _o);
|
|
4022
4062
|
this.pendingTimers.add(e), this.waiters.push((i) => {
|
|
4023
4063
|
this.pendingTimers.delete(e), clearTimeout(e), t(i);
|
|
4024
4064
|
});
|
|
4025
4065
|
});
|
|
4026
4066
|
}
|
|
4027
4067
|
}
|
|
4028
|
-
class
|
|
4068
|
+
class Co {
|
|
4029
4069
|
callbacks = [];
|
|
4030
4070
|
lastKnown;
|
|
4031
4071
|
handleSync(t) {
|
|
@@ -4037,12 +4077,12 @@ class ko {
|
|
|
4037
4077
|
this.callbacks.push(t), this.lastKnown !== void 0 && t(this.lastKnown);
|
|
4038
4078
|
}
|
|
4039
4079
|
}
|
|
4040
|
-
class
|
|
4080
|
+
class xo extends yo {
|
|
4041
4081
|
syncStatusTracker;
|
|
4042
4082
|
constructor(t) {
|
|
4043
|
-
const e = new
|
|
4083
|
+
const e = new Co();
|
|
4044
4084
|
super(t, {
|
|
4045
|
-
createArActivation: (i) => new
|
|
4085
|
+
createArActivation: (i) => new ko({
|
|
4046
4086
|
app: t.app,
|
|
4047
4087
|
license: t.license,
|
|
4048
4088
|
model: t.model,
|
|
@@ -4057,19 +4097,21 @@ class Ao extends bo {
|
|
|
4057
4097
|
}
|
|
4058
4098
|
}
|
|
4059
4099
|
export {
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4100
|
+
Ot as AVAILABILITY,
|
|
4101
|
+
Qt as Annotations,
|
|
4102
|
+
Kt as Attribute,
|
|
4103
|
+
Yt as AttributeValue,
|
|
4104
|
+
be as Camera,
|
|
4105
|
+
ve as CameraPosition,
|
|
4106
|
+
Se as Configuration,
|
|
4065
4107
|
A as ERROR_CODES,
|
|
4066
|
-
|
|
4108
|
+
_e as Focus,
|
|
4067
4109
|
ke as Photo,
|
|
4068
4110
|
Ce as Snapshot,
|
|
4069
4111
|
T as VD_EVENTS,
|
|
4070
|
-
|
|
4112
|
+
xo as VirtualdisplayClient,
|
|
4071
4113
|
y as VirtualdisplayError,
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4114
|
+
me as enableDebugMode,
|
|
4115
|
+
Ao as isDebugMode,
|
|
4116
|
+
w as logger
|
|
4075
4117
|
};
|