@primestyleai/tryon 5.10.129 → 5.10.131
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/dist/react/index.js +818 -796
- package/dist/react/index.js.map +1 -1
- package/dist/storefront/primestyle-tryon.js +26 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { P as
|
|
2
|
+
import { P as Rg, L as Yg, b as Ut, d as eg, a as Do, c as Jt, A as Kt, S as St, i as jt } from "../index-RlA_0mKn.js";
|
|
3
3
|
import { jsxs as e, jsx as A, Fragment as eA } from "react/jsx-runtime";
|
|
4
|
-
import { useState as Q, useRef as QA, useCallback as IA, useEffect as
|
|
4
|
+
import { useState as Q, useRef as QA, useCallback as IA, useEffect as HA, useMemo as xe } from "react";
|
|
5
5
|
import { createPortal as hg } from "react-dom";
|
|
6
|
-
const Rt = "primestyle-photos",
|
|
6
|
+
const Rt = "primestyle-photos", go = "photos", Tt = 1;
|
|
7
7
|
let Ro = null;
|
|
8
8
|
function vg() {
|
|
9
9
|
return Ro || (Ro = new Promise((o) => {
|
|
@@ -12,7 +12,7 @@ function vg() {
|
|
|
12
12
|
const g = indexedDB.open(Rt, Tt);
|
|
13
13
|
g.onupgradeneeded = () => {
|
|
14
14
|
const t = g.result;
|
|
15
|
-
t.objectStoreNames.contains(
|
|
15
|
+
t.objectStoreNames.contains(go) || t.createObjectStore(go);
|
|
16
16
|
}, g.onsuccess = () => o(g.result), g.onerror = () => o(null), g.onblocked = () => o(null);
|
|
17
17
|
} catch {
|
|
18
18
|
o(null);
|
|
@@ -20,22 +20,22 @@ function vg() {
|
|
|
20
20
|
}), Ro);
|
|
21
21
|
}
|
|
22
22
|
const Eg = "result-";
|
|
23
|
-
async function
|
|
23
|
+
async function Tg(o, g) {
|
|
24
24
|
const t = await vg();
|
|
25
25
|
return t ? new Promise((r) => {
|
|
26
26
|
try {
|
|
27
|
-
const a = t.transaction(
|
|
28
|
-
a.objectStore(
|
|
27
|
+
const a = t.transaction(go, "readwrite");
|
|
28
|
+
a.objectStore(go).put(g, o), a.oncomplete = () => r(!0), a.onerror = () => r(!1), a.onabort = () => r(!1);
|
|
29
29
|
} catch {
|
|
30
30
|
r(!1);
|
|
31
31
|
}
|
|
32
32
|
}) : !1;
|
|
33
33
|
}
|
|
34
|
-
async function
|
|
34
|
+
async function Xg(o) {
|
|
35
35
|
const g = await vg();
|
|
36
36
|
return g ? new Promise((t) => {
|
|
37
37
|
try {
|
|
38
|
-
const a = g.transaction(
|
|
38
|
+
const a = g.transaction(go, "readonly").objectStore(go).get(o);
|
|
39
39
|
a.onsuccess = () => t(a.result instanceof Blob ? a.result : null), a.onerror = () => t(null);
|
|
40
40
|
} catch {
|
|
41
41
|
t(null);
|
|
@@ -43,10 +43,10 @@ async function Tg(o) {
|
|
|
43
43
|
}) : null;
|
|
44
44
|
}
|
|
45
45
|
async function Xt(o, g) {
|
|
46
|
-
return
|
|
46
|
+
return Tg(Eg + o, g);
|
|
47
47
|
}
|
|
48
48
|
async function Wt(o) {
|
|
49
|
-
return
|
|
49
|
+
return Xg(Eg + o);
|
|
50
50
|
}
|
|
51
51
|
async function Vt(o) {
|
|
52
52
|
const g = await vg();
|
|
@@ -56,7 +56,7 @@ async function Vt(o) {
|
|
|
56
56
|
t.add(r), t.add(Eg + r);
|
|
57
57
|
return new Promise((r) => {
|
|
58
58
|
try {
|
|
59
|
-
const a = g.transaction(
|
|
59
|
+
const a = g.transaction(go, "readwrite"), n = a.objectStore(go).openCursor();
|
|
60
60
|
n.onsuccess = () => {
|
|
61
61
|
const w = n.result;
|
|
62
62
|
if (!w) return;
|
|
@@ -68,9 +68,9 @@ async function Vt(o) {
|
|
|
68
68
|
}
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
const
|
|
71
|
+
const Wg = 11, Vg = 12, qt = 13, Zt = 14, $t = 15, _t = 16, qg = 23, Zg = 24, An = 25, en = 26, on = 27, gn = 28, tn = 0;
|
|
72
72
|
let Ag = null, To = null;
|
|
73
|
-
async function
|
|
73
|
+
async function $g() {
|
|
74
74
|
if (!Ag)
|
|
75
75
|
return To || (To = (async () => {
|
|
76
76
|
const o = await import(
|
|
@@ -92,11 +92,11 @@ async function Zg() {
|
|
|
92
92
|
}
|
|
93
93
|
async function _o(o) {
|
|
94
94
|
try {
|
|
95
|
-
await
|
|
96
|
-
const g = await
|
|
95
|
+
await $g();
|
|
96
|
+
const g = await _g(o), t = Ag.detect(g);
|
|
97
97
|
if (!t?.landmarks?.length || t.landmarks[0].length < 25)
|
|
98
98
|
return null;
|
|
99
|
-
const r = t.landmarks[0], a = r[
|
|
99
|
+
const r = t.landmarks[0], a = r[Wg], c = r[Vg], n = r[qg], w = r[Zg], s = (a.y + c.y) / 2, l = (n.y + w.y) / 2, D = l - s, d = s + D * 0.28, u = Math.abs(c.x - a.x), m = Math.min(a.x, c.x) - u * 0.05, M = Math.max(a.x, c.x) + u * 0.05, L = Math.abs(w.x - n.x), Y = Math.min(n.x, w.x) - L * 0.15, h = Math.max(n.x, w.x) + L * 0.15, C = d + (l - d) * 0.55, W = u * 0.85, Z = (a.x + c.x + n.x + w.x) / 4, i = Z - W / 2, b = Z + W / 2;
|
|
100
100
|
return {
|
|
101
101
|
chest: { y: d, x1: m, x2: M },
|
|
102
102
|
waist: { y: C, x1: i, x2: b },
|
|
@@ -106,7 +106,7 @@ async function _o(o) {
|
|
|
106
106
|
return console.error("[PS-SDK] Pose detection failed:", g), null;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
function
|
|
109
|
+
function _g(o) {
|
|
110
110
|
return new Promise((g, t) => {
|
|
111
111
|
const r = new Image();
|
|
112
112
|
r.crossOrigin = "anonymous", r.onload = () => g(r), r.onerror = () => {
|
|
@@ -125,9 +125,9 @@ async function nn(o, g = 1024) {
|
|
|
125
125
|
}
|
|
126
126
|
async function Bo(o) {
|
|
127
127
|
try {
|
|
128
|
-
await
|
|
128
|
+
await $g();
|
|
129
129
|
let g;
|
|
130
|
-
typeof o == "string" ? g = await
|
|
130
|
+
typeof o == "string" ? g = await _g(o) : g = o;
|
|
131
131
|
const t = await nn(g, 1024), r = t.width || g.naturalWidth || g.width, a = t.height || g.naturalHeight || g.height, c = Ag.detect(t);
|
|
132
132
|
if (!c?.landmarks?.length || c.landmarks[0].length < 29)
|
|
133
133
|
return console.warn("[PS-SDK:MediaPipe] detection returned no usable landmarks", {
|
|
@@ -138,10 +138,10 @@ async function Bo(o) {
|
|
|
138
138
|
const Y = L && w ? w[M] : n[M], h = { x: Y.x, y: Y.y };
|
|
139
139
|
return typeof Y.z == "number" && (h.z = Y.z), typeof Y.visibility == "number" && (h.visibility = Y.visibility), h;
|
|
140
140
|
}, l = {
|
|
141
|
-
leftShoulder: s(
|
|
142
|
-
rightShoulder: s(
|
|
143
|
-
leftHip: s(
|
|
144
|
-
rightHip: s(
|
|
141
|
+
leftShoulder: s(Wg),
|
|
142
|
+
rightShoulder: s(Vg),
|
|
143
|
+
leftHip: s(qg),
|
|
144
|
+
rightHip: s(Zg),
|
|
145
145
|
leftElbow: s(qt),
|
|
146
146
|
rightElbow: s(Zt),
|
|
147
147
|
leftWrist: s($t),
|
|
@@ -184,7 +184,7 @@ const ke = {
|
|
|
184
184
|
chin: 152,
|
|
185
185
|
leftMouth: 61,
|
|
186
186
|
rightMouth: 291
|
|
187
|
-
},
|
|
187
|
+
}, Gg = 11.7;
|
|
188
188
|
let Dg = null, Mo = null;
|
|
189
189
|
async function rn() {
|
|
190
190
|
if (Dg) {
|
|
@@ -240,7 +240,7 @@ function sn(o) {
|
|
|
240
240
|
}, r.src = o;
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
|
-
function
|
|
243
|
+
function Lg(o, g, t) {
|
|
244
244
|
if (o.length < 4) return 0;
|
|
245
245
|
const r = (D) => ({ x: D.x * g, y: D.y * t }), [a, c, n, w] = o.map(r), s = Math.hypot(a.x - n.x, a.y - n.y), l = Math.hypot(c.x - w.x, c.y - w.y);
|
|
246
246
|
return (s + l) / 2;
|
|
@@ -269,16 +269,16 @@ function an(o) {
|
|
|
269
269
|
};
|
|
270
270
|
}
|
|
271
271
|
function Bn(o, g, t) {
|
|
272
|
-
const r =
|
|
272
|
+
const r = Lg(o.leftIrisRing, g, t), a = Lg(o.rightIrisRing, g, t), c = (r + a) / 2;
|
|
273
273
|
let n = 1;
|
|
274
274
|
c < 8 ? n = 0.3 : Math.abs(r - a) / c > 0.3 ? n = 0.5 : Math.abs(r - a) / c > 0.15 && (n = 0.8);
|
|
275
|
-
const w = c > 0 ?
|
|
275
|
+
const w = c > 0 ? Gg / c : 0, s = (v, F) => Math.hypot(
|
|
276
276
|
(v.x - F.x) * g,
|
|
277
277
|
(v.y - F.y) * t
|
|
278
278
|
) * w, l = s(o.leftIrisCenter, o.rightIrisCenter), d = s(o.leftInnerEye, o.rightInnerEye) / 1.6, u = s(o.leftTragus, o.rightTragus), m = s(o.leftTragus, o.leftOuterEye), M = s(o.rightTragus, o.rightOuterEye), L = (m + M) / 2, Y = u * 1.07, C = Math.abs((o.forehead.z ?? 0) - (o.chin.z ?? 0)) * g * w, W = Math.max(170, Math.min(210, C || 190)), Z = Y / 2, i = W / 2, b = Math.PI * Math.sqrt(2 * (Z * Z + i * i));
|
|
279
279
|
return {
|
|
280
280
|
measurements: {
|
|
281
|
-
irisDiameter:
|
|
281
|
+
irisDiameter: Gg,
|
|
282
282
|
pd: Ve(l),
|
|
283
283
|
bridgeWidth: Ve(d),
|
|
284
284
|
faceWidth: Ve(u),
|
|
@@ -405,8 +405,8 @@ const fn = [
|
|
|
405
405
|
{ key: "sleeveLength", label: "Sleeve", required: !1, unit: "cm", placeholder: "e.g. 64", category: "body" },
|
|
406
406
|
{ key: "inseam", label: "Inseam", required: !1, unit: "cm", placeholder: "e.g. 81", category: "body" },
|
|
407
407
|
{ key: "footLengthCm", label: "Foot length", required: !1, unit: "cm", placeholder: "e.g. 27", category: "shoe" }
|
|
408
|
-
], vn = 3,
|
|
409
|
-
function
|
|
408
|
+
], vn = 3, At = "primestyle_", et = "profiles", ot = "active_profile_id", Go = "ps:storage-change";
|
|
409
|
+
function gt(o) {
|
|
410
410
|
if (!(typeof window > "u"))
|
|
411
411
|
try {
|
|
412
412
|
window.dispatchEvent(new CustomEvent(Go, { detail: { reason: o } }));
|
|
@@ -416,29 +416,29 @@ function ot(o) {
|
|
|
416
416
|
function Je(o, g) {
|
|
417
417
|
if (typeof window > "u") return g;
|
|
418
418
|
try {
|
|
419
|
-
const t = localStorage.getItem(
|
|
419
|
+
const t = localStorage.getItem(At + o);
|
|
420
420
|
return t ? JSON.parse(t) : g;
|
|
421
421
|
} catch {
|
|
422
422
|
return g;
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
-
function
|
|
425
|
+
function ao(o, g) {
|
|
426
426
|
try {
|
|
427
|
-
localStorage.setItem(
|
|
427
|
+
localStorage.setItem(At + o, JSON.stringify(g));
|
|
428
428
|
} catch {
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
431
|
function Ig() {
|
|
432
|
-
return Je(
|
|
432
|
+
return Je(et, []);
|
|
433
433
|
}
|
|
434
|
-
function
|
|
435
|
-
|
|
434
|
+
function ug(o) {
|
|
435
|
+
ao(et, o), gt("profiles");
|
|
436
436
|
}
|
|
437
437
|
function tt() {
|
|
438
|
-
return Je(
|
|
438
|
+
return Je(ot, null);
|
|
439
439
|
}
|
|
440
440
|
function En(o) {
|
|
441
|
-
|
|
441
|
+
ao(ot, o), gt("active-profile");
|
|
442
442
|
}
|
|
443
443
|
function In() {
|
|
444
444
|
const o = Ig();
|
|
@@ -456,7 +456,7 @@ function nt(o, g) {
|
|
|
456
456
|
const t = Ig(), r = t.findIndex((c) => c.id === o);
|
|
457
457
|
if (r < 0) return null;
|
|
458
458
|
const a = { ...t[r], ...g, lastEditedAt: Date.now() };
|
|
459
|
-
return t[r] = a,
|
|
459
|
+
return t[r] = a, ug(t), a;
|
|
460
460
|
}
|
|
461
461
|
function Bg(o, g, t = "cm") {
|
|
462
462
|
return nt(o, { measurements: g, measurementsUnit: t });
|
|
@@ -473,7 +473,7 @@ function rt(o, g) {
|
|
|
473
473
|
...a,
|
|
474
474
|
sizeHistory: n,
|
|
475
475
|
lastUsedAt: Date.now()
|
|
476
|
-
},
|
|
476
|
+
}, ug(t), t[r];
|
|
477
477
|
}
|
|
478
478
|
function un(o, g) {
|
|
479
479
|
if (!o.sizeHistory || o.sizeHistory.length === 0) return null;
|
|
@@ -501,7 +501,7 @@ function Re() {
|
|
|
501
501
|
o = process.env.NEXT_PUBLIC_PRIMESTYLE_API_KEY ?? "";
|
|
502
502
|
} catch {
|
|
503
503
|
}
|
|
504
|
-
if (!o) throw new
|
|
504
|
+
if (!o) throw new Rg("Missing NEXT_PUBLIC_PRIMESTYLE_API_KEY", "MISSING_API_KEY");
|
|
505
505
|
return o;
|
|
506
506
|
}
|
|
507
507
|
function je(o) {
|
|
@@ -667,7 +667,7 @@ async function it(o) {
|
|
|
667
667
|
found: s.found
|
|
668
668
|
};
|
|
669
669
|
}
|
|
670
|
-
async function
|
|
670
|
+
async function Og(o) {
|
|
671
671
|
let g;
|
|
672
672
|
try {
|
|
673
673
|
g = o.apiKey ?? Re();
|
|
@@ -758,7 +758,7 @@ function st(o) {
|
|
|
758
758
|
function Xe(o) {
|
|
759
759
|
return o === "in" || o === "inches" || o === "lbs" ? "Imperial" : o === "cm" || o === "kg" ? "Metric" : o === "mm" ? "mm" : "";
|
|
760
760
|
}
|
|
761
|
-
const
|
|
761
|
+
const zg = /* @__PURE__ */ new Map();
|
|
762
762
|
function qe(o, g) {
|
|
763
763
|
const t = o[g];
|
|
764
764
|
return t && typeof t == "object" && typeof t.x == "number" && typeof t.y == "number" ? t : null;
|
|
@@ -786,7 +786,7 @@ async function Mn(o) {
|
|
|
786
786
|
async function yn(o) {
|
|
787
787
|
if (!o || !o.length) return null;
|
|
788
788
|
if (o.length === 1) return o[0];
|
|
789
|
-
const g = o.join("|"), t =
|
|
789
|
+
const g = o.join("|"), t = zg.get(g);
|
|
790
790
|
if (t) return t;
|
|
791
791
|
const r = Date.now(), a = await Promise.all(o.map(async (n) => ({
|
|
792
792
|
url: n,
|
|
@@ -794,7 +794,7 @@ async function yn(o) {
|
|
|
794
794
|
})));
|
|
795
795
|
a.sort((n, w) => w.score - n.score);
|
|
796
796
|
const c = (a[0]?.score ?? 0) > 0 ? a[0].url : o[0];
|
|
797
|
-
|
|
797
|
+
zg.set(g, c), console.log(`[ps-sdk:garment-pick] ${Date.now() - r}ms — chose ${o.indexOf(c)}/${o.length}`);
|
|
798
798
|
for (const n of a) console.log(`[ps-sdk:garment-pick] ${n.score.toString().padStart(4, " ")} ${n.url}`);
|
|
799
799
|
return c;
|
|
800
800
|
}
|
|
@@ -8448,7 +8448,7 @@ const Fn = `
|
|
|
8448
8448
|
.ps-photo-zone-error { font-size: 11px; padding: 8px 10px; border-radius: 8px; }
|
|
8449
8449
|
}
|
|
8450
8450
|
`;
|
|
8451
|
-
function
|
|
8451
|
+
function oo({ size: o = 18 }) {
|
|
8452
8452
|
return /* @__PURE__ */ e("svg", { width: o, height: o, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8453
8453
|
/* @__PURE__ */ A("path", { d: "M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z" }),
|
|
8454
8454
|
/* @__PURE__ */ A("circle", { cx: "12", cy: "13", r: "4" })
|
|
@@ -8480,7 +8480,7 @@ function Yn() {
|
|
|
8480
8480
|
function Yo() {
|
|
8481
8481
|
return /* @__PURE__ */ A("svg", { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ A("path", { d: "M5 12h14M12 5l7 7-7 7" }) });
|
|
8482
8482
|
}
|
|
8483
|
-
function
|
|
8483
|
+
function mg({ size: o = 16 }) {
|
|
8484
8484
|
return /* @__PURE__ */ e("svg", { width: o, height: o, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8485
8485
|
/* @__PURE__ */ A("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
|
|
8486
8486
|
/* @__PURE__ */ A("circle", { cx: "12", cy: "7", r: "4" })
|
|
@@ -8501,7 +8501,7 @@ function Ln({ size: o = 18 }) {
|
|
|
8501
8501
|
/* @__PURE__ */ A("path", { d: "m17.5 15.5 2-2" })
|
|
8502
8502
|
] });
|
|
8503
8503
|
}
|
|
8504
|
-
function
|
|
8504
|
+
function Pg({ size: o = 18 }) {
|
|
8505
8505
|
return /* @__PURE__ */ A("svg", { width: o, height: o, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ A("path", { d: "m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z" }) });
|
|
8506
8506
|
}
|
|
8507
8507
|
function On({ size: o = 14 }) {
|
|
@@ -8527,12 +8527,12 @@ function Jn({ view: o, stepIndex: g }) {
|
|
|
8527
8527
|
return o === "error" || o === "idle" ? null : /* @__PURE__ */ A("div", { className: "ps-tryon-dots", children: Array.from({ length: vn }, (t, r) => r + 1).map((t) => /* @__PURE__ */ A("div", { className: `ps-tryon-dot${t < g ? " ps-done" : t === g ? " ps-active" : ""}` }, t)) });
|
|
8528
8528
|
}
|
|
8529
8529
|
function Kn({ activeLocale: o, onSelect: g }) {
|
|
8530
|
-
const [t, r] = Q(!1), a = QA(null), c = QA(null), [n, w] = Q({ top: 0, right: 0 }), s =
|
|
8530
|
+
const [t, r] = Q(!1), a = QA(null), c = QA(null), [n, w] = Q({ top: 0, right: 0 }), s = Yg[o] || "English", l = IA(() => {
|
|
8531
8531
|
if (!a.current) return;
|
|
8532
8532
|
const D = a.current.getBoundingClientRect();
|
|
8533
8533
|
w({ top: D.bottom + 4, right: window.innerWidth - D.right });
|
|
8534
8534
|
}, []);
|
|
8535
|
-
return
|
|
8535
|
+
return HA(() => {
|
|
8536
8536
|
if (!t) return;
|
|
8537
8537
|
l();
|
|
8538
8538
|
const D = (d) => {
|
|
@@ -8578,7 +8578,7 @@ function Kn({ activeLocale: o, onSelect: g }) {
|
|
|
8578
8578
|
g(D), r(!1);
|
|
8579
8579
|
},
|
|
8580
8580
|
children: [
|
|
8581
|
-
/* @__PURE__ */ A("span", { className: "ps-tryon-lang-name", children:
|
|
8581
|
+
/* @__PURE__ */ A("span", { className: "ps-tryon-lang-name", children: Yg[D] || D }),
|
|
8582
8582
|
/* @__PURE__ */ A("span", { className: "ps-tryon-lang-code", children: D.toUpperCase() }),
|
|
8583
8583
|
D === o && /* @__PURE__ */ A("span", { className: "ps-tryon-lang-check", children: /* @__PURE__ */ A(Nn, { size: 12 }) })
|
|
8584
8584
|
]
|
|
@@ -8751,7 +8751,7 @@ function Rn({
|
|
|
8751
8751
|
t.length === 0 ? /* @__PURE__ */ A("div", { className: "ps-tryon-drawer-empty", children: s("No saved profiles yet.") }) : t.map((m) => /* @__PURE__ */ e("div", { className: "ps-tryon-profile-item", onClick: () => {
|
|
8752
8752
|
n(m), g(null);
|
|
8753
8753
|
}, children: [
|
|
8754
|
-
/* @__PURE__ */ A("div", { className: "ps-tryon-profile-avatar", children: /* @__PURE__ */ A(
|
|
8754
|
+
/* @__PURE__ */ A("div", { className: "ps-tryon-profile-avatar", children: /* @__PURE__ */ A(mg, { size: 20 }) }),
|
|
8755
8755
|
/* @__PURE__ */ e("div", { className: "ps-tryon-profile-info", children: [
|
|
8756
8756
|
/* @__PURE__ */ A("div", { className: "ps-tryon-profile-name", children: m.name }),
|
|
8757
8757
|
/* @__PURE__ */ e("div", { className: "ps-tryon-profile-detail", children: [
|
|
@@ -8800,7 +8800,7 @@ function Tn({
|
|
|
8800
8800
|
setActiveProfileId: a,
|
|
8801
8801
|
t: c
|
|
8802
8802
|
}) {
|
|
8803
|
-
if (
|
|
8803
|
+
if (HA(() => {
|
|
8804
8804
|
if (!o || typeof document > "u") return;
|
|
8805
8805
|
const s = document.body.style.overflow;
|
|
8806
8806
|
return document.body.style.overflow = "hidden", () => {
|
|
@@ -8934,14 +8934,14 @@ function Wn({
|
|
|
8934
8934
|
/* @__PURE__ */ e("div", { className: "ps-tryon-welcome-hero", children: [
|
|
8935
8935
|
o && /* @__PURE__ */ e("div", { className: "ps-tryon-welcome-img-wrap", children: [
|
|
8936
8936
|
/* @__PURE__ */ A("img", { src: o, alt: t("Product"), className: "ps-tryon-welcome-product" }),
|
|
8937
|
-
/* @__PURE__ */ A("div", { className: "ps-tryon-welcome-sparkle", children: /* @__PURE__ */ A(
|
|
8937
|
+
/* @__PURE__ */ A("div", { className: "ps-tryon-welcome-sparkle", children: /* @__PURE__ */ A(Pg, { size: 20 }) })
|
|
8938
8938
|
] }),
|
|
8939
8939
|
/* @__PURE__ */ A("h2", { className: "ps-tryon-welcome-title", children: t("Find Your Size & See It On You") }),
|
|
8940
8940
|
/* @__PURE__ */ A("p", { className: "ps-tryon-welcome-sub", children: t("Get the perfect fit, then try it on virtually") })
|
|
8941
8941
|
] }),
|
|
8942
8942
|
/* @__PURE__ */ A("div", { className: "ps-tryon-features", children: [
|
|
8943
8943
|
{ icon: /* @__PURE__ */ A(Ln, { size: 22 }), title: t("Get Your Size"), desc: t("Instant fit recommendation") },
|
|
8944
|
-
{ icon: /* @__PURE__ */ A(
|
|
8944
|
+
{ icon: /* @__PURE__ */ A(oo, { size: 22 }), title: t("Try It On"), desc: t("See how it looks on you") }
|
|
8945
8945
|
].map((r, a) => /* @__PURE__ */ e("div", { className: "ps-tryon-feature", children: [
|
|
8946
8946
|
/* @__PURE__ */ A("div", { className: "ps-tryon-feature-icon", children: r.icon }),
|
|
8947
8947
|
/* @__PURE__ */ A("div", { className: "ps-tryon-feature-title", children: r.title }),
|
|
@@ -9025,7 +9025,7 @@ function Vn({
|
|
|
9025
9025
|
}
|
|
9026
9026
|
function qn(o) {
|
|
9027
9027
|
const [g, t] = Q(0);
|
|
9028
|
-
return
|
|
9028
|
+
return HA(() => {
|
|
9029
9029
|
if (o == null) {
|
|
9030
9030
|
t(0);
|
|
9031
9031
|
return;
|
|
@@ -9040,7 +9040,7 @@ function qn(o) {
|
|
|
9040
9040
|
const ct = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQcAAAMwCAMAAACqTCYrAAAAUVBMVEVMaXH///////98fX11d3loamr///9ydHX///9tb2/R0tLm5ub09PT9/f2bnJvy8/P6+vr7/Pxsbm6xsrKcnZ52eHiChITAwcHCw8OYmZne39+2r8rCAAAAG3RSTlMAGw7O/vUH/gH9lWpILMJ7VTflqtzs67+IpagnFTRrAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42uydh3rruLKsTVIkwSSKytL7P+jpACpZASBAefZZVfd+s8+sYMsa83cD3V31Y0xRGPMDQRD0z8qw8DZAEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARB0P+ADAnvAgRB/zgGAUIIgv55DIKEEASBgwAhBEHgIEgIQRA4CBBCEPTPcxAghCDoX8cgQAhBEDgIEEIQBA5CEASBgxAEQf80B0FCCILAQbwpEASBgxAEQeAgBEHQv8xBgBCCIHAQgiAIHIQgCAIHIQiCwEEIgqB/loMAIQRB4CAEQRA4CEEQBA5CEASBgxAEQeAgBEEQOAhBod9fRZGmCakjDbfiX+DfSNOiwPcd9F/jIL4hoQjfWAXRb2hXTd/X9eFw2G63e9Jut1uQdjv6v7esw6Gu66ZZrdqBkFjg2w8CB6H/B99TBMCuXTH9hH2LshpVWi3kn9VV5Y6pSEjs+9UgNMT7CIGD0P/ot1ORDA3zb78vL+hbOOhCxQXzsK5bhiHeUAgchP7XikBCIBGw9OHfbyAqDnf77aahgzJgCIGD0P/It1EyrOrNdv+MgKX95905uPpULMof3i039QoohP6Ig/jGgzxUJKuaGJjr/d8N+xR9eU6/lZfcGcmWotNJ/ifLqGtS0m9fLw8vf3eEYb5f1kOKb0joLziI7zvI/UTc1vsLx2wjxPKP2h/UKtkcm6YdZESG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", wt = "data:image/png;base64,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", lt = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQcAAAMwCAMAAACqTCYrAAAAZlBMVEVMaXF/gH9xcnH6+vr///91dnR2d3X///////97fHrBwsH09PR8fXuDhIP////+/v51dnX19fT///+qqqqPkI/y8/L+/v57fHvDxMOWlpXCw8La29qXl5emp6e7vLv8/Pzo6OjR0dGWd28/AAAAInRSTlMA/vlEFu/7AQX+l1z4zQwx5Iklx+1x3N2nsr2r0urhruHmQKeMwgAAAAlwSFlzAAAD6AAAA+gBtXtSawAAIABJREFUeNrs3QlD28iyBWAsqaXWvlmRN0z4/39yTrVsA8EGd8sDtnTqvTt3Zm4CxDhfqtW1PEUaEUk8MRgMxiwjooEMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYjCeW0JgiGpbSMBiMeTv4LviiMBiMuTtICBkMxswh5EvCYDBm7SBfDwaDMVsH+UIwGAzmg7SQwWDQQVLIYDDoIClkMBh0kBAyGAwySAoZDAYdpIQMBoMOEkIGg0EGKSGDwaCDlJDBYNBBQshgMOggJWQwGLNnkBAyGAw6SAoZDAYdpIQMBmPqDmpNChkMxqwd1Nc5SAkZDMZUHdT6agivwZCAMhiMBzwVWzkYsTmFwWDM3cGLpPFczWAwZuNg5Hz1zJecwWDc5y2JtYMRKxEZDMbcHYxYiMhgMOigG4N0kMFgTMXBf0CLIkLIYDBm5+B70SI6yGAwZung0bQoooMMBmOuDkbj0kgGg8GggwwGg3FHDl76f0LIYDBmnw9qQshgMObi4Okv7/9GMyFkMBhzygf1+Rzw5hzylWcwGHf6fPCzhUwIGQzG3M7F+kL+p2/8nJAvPYPBuDsH9Zl7Ee12T3JNDsmXnsFg3J+D+isEtUNKqOkgg8F4OAf1vwmdQ0J45UNFvvQMBuNO80F9+VRsmxJ+/WP50jMYjHsby/+xktr9CeG198t87RkMxn06qD88ETz3hPA65/T3qSNffAaDcVcOFm8JoT572aFdj8KaDjIYjId5PPjuYKw/ZIb/FFhf8YzwinSQDjIYjPt0UH9+Nqht8sJP+vGihMFgPIiDxYVSan1GxIu66a9+MiFkMBiPkA9q/fl65OM/6u900xaPFfnyMxiM+8sHD5fG//aW6KsaRSzTQTrIYDDuLB8s9L/xr2b6K9U+jWfQLCFkMBiP5OChbMb8/2cKz2L3ZR3hx/48PiBkMBiPkA9+TgfflVZrm5bi6xNCvvwMBuPe8kH9Lis85ob/lAT+o52+Jh0khAwG494hPOWDn8/FwwXyx/+LzlD4uedOs4SQwWA8lIOXTsVXrTXW39TOMB9kMBgPVTjz8VR8bp+nPndVoqPz98WaLcYMBuMxHCwGCaPP2aDWLuOn9bePEMkgg8G430Lqk4H/9ph8rpe59C+5qonBYDxkPvjhYPyBQ4tpq/rfFjzNYzGDwXiYfLDQ/wj48QnhpVOu/lQwra/NCvnqMxiMu8wHzzwl/DyBS1/7CJAKMhiMhxu89eE8fKZyRl8umNH/Eql5S8JgMB7tvvgzhe/HLegLN8NnzsFXVFHzpWcwGHc4gLCILrQYn7ke0V+O3LritMyXnsFg3OU9ycdLkuhD/aD+dpqM/r7VhA4yGIz7H0j93eytiwmhvlxSSAcZDMZj3JMU+mwt9cVTsUPlNBlkMBj3nw9+zAm/G7RwZizXldU0fOUZDMbdDSAs3oZSf7wwvjRwVZ9vLLmupJAvPIPBuOt88N8q6u+HbWkeix/5DfDb37h/PvL3nzH6f4LvBjpYnCbOXBhIHZ0braXPFBPykuRxvvs6CMrSfxelc/j3H19/xWUTaL4zOZj/0oaSa3TTVjkhX/Y7+eYHftK27fPz8Bf5b/P3l0N+kET7vMRflxLm78bF+I/w/acwX+nhF3E+2v0mbSjh7M/FxZmRW1pfVs+heJoO3heD3dIzEYaH/wrlP8c4/Ktw+Ovxf/I+/Jhxcfrs4U+Gd+FrCUOV+Jrvi9n3FxcfG4u/nzajz9fUsJXkIUKnLX7vx0MsfjjMZ4wXh8/745/+wtfUJwHfnrN9TH5U8Gz1zCUEz90XMx18pAjqzIv/CaEp/iF0Pn7im3y8735Q9s/PWXz89LFKGiaE83XwHYL/dpPoyyNlLvjHmpkHiWbrhfHCZIQDf/HiX5eyLFOISp3CO0To3TBOR+RbR3g42ofqeL4ffmnnBY5jb+3zCeGcHXzXUXJmT9P5s+6F+2Kmgw/yrS9XSAfDLKsMbueTKVxh7Pf7zWaVWIdcSeCvw9+tLt28rBCtCpX8uJWJfz6AwydOPv7E4RNt9hLPy3OZI16GMMziRRbmacE3KPPBM411V5VIW9wX8zW/l2+9nwA/1XZpKljkfaWO6dJHCpfPgLDGD5PKk6YJ3kdxKc78r8GlqHOv94Pim494/gM1x5Av7fh3piZmKI7BP/p+2tXb7RYILhf/HPtFQNXnayC8yeIsrGo6OO988KyFkdZnpis4b2Yig3fl4FocxBMxDVmECz9J1nmvzAHyxIVI4XkKWOQ7ZFVbgOiXxqtP3UZaa5de86LLvcoPvnqLfPpz17xfv6BVNIR/aV1vN5t2h1+V8j78sjJJAZXKd0liSgeDsl7iDwG15UXJvDe5F8cL44/n4simv5gMPtI3Ps3FwTQ4vRGEFhAiHu5yZZ6tvbtAQUjJSZYtdzh1IjsUPYyGH5qSrL/XkU7XXl4W1/yEDxJ+drA58tcd/FsuM1Mn8+GXIc8LsyzHL8KXX4E2nzgq0h1+mNoEvCiZsYOXuur0xUsS7VBATQbv6fve5fiNX3XFmf8JGWLjp4kkUrgj8cKPCWJsbMlQmozne0lqejGaw5n2PYXXfiGFn/pXHUc/JoQnBw/6AT8cfzdy/F0ujHZh/P7qR65KVNXneHgoKe0BwKd3VUS4KGnp4KwdLC6sMD5/Q6zZwPn4PXVJFcZhn+pL7wutj6dlc1z+eK48euiFqpITs9xvdF13TBM/ZIbXvAGvTwYPZ+LhKJ92B/02LfTL1OGCOH6v9nCwr8xTwOHrEwKjs49LvR0LZ2afDxafb4v1F4dhbeshX+y7cnClQESeRt/W2ReGnDcOvcOFazwUQJsDs6lSUcgRdyZHTIeHbsG7k3P05Se56jJP8r/jyVduNlo5+R70897VhB+yQFONgweb5hzvnwA8/7miBg4uQhzQ+d6Y8/PBc3NYI60vlMgwHXz473uxkfxnnUY2bxMcl3G3fMq8jhV474+eJpSQiHMzbpo3SBTTd0fnS4+d/z37HtO+Y+JnrnxR+SLHXtQ1nkoP408xVAwakxOjX6H192+/IMWfCzEurvne4PPBc2uaLk+U4U3x44YOzPOwxI9s80gZUuObWps2z83jw3MYHTgyx1SwtRyGMrQio6kRTFNJGs9HKqU8qxUMxVSE4WfiQ5zakc9+toN+lbnXTsxjS8B7DYBHB31xsOp4YcxJrF+dizWTwUk52Oy8xcJLysj5T0/JDn0hC8fTg1Phhx69j60bn2cbZIcYqFsuhn8682P/bf04XWCH8hkz0W/3/kBeWPh3ekH8pVwYr0q+VWfr4IXSwbd0UH+1opMMPmAUZR4uYi8dlf4MTw9Re7dXarmFiDvkVFlVHTK3dyU3p4vbfzqL36QLLyV68aefMRy8UfuSr9tdGPZb3H5IjXfgBOAxzy3FQW/DkTOcOHNhe/Hl5XR08GEd9MVBdZPHYag5Uaqtg6KsqziGSslmsx9OtMcEbzHcWlzG7vJZ99R7fDpfSzveToVtXQY+mgPzLrjBe0yXO1M4Qwdn7GDxYQBh9LFsZvxVCV/mOxw+WAGnzL/F9aju2tAzDiZwsGveCpxxuZtul7AvzHbS5bvb5XlvZjdcGK1gujwksh5P+vCsb7cb2pCTw5m3MZctQbmCg11Q+EmIJpBbnGWjslV4ULCkg8wHr5nC6kIiX+b7c3Cr4OBtftfr7tnz9uIgdFp0zbvnyrpITX1On6THWfi4BekkLs1JkCrEIYZh+oeL5g8F2rrZqHhn5EXRTlLe4hVpVipbhEufhTPc1HTmWHy2j4Tp4KN/2wUS+V1/GweXobdJC10mBweHb7q8XRphENcP/lvBjD62B3/uDzZzFM7Vrp5jfFkHuulwll3dxMEgkQx5mdLBmd8XnzsWf9FQTAYfeupWi+vi8DZPw4p6GUI6bRxcdqZa5dAyV26U3Oiu/OBiNbXLGwZo9XEOB4MOlz0r/4ZPClIWzjAfvLS0c1RbHV/k+wvcjkrZzMaPbjLZemF2e2g/Ud4yfXMwSDfybFBt0kO+p/Vt3g5Aq4974+BS7jZus7Uqx212mDZ8w877+WDxvm7wQ3dx9K5+hsuKp+PgjarlMOE/VHUZRZgcIw4ev+s63aB4Jqy2KGn261oaS5rbzPfDeJg8ruqmgINh2KbRbW7QxcGEBYRsKNHnh27pM4vpNB18ZAdRNbzIMH0wusmTNdzydk2kMUnQe8bsmOH7HqGoRUY5gMGy3i4x5zRDkeFtIBS0qgQOpjdzUEtF5SJc+XzHzn0A4cf1JOfOwA4JIV/ip3ssHxQHK8ndbnDnknhhjyI+jcnS3t4/3pLgLkMOxYmPkdOY9jx0gLSpvk0+u4urFSp00meU5HTRbTpsBgdZOMN88OPTQT1qEwkVvGcHUd6c9bK5fPT3KCrhIIqZdVH3eBaIc+XAIAa9ohxwm6K6ZSvF1Kiqjhe41LjFm0I3LZaalIX29yrL61tktfIhb3Z1xHjYAYSfros/X4po1sxMJGSqAIpEtnVaBmfn8VlN+Mf5dycOvmDj0vGoLZU5KJbed3J4xazn7PWlFg6XL34jJYHjFsMdHcS2KZRc1+M+2NAsXXYykfpWCSvjcS+Mo3NNdWcMZNHM4ztopkzJEzvZOZL65irXecJ/63k7XBMHL2FYHQf9y01M6O3Q+xY02ypWr11Zptsqi5cyjGuTjKtP0cEmVDvUPDdpNc5B6ZDG+JxVu15mw8GdBYSzbqwrPtfMXD4Q81j84O0kg4OHrl/s59wfU0OHSS0dHGzFQWxEPg3w02WFj/0qi+iQsyENlN1x6VrFh466dhSEERzMxMHAR5/e1t7BIQfEBLFORlnHp75nOjj7fDD6eF18sZOO6eAE2kmMg8ff/cOgQKzobDdDG6/VWVl3uzcHTwOdddkjH3yVY7HfSvOHLIUTBw/87kbdHOMSBhtSkHvi4jhTG4sPJW9gGe2KkdabvSxyGgbjYOiXeS3kgM/3x5wbSj71F58jz3buFl/fO20nkW0c8fJ5OUzVD08DXuJMNNzKWbn5d5fRJQfrnWmrKxqUC+bHBR9R08LB5V+UUPvo4Vtuy6BJpXpmaQYurMfVK0fFFs8FQRbmhylvFURXTwlDBlgnsssuezfxC38I4AnBs3RCo1uP7w82lLyvIrw4VUEzH3z05cWtDNtr/+w9DA7EyVAG3R+3MAEDeXBonhx2/pdbPQ4O5gcH956XHxe+DffF3rL2g3JbgZk67bZgNzP3JPJRx93uwsGqa6TqT2HLXHTFkhU/rYeFTtnbKRh/Bsgz0v0zbl3+vCqsNVZ0kA6+uy++MGaG18VTCJ3K0NFq89J6FSbBgAjsfJNxgQaH+LiPTpJDPDlMUv+wq/jcdxSL2PvY2/pFgZ5ltT4tvsRGPNQPepiOFaRtBgifsU7T1OfdpMqlxnPBGg42a3Vp26bxz6xkTod9nou354Cyyt1YLzucGn+r1O7Pay/r3Ws21vG++MKsma92uNPBpwe8LhbxqqReelLnrIdLA3CwxGDpnaylO+zoHJ4hLgyHOCsf13J+WKwkMw/Co4PvSBoO38gUg6beZaaMenGza4ioxnPBbSkFNJhEGLw7wEfHpQHyDBAPATdvAB6W68kSJ8yg3Q/JrrzVUfmo+j9/eyXTa9hQwnzwQtXMuQlcdPCBHewkLco7NICgO00fpsPooFaqWnW+rGFq4cwxexo4HFa3b3Barrt0uEsxf3iKg3Ht68Df4XT5bgGw9teAUG1xMu5amUuNRr5bjXPBGnqFjxwZB9fB4RnOib/6uNI4+/RLkC2e3TZbmPLDwztUPlr19yUXB2/TpceYxrn4m3sR1s089uNBjLOX5cVdj03up5LmKFh56DEJRETjCarqdoaSt2n6h/QQ+aFcpnSotWn8FQZW1SXKpXOM32qKt297IQXUYS9XxX63arFG80ZzFqRoca0UevjMgMMcySi+YPC2PSwEyN7vOzHrnDKs8TSLnARwtCXHCj/r9MXgo1WvL604uOtYSD1nBz/sqbtUNW05jJUv731+z1NZ2qnWaVKF7zTQfutluWRsb0uEccGaJia1Uh8W0g3nTFnFicRLHR2UfW/B26BBmWUViiyNbPu88vr5yrcs5Ar3cjkDhdUGX+Lx+PvBbLPH2JQDHWuBTBTlHo8Ftm+5qZ9Uav/SYq0AbnYKvm95Lj5zLNYfttaxfPDhQ0sLWYYbkqTy1uUpHZT+4FAaQ95/5942dMok/RbPDsNjoc3hOiXDX5foG2lwX6LabTeM1Df744Im6XEV3aaB2yK592/C4173Zpju/4JNdc/ioOxEGfA7LPUMD7fAZpNnN2SA+uMDRN1gnrW3L/XbqIhKLV828qFwYcz37VwdjM7ub9euI6jp4F1HUWPUXlatxMG2eTsWAwfV+kNTyfmNxaXxEEfc3fD4MDyU2iy7Bus7cd+aqWGpXCvnZhyc61aKURL/KwjPb8F5c08+adrVEslKlrsfVruLgzpI+4FAXG/LSuQl/NusZMvJ2ybj6HMlNa5Z3m8lwDNOOLjtxcEtHeS5ODq7oEmfzQzp4IMG7kOQxuVJt66kBjk69uzitKy2X9ZPHziETqfnh0vJB5/hoI824uOC4kONsrAk/4g0MTGpmeSJZTOsXhqiOf2T/N3bMifcddSQFPcd+7cdoIeevOHqF5BJEwtO4+bzyCNL1MAMeWhxDsC3DBdneBzms/RUKlh0eZi9vORSVbli4QzPxR9bSXQ0omaGDt6tgwkcVHktDm5P46NltXuc7VEdI3cd1w0qKkyxTRY/yy7hjQJOh42cQ5Pa4T/GxewUy1M8P7ft8/Pz/hTPEsP/tpASvyN8H9ceG2Rlds3BQSwNTY8FPdf0ojR+J1+09zZ7GiNkkQgODrYlL0rm6WD07fp2l5oZOniv0UhhX7Wuu7yq6uO1BhpAMA0G58J+lwTX32igjBpHzH1XNqlpn8NTxNVGzs1531dKee8vV85taT9A97a/+POq9zA+/TBVYa0xHvwlq600LR8cxGHe4m4Da1TyDF/UwnubsYVV9BiV+GK6bHJOIKSDlxqL3RJCvrz3WTYjDvZJneRVfppZZUb5SY2MjOsvrB1sym4foiRxOOIOp1vZVYy7leUFCReXdDyiKI8bh3XukC+RVe6Hpcb4FNgJFS9k6CGqFjE89frq7OE6KPRkbelppoK8JOHmZS/txnnHC2M6GF3IAjWnD07HQTn/5Um96qv1qVoOK0s8ObUq1ScWU1KFlSzEdEG/fs7itX/MJI/vKzk5J/mQGL5FeMoAh3RRDTGcmXdgDxnfZqdU2709TTw+8ztM/ZezPQpyAsnkdnYOovHZ9BCGbw42aAJsX7biYMULYzr4FXSaZdQTKR88ONhWqJ053RanWZhVQ/OcRQuwtNVl8etLV7/gSqQ92z0cmTYPP3kXq2SFSEwpjofpreX7Ze6m1hDAoabv4rM64+A2Lf2XZ0zDtnmkF8mtt5k+/dZDh0WgKty9vJhJC7wwnruDFx4HatdZC3x57/E7rqXkDmvQ4SC6i6N33cAZzrUF8q7IRhU0dAwdyBhn2l6conB4/5z+wC0G7mRov5neGn38weYxHiqlL97dmjvv5z0urHGUXvqF7dWg/HIxBEKfLoyzMH95kfET3ibgA8J5D1oYmDs3ZEvzvng6DopcIRxcqiopTzcFGw/be623KGk4eChgjl22/2LznCfNfWf+Bxx49xc/XtBJ88fhYiX3C/tN8MoMG4xOE3hUvn3ZyWSIXUMHZz2Q+svbEN4XTyRMnSCKRjBlQckIv2NtNTZ5qiRwWKm+lseKpkDGs18Mj8FZuAY+MwQaCepX+WBRZ4fr5jDrE/tSF40N8BgX1pwc3ImDGw/Z5WmmNmOmDupTQqj/nTPjFHx179HBZndwsFL9CaCgxsVB7zBjQMrxcCts5rtgqL21gwEcrM45iKsLddlBnSbLoXVOhsXa3/BG0kztbY7nePyj6lcvW8mUz2WnjNnmgxfOwJp1M08Pvrs4lykLSYd8Kz8BNDwvc1paeaqoRkFL9OTgoFel1g4afk/TEJ1WtHhmuMzRwZXqcWEszYKn3aOMWTbWvcn3aTGTdksL+ere5a66Cjciquuwdvg0FlVG0Cw8+8d7/7yRXE7pbg4+jX2PmVm0/Wm4DE7hVftSm46SDUex0sHvg/ckj+2gzMvHVMB65b0lgJhEmsUq/fmKEePguZOoPB/8ysHRn9jHA0LUyBxegKarqvyl3pnOOnaUzNrBD1mfHrOvkw7e8c5OrJWTq9Iaa4dXh9/x2PdRoXAk1U/342Dz/zoYlbgg907zs4Our/BngxnFukzpIPPBrxd2sq/uwQP1KJ7sT6plzdzxIGxGUaNNN5qRg/j4qB6SysXIHJNRRbStVzKCMONFCR383DfieltMB+/SQV/6fdUGDsbh8SAsxXrSV/z0Sw52P+/gU+D38oDw4CD6lLHwpN6aqa7c5T5vBz/MF9T/UOhwXcJX9/4i8KXwTn7L9/Hi4KAMS8AEGj+4Jwf/5+eDpn5ooTbl0BGNpQTKwx8OvTwgHHVfxJjSPYlbAwkdfICdnbKVszIOLtPisEgEeRDqh/XdOfg/ghQF5gGhP8zW0eVGDQ8LuLuT9yQfx6/qC2dkPh985GuSVGrk8hrbOGQyfTSkRhupHmx+ycHw8n3x/+kg7oZimWk9DLBptlW4qzvTa9PyomS2Dl7M/v4dt8D1xQ/97UbBNI7FO+NgexiThSZfPDJc/caclYsO6v/bQbSkIPkL62G6DsqJxEEZJosLY+7upIPnHwU6XZnw1b3PIazYt15jSyUejh0uS31UD1bdzByMZC73sbUO5eU9smTfrL/D7k6+U2br4BdXII4JIV/duwsMFBAHNy9/dpg+2MiuYrO2Mnu/yfhHu51/z0EUC8G8Yfx0hHZDFJf7WGQXn537wJhXPvh5/LRb7SAZvFMH5TAoDi5lyoLZ2a79TZi92+A5k3zwSZu9fcPsLew03uH2KO3MRUlCB+c6iPUTc/ridAWOo37ckMHLmD2/ffmbqdzwE2F0FpZvVr/yePBXHYxqmb11KJKRcWRqk3ZrZeaH8Z0yXwf/tVCPGrpFB++yu7jzZLTUi3HQjC+N8GgMOzL7Ws/OQbkd9lbpwcENHOw6mffvJSycmaeD385gdWKRr+49XhfLMOqXl1dVrc3AUTOjfpGt0+hpbg7KnZHM3jqWE2IvVCcXJSic4Xt3tg7+O4L14lmY9YMPvrPTw0qivQzl18NE6dbsLHqam4PDQ4KqPlyUbOFgnRoH807zzct88EJqqFk/+PTw1yRDoTDKZuCgKZzGURl3A+qXrgZ+1UFsJZEHhIeLkhel8jqVzrowr+ngXB3U0Re5oNvwLb66d+dgZ4ZRb7BlM6tW5oY4kpVHv1Yy952D+v/NjuUBYVvKOxUOZsZBuTDmDuN5OvhVYzHnD04oZIm5cbCGg2ZfuzweVKenZPNy8EmG84fDIRhtdjlWNXXGQe4wnq2D+p+b4uhi6TTrqB83Ajn2YV17h5IRlA8aB1OUihxvTX/Hweq3HHw/nD+qd0pemLX8QbHi7s75Oagv7GOKxm7u5Kt7dw6iizZWfd3VfZyLg/iGyuPBXxs1ZfpJfs3B98P5UUWj1KuM6aaD8z4X/9NWrM8tbeK5+KGjOexwT7fopk2Ng0VdhWbsygwdjMq9eUBYDKuq8AlrrK+Si6SSDs6wr+4653hf/PAh02ZiTJtJZbqKjN6LdLBS2e+tJvplB5vtcTi/Wd2pno8OclXTbPNBfbZmWl9utqODj1k+KGVyq8PULVyT4IGYWv3WBObfdfBJpszEps8auSFy5WXdbU2heVrw3TvD54PfLebU5y5R6ODDfbNTuQWokk7ywVZG0utABi9UvzZgZXCw+y0HdYPHgTKc34zhqsRBGb6AZ6d0cKb5oD6rnXt3MR28RwelbKZaiYMYJmAcTGQkv1/co4Ph/+4guulwWf4sI8ci3KXDwbTOwsP+JgafD/5LoeZ98QS+10MZdZ+knTgoZdSyl+M3rwV+OR+MtIxeXJoBZOLgAg4uPRYQso760zb3EUkhX927c9B0jXUYL1WprTiIfZXyeDCYqYOSIR+G88PBHNMI/W5nKs3p4DyfD57L9vS3zw3p4GM5KOWDUjZTi4NSNiMXBWHf/drv+l8+F+Op4FqG8+NaRPqs47jzUT6DC+MNCwhnP2fh3yn8+sw/0sFH/F4XQ/lghy7aSh6BSVNdFXq/eDv62w6islyeC+APAixx3oVhWvoygTBs6eB870mir5bWOSSEfHXv0sH1OwexvjyTx4O/6mD/iw7qxEyZwKYWzOIJw6QsjYM7FlLP8p7ki0Ez7qdjvrr3FZg9b6YtGwdztNVi9uDOC3/x8eAdOIjBCqGqMYBa+wkc9Mu0ymSpPVfWzTEf1F8UDDrP6Oere3cOhicHd+JgIFvdD5NIf9HB9PccjGQiIx4QRsNqZzjYVVI443NV04zrqPV3Y/r5fPCRr0maYRtbmibioMa/wLqSX52+/PsOyqYCPCDUuDJJwzhJ/a5H0nyuxYUxs7qZ7wbz08HHDNnRCwdTXxxsxUGzoeM3t3H8uoMynN8MoJZV7mG8hoNmAqHsdmbMsY5af9tRx+eDD76szseWcjiIO9G+QgqEx4NQyEuapxk7WKCCMKtqqSHqsjiHgzsV/2LHNeM+8sFPVdTuldR8de9taSeWEIUqbfykqjB51awmCX+vufguHDTD+VViCggXaCw+FhBy4syc62bO0HfFGAY6+BDfakwSwFXoMm3Stuqxo1dgDOXx4KwdNA8Isazp5OCwupMOznYetUutNB18oOXFpnxwcDBPmwgEVL+8tPz3HcTsLTwgXGMIWdAt4zw5OLhLWTgz73PxmVoZ7TZoga/uXYWZqYDf4X6Q7uAgMiB/rcJfG8l/Lw4WMpwfLTW6MA6m/iHvdAS4AAAgAElEQVRr5uStOd+T3GLeFh28Twd9s3uj9QNcBcgQZllNgseFwbwd1CVeFlneV6TLrDeFM8ZBTlqYez74z2Tqfw7OfD749KhlMxgphbXFcHApDupiW2Fn768+CLsDB6MGaTLqZIoifQ7hYJnCwUzRwXnXUevoAnn2PcZ8de/NwTDD2uJSHFzDQVlNotrZOxikFXa24PXATbFxUKqLVMcCwpnuL9ajL4jp4P072KcNCuUyOFg0bZj9csHwHTgo5eVx1tdN4W9wjd4dHGQh9WznLHzOCz9M3dLc0/TQga3l4SLDRXEzOBjI7/9fbiC7Bwel7Xqhtn7gr6q+rf10J9XmCSfOzC8f1N8uZGJf3QQcVPFCHgw2qcoS/FfX/+Zqkq8djH7OQYwjqxbecwoHe+MgWJRyIjo41+eD+uu2Os4fnJCDaYPqQcwe/N2Bo3fhoE76BWYQSrthvzMOxhkd5H3x+TmEzAcfva0O/A0OYvVHMkxe/s3Zg/fioCwpwa7O2vcxjmz54vsbtZDpE3Rwtvvq/hFv5MmYr+59tdW9ORgiH/TTXGHAwO+Wh9yFg0/+2lt42/ToII7JdJD54I2eDtLBe2urS7xsUeGCpExCNTiIXSV0UJaUeItw08FBlb34JY7JMpWRjXWzrR+8aXsxHbyv7zSGDS4WVSIOqmxlHPTWfkEHnwo8IQjbOu3g4NZvulwm89PBed8XR//0kWj2Fz9No61ucLAMyrU8H8QwVvzX761ouiMHNVa4x/nRwSClgzwX3ywbpIP35iCegi36k4PdulfSVksHnyKs7Iz7bQcHQ6kjXCM97DtO5p+Vg/pCvcy/jXTsq3twB9O1lFHDQV8c7HApoHJZ3kkHzbImtak7zN/ZyuuDyVt0cM75oD7XYafdMkW+uHfmYD442OD3ebatUT2odt0vT5e6Ewf9FRxsxUFvI/kyJi0gVeY7eO59dWemzmiOo37sKAYHUT+drlVW12bIwm8Xh9yJg1jWFKpd3SUVHCxK/DkBB9lgPOPngx9Pv5qPByfkYC8O+nAwV8v6pfWy399GdB8O4rVZhnhIcHQwQQGhSripaW4O6i8o/GfmAq+LH3dLU58ZB7GZUi1fXvL4d1c03ZODWNaEmvKtONgaBzM6yAvjc+MHNfPBx99WZ/LB4OBgfw+1IXfi4JOUVFYr42BzzAd9zbfwXB28eHnMcdQP31aHrZ3vHNxW99A7di/5IGaxKlyUfMgH6eC8G0q+Ov+ybOaB2+owbkbmDvqJtNFu4ODKj+jg02EWq8IDwqQK1wcHw3VKB2d/URJF0ZhOEjp4lw7i+eC6PDjY9ln4+zs4dLO7CwexrElleb16c1DRQRbORLdICPnaPt1XW53JB42D/fPfvFfL39/Rey/5oNlxX222mDwBB3GjdAe1lYzfvSf5MIz/zF/p4OM6qJLBwfa1r355RdN9ORhgS13VDg7KoAU8SaWDc38+eHGDJ+9JHt7Bxji43yP9Wf1+ZchlB2VY7M85iINxjhTw1TgogxbgYE0HOZB69LgFvrL31laXePEiTILCOLjMVJ/+fgft3TgYBWi6zl+z9w6ysY6DWPXYqxK+snc3ZsGTfNA4WD3DQfyOp4PvlpRUqtovTg4uejrIe5LLR2BNBx/ewT5bLhZqHeinu34++JMOPkVJr9TzwcG1OMhBCzOvm7nUR6J5Ln564PbiNwerxRKbi+/h9/n9OPiErmu1hIOy2Fkc5MCZ+Q0gjL5e2PlxkxMdfNBxM3CwEgfX/WIRZ31a0MH3nxBTeOJFPDio4OCKDs75+aD+NGNBs5tkAg52uaxpMg5W4mDu08GnD8ua4CDG86fiYEgHeU8SXRxCc72FfGHv0sH+4GAsDuo7dzD8YQcrcbA/Ovjbq50Zv1o/eHnSjGbx4KM7mOEStJBTX4y+sYYOfvhS0EVycLCUjVZ4lEoHmQ+69RTTwft2EEVxwcHBu7gGuCsH8zCW66OGDtLBDzuaPot4NY18Ye/s2wwHw8FBXIzi+WBFB/9d1rSGg/E7Bxs6OPv74rFz+fnC3t846jB+52Df6btx0L8LB7Hf+eBgYxxs6SAXGH9uMWY7yWM7iNl6x3wQ1XGYRX0P3yPd5HfjoAxofO/gmg5yLv+lmkG2kzywgzGGSR0dTPy7dlCbupmfXBknS+s+OljSwTnPm9ERZ1FP1cH1wcE4TMqne3EwP+cgxuOozY+uzsTordA4iMY6ab2hg8wH31+YuEyf4et6fw4qcTA9OKi64OmuHUxbhaucn+3A3nknBxcyspYOzv35oB65rY6v6x06KMUy6TBNJV52xdNdO4hlUvnPDgbTfntyMDQrregg74vP1E5rPh58cAerxC+CLsd18S7V9+xgVNS9Quffj2+yijGdNgg69JPQQdYPnksIOW1mIg4m0l688u/bwWCLsag/e2GLzaby6AAONt2QD3IgNedRn11LwnTwcdcXDw6WRSEOZneynffgYPH537fhTzd0YEfJ8uggJs8s6CD3k4ybPci3z306mImDyLQWi2XX3LODhqSfHnQQBfKAULUHB7M8pYOso9bfjmWlgw+ZD8LBLFumgdZRdLcO4qsNf3YwPt7bgb9RcNCHgws6SAevLymkg4/poNp3ZVDcAYSDg58WpRR+G3rtj3b+gcHG3x4crBdyLu44gHDO98V6/MgZvqx37OAGc2eeN4lfBr8P4XkHo7JWWYi1oj/aTuKn3TYLxcHSONjTQdZR6wslhZw28+AOBs0GVXKe56Es5fchPO9g0T2H4c/uD460v857uS9u06aslzEXNdFB7TSCmgrev4Pp4GAWhqGUKUd36WBUblHyvfrRBmjsL86r6uCgTwfp4Pm51NpCRL6o9+tgM5yL86zK12Vxl88HUUO9Qzr4w80kQZLneaWk9VAcDLmwjg6eL6DmqrqHdnCtZOh8o+Gg2tUpHg/ew56m8pODUZG2SMvSH52xINckZVl2ew8OlgcHt3SQ/cWsHpykg4FxcG0eDUb3WD8YFaVcaLc/PuQg0rooN1617g4Oqg0dZD54/r5Y08FHdjA/ONiWd1Ia99nBwt9ksffDrcXHyolmEyJX9ukgHTyvnVUJDV/UO/w2l0cHC3HwXkYt/+sgGknAIIZl/4bTOBvDwZwO0sFbbCnha3rfDrZwMLgbB9fvnw9GQY1ng+Fv3dTqYHtw8JkO0sFzxYJcTTIlB5O7dDAKyu3SA4M/fEfyr4NpSgfp4Ff3xXw8+PgOBuLg3ZyLD/fFEd6HgV+3GW6K8+63vjptpn290MEZO/j0VSk1V5PQwf/XQR2kRsFQRiT+1nvo4GB3cHBPB2fo4NMFBDVviyfn4OpeHCz8nRdiCFjZbZZQMPZ26S8OBMP01woO1t3L4GDDN/OsHRwVfEnv8tvs5/fpIPLBxb7NBUHcEye/WtATFdteHKzpIB38dFViN2OBrygdtDwXx7EsEsWkl8T/3ZOo2YrS/z04GNJB5oNMByfr4O7uHMz6Pm8TzID45bcPHMzfOdjSQTp4bkeJpoMP7WB4bw5Gpo46a/2yQbfzr793Dg6+1C97OkgHP9XMfDNs5t3H4etJB637SZb1nYAT6cHBFzpIB51PwmTwcRwM7ikf7H92xNY3DlYmH/ToIB08ZoJXXZLwJXyE0EcHiyC/Hwcv7i/+LQc7DGNlPkgHeTEyCwfvrK/uF4bL0EHGOQefztXNXHM3wlfwwRxs8nvtL74PB9U7BzXfOPN28PzqOjI4DQcrOnjJwXWlXukgHfyM4NcF1HwB6eCEHEzFwT90kA6+p0/z4SAdpIOMWTn45DCDla/fQzpY857kSwf/0MEZO/h0dmunpoN0cB4OPkXpWtFBOmg7jZ8v38M5GMDB/p7OxYoOMu7YQR6Lp+hgE2CyQV/fmYMBHWTcq4Oa+eDkHOyMg3lHBy90HyYq3NNBOsjR05PuL6aDdJBhfy6mgxPLB8vA7+kgHWTQwTnng3SQDjLoIPNBcTAtdEQH6SDjFg7yxXvAfLChg3SQcUMH+do9Xj5Y+41f0cFvHPxjHPToIB2kg3Rwhg6WdJAO0sEZOFimd+bgHc2jfnoSB5/pIB2kgzNwcE0HLzm4Ut7JwT0dpINkcKoOKq+lg5fzQTpIB+ng5B30kQ+2fhHRwUsOLuHgMx2kg3Rwug6mvuSDdPCig9XgoEcHOYeVDE6zfjAWBxM6+KWDIfNBzuWng3Tw5x1M79LBcM+9nXSQDk7Qwb5OU+OgvhcHSzrIeOQ97nzl6CDzQcbMHeQL95Dn4u3JwSc6+I2Dig7SQTI4NQfXxsGug4Or+3Hw3s7F9bt8cEMH6SAdpIOzczAq654O0kE6OGkHs6ODJR08/yo17xxUm4DvczpIByf1bS7FwZ4OXufgkg7SQTo4XQfruqWDdJBxEwf5stHBKd4X00E6SAfpIB08OhgvFhUdpIN0cHoOZnTQysEtHaSDdJAO0kG+ceggHZycgxUdtHAwoYN0kA5OzMFEHNzco4P9fTrY00E6SAfp4AwdLOkgHaSDU3ew39xj/eB9OahODtZ0cH4ORnSQ+SAdHBz8u4gXGfPBWTpIBungLzi48+K+u08HOzpIB+nghB3078rB7G7AOT4fNA7mdJAO0sEJO7gZ6+DN3gPiYJjVtxpwFd3UwZQO0kE6OEkHX27gYKSLW+2BL/wc+eC2vMlHizQiusm5ODMOFnyn00E6OEEH25d6NfpcrAM/9W+SK0VB2nuht/f1TT5YiS9L3yQfzDI6SAfp4PS+zc3tHCz8JE9uQpduVioMveVNLozly1qPO8u+ObiAgz4dpIN0cIIOqsHBkfvqgjSvkCzdwkF/6cVxGHbNDT5YkO5UlTZ0kEEHGQ/kII7FXhjj/1b+Dd5TRdoqtRqVpx6fD76GdJAO0sHJO1iMdFDl3S0cLFdIB+NFvEv1TRwM1SrVN8gHjYPru6kuYtBBxi0d3N3AQbncUDeRS6c7cTBeqFtUUuu09bzNOAf95IODfN/QQTo4MQerwcHNDfLBvlrfJIPrstA4iA6X6AYPG1ee1451sDqei1Vb0kE6SAfp4OV8EA7e4F3QJCYdhIPtDT4cSoPg4Kjz+tHBvawvpoN0kBBO7dscwMGFWh4dHPPoK0j6KrnBzQbU8fBwEA6GeadvQH2q6CCDDjK+cLCuwiw7OJiOcrC8lYPdDt4s5KKkqsffzcJBL9yNdHBFB+kgHZyBg9uxDuL8Wd3EQV33MFASwlitxven4Lwehrs6GOvgMx2kg3SQDl5xeKyScvzXFCQqPkDoJc0tHFRhfhMHn+WeZEUH6SAdnJyD/cnB9VgHVZXcoAMkMNWDyyXujL1bFKmIg8sbOtjQQTpIB6fnYJxlcLDyduMcRN9GdYOOYLnfRVPd8lX+eov+lCDNbpoP0kE6SAen56B3dBCT9UY5uLuNg2mOTDB8/isO3mIZSOEv5eOM+pJwX7yng3SQDk7aQfVS13CwG+Og7m7iYKS7Xm5INn/lKaHa3sbBaoyDkT44uKSDdJAOTtNBmXiqtrdwcKlusFopKuSaBKvlXyQt9Dbj1YGD3g0d3NBBOkgHJ/ZtLm7mYGEcLMbLvMGBOMvrei3H4115EwdVchMHcYuttnSQDtLBicWbg2q0g7h3Hu+gDlo4qPI0TcTBpV/cYpqhGnORDQfbSr3SQTpIB6fqYHd0sPdwqapH5HE3cTDSZS4OrlPfdBlX47fDaf/Zw1O9UY8s3zsY0EE6SAgn6CB+c9cvvdePcRDlzzfJB7GiCYU8KvHLVC3koqQc72ALB8txDqqDgxkdpIN0cHKBW15xcFO/LMc5iIkNCuMHi/HdH1UsDpaNLw6Ge/8GDiqV3MrBrKaDdJAOTs3BdH1ysBr1W7xJwhuMYY2alTiIxpRgcPB5dEeJ9vdw0B/l4E6pv8bBuKeDdJAOTs9BXEsswv3LWAcxTD8M29FoRaVck2QoRAx8YSe+wSPHciMOjqgQ1/XRwTjOa65xp4N0cMoObkc5mHg3cBCXu6E4iI3DpXFwMbokUVJMNWaiKxzMVfbXrHGng3SQDk7WwXa8g76MfR7tYJAupFymNw6GcjAePcJGZm5XbXcTByUf5Lo6OkgHp/Z9NsOfb+TgyPWYxsFOsAllOWbTGgdHL+9ERQ8WSHXu7873+WBIB+kgHZyug3+W3qjW2cHBsd0fw7CZwcFgVWEIYdiOvXuJzELReqSDSziopMGFDtJBOjhRB59f/jyPdDBdY03w2GK/yJeuutjbIbFEBY04uBy9oyTwxUH3Vhk0H5o17oODHdcX00E6OEkHM/wuH+cges/WUqUXjX5cKSs7PRl+X/i9DKXO6uJ+HETmTAfpICGcpoPxLRzMQ5WOHaOPoTWh2UsCUNFhJw6qOhjfonITB18lH6SDdJAQTu/7XB4d3I90sMtDVP1Ft7gmiZXsJdFNni1kR8nIJDMqylz1YxwMtsc17uZxJd/kdJAO0sHLDvpjHURTihQNGlCPDo6+MBYH1db9ekPDwZAO0kE6OG0Hs4ODyQgHcXaUqr+RbwDf7GiKK5m2pYM14METufT3HVThs3Fw4dFBOkgHp/d9bt7lg2MdzMcOC8SuJ0+eCebyhWASIfJB6eAYKY8u0RY3ojby6CDWF8fe6DIeBh1k3N9g/k5OoqiOe/WqMQ7KIuTl6PLBzjgY5oJWFEghtUw2GOtg04520Ds6uKKDdJAOTi6CTvYh3cBBLLwb72AtS0nQtCHn66hYGQfHHGlPDnqbMQ5usOTeOLjwVj4dpIN0cIIOIiHMjIPr33ZQ17guXizC3eDgViZvLUDYHTh4ygd9vsfpIB18mtxAaiXTRcc7uFLe6KVKeivpIC4jJAOM9OBgOHZT5mgHm40na9xbOkgH6eBkHQyNg39HOahv4mAglzZvDtZVbC6MR35Y87W1zg5GxsFhjTsdpIN0cJIOpnIUFQeVGuNgI9aMXeUWrIyDaqWH8Qa9FBPGuT/awWqcg63nGQelmrHke5wO0sGnyQ0g7OX54CscrH7bwaGoe7GokoOD+eDgyJHUt3JwiTKe0d0tDDrIuEcHc1yDGgdVPsZBrGnajHXQx+52ONgPtSlRNzjYjxwBrYOkCsc5GA4OxnSQDtLBaTq4vKGDIzuBjcmonB6ewaGqWiaxYovUDRzcjXCwhIOvg4Nh0vA9Tgjp4KTzwbIY5+DIAhdJAON3DvpHB8flmabGe+f8MTCn4eCgTICo6SAhpINTdNDLFtkeU+dHOViupWdj1Pc/0kk1ODicPeVxoTiYjbwwHnr+Gtdq7DcHszhUXNNEBwnhVBc1ZfL4S43oD76NgytlHFwPORcWzRkH4+W4vuWowCwcGO/soL8LQzpIB+nglAexro8OVrkfjHGwSoKRgwJldzHaSdYHa0w5oTg4bnenOOjJxpMRDpr1xQs6SAfp4GQHUmcLNdpBzHzuu2BkfUtr2knC5GBNkchUVtQTjrucMLOyc+eZYBHm+odmXR0czOggHaSDk3UQi5ryqk9HOTi6zq/Jh7a6o4O6VpIPLsJtOdLBNb44R8AicdA7Orikg3SQDk51IHUGB3fViITOODhy/CDmpZr0z1sdjrAaU/rlXBzu/XEO+msF493Gd0Wy9zOkg3SQDs7EQQzecm/PEwfHlVEHaT84mBRvdTSoJ8Ra0XEf2Ty87BwLZyINB70FHaSDdHDaDqJ+cPnyAge34xwcOQ8hkLIZcwzWx7rqXThcGI8bfopfo3Iernhy0KwnoYN0kA5OdDA/HNy9vLSV2jg/hwu6fkw7yqDVRg3XIvXJwVb6S8TBYuSvUVWrcoyDxzVNdJAOEsLpOrgc62BSqXUwzkH/OVvItUh2ctBPZCL1Is5GFs5Is8tNHPR2HR2kg3RwevHewX0ZjVjxux7ZBuwvTToYL48OPvnytcnCkq4Z11gHB1vHWxw42NFBOkgHpx3ByUGl9q73EVGwGe1gkS7j4WlgHb03emG2gvyig03Xi4PDujo6SAfp4BQX1qXSX5xLPhiOcVCpZBQR+EIk9YODu6OD8rWZk3I4bgr0aAcrOkgH6eC088FUDQ5uKvf6lBs4+NR08YBe20Wnr80bCqnH7XI3Du7cHUzeO1jwHU4HCeFEHezr33Yw8ldHB9M3B4eGknjX/Z6DRfnewZQO0kFCOEEHfePgdpyDsip9pIOmSObjIViWpxgH806PdXA51sFnOkgH6SAd/NpBT61GOYjB2PHS7Ol8G32vzdUJHFRdMdLBcISDK7O+2Di4oYN0kA5O3MGlq4O62Y12sBscjMO3vNIsDTAOjhvpVWAgtevwLozdGhxc0kE6SAen7GCWVduX7TgHQ5WMIiI4Opi9TXuAg544KKO4RjroOTsYHB2MZX0xHaSDhHCCUcDB+ORg8YsOZkcHi7e7k9Y4iByxHOdg72WjHNwbB6WQUfPtTQfp4AQdzIyD9SgHyzystqMcLDF09RkOhsv3Du6lgHCJfHBUASE2IavK3cENHaSDdHDyDmLuljjYh87zDHS5HOkgeolPDuq3f7k5OLhOxzqobuEgPKaDdJAQTtHBJe5Jqs0oBzFCNezrMUSYspk90PPeDdmKytXgIApnxt3BwEHHHmU42B4djOkgHaSDU3UwNA7W7g7Cin6sg90uXuxjU6Kn3w2BUOLgUgoIozEO7sY5GJ4cLOkgHaSDU3cwcHcwH+Ugjq7x8uBg9K7nGA0l4RKH7mScg1LmXbr2PcNBrO2Uku6MDtJBQjjF0MZBBQfzcOHsYFqNdhAMGwffz5ZBUU9s8kG1GvXwEYuaMIDQ3UFFB+kgHaSD37WTpJW3G+VgsUXLh2nZeJ+3mWQ1Xj7H45r2IqHMcWbN0cG/xkFsOeGbmw7Swak62IqDmeNySxn47J3GZTm2vnnhswxi9d5bLPfQsTw39Noxw66jFA3GG2cHd4ODCzpIB+ngZB1s3xzs3BamyyIkr+1GObjyvL25ivDPOIjCmTHLT1CUg69vhIMZHAyNgwEdpINkkA6eLx9Ey8WoGYGyJiXcSz6Yva/l1s2zh38HB0ctBR0cdFx6h/UkStYXi4NLjGHlu5sOUsHpOViid804uAvjxG1BifZHO1iuQ3CXxWH2Hryo2csk1v0yzMesrBvy1ZEOopIxpIN0kApO1MGNGhxcj3AQLRejWt8iH7c0r9JJ/GHWg8x3HRysumBU057yluMcfKWDdJAMTniRu3FwV9ctHHQ7feJs7Y1zUPvYCfcqZTPL9x8Ge/DEwednFBCOuTAe4WAkDi6PDqZcT0IIyeDEHQw3zg6G3qp0/+5HWnYEm/LB5YcPg73IUkC4D8dNN5T77GXnng/SQTpIBie+yH2FAYQ3cXDEF1HI7PthA8gHB4u0xz0JhFTteAcL13ywooN0kArOwEFvOTjodnbU6S70kmaMgzLjzzi4+eign4uDr5kaVThjVm86zvYP0v7ooEcH6SAdnKqDVZahK26EgwUcHDUyWgcy00XaSdTqQ+kOnhtKAeHrQuUjHIwCOJg554PGQZmE6D3TQTpIBqe5yD2pUK6CfHAzxkFPjXbwVXroVPLRwRLVPIvF69LL/REdxoODgWvvdCVrOwcHOZafDpLBSTqYVnGm8nEOLkc62OSY6SLtJNXHjEtjER4mzsDBakQqhnywd3YQZ2p1dJBrO+kgHXya6CJ3nIsPDrZu1crGwTEFfngMiBq9JeoHe/+jg8Hg4LNXJc2YfDB3/QLpIB2kgrNYWIcrWdWPcRBXquGYFcPyDA61KbKYLi+LjwfmjTi432MtaKlHORg6Oog17icH9ynbi+kgHXya5CBWXMlmWV1v4WDn6GAfZmNWrQeScx0c1B+FHBx89VTrj3PQ8UJbevKUrHE3DnIsPx2kg9N0sBQHVf0CB3duORMcROFNMap2x3v+K4uQds0/Dm6lwfj5Lxwc0WFcdDs46FToLTMaTg5uxkx7YEzfQb5cj+4gFhhnmbOD1TgHS1kJ9xrKE7hPDiopIPwbh7vU/QGkXGg7O7ihg3SQDk49cFcbGgdfXR2MBgdH1PdJf/Lr4ODHeatRUSuMBVv+WXh5N8ZBfAK3gdT64OASDio6SAfJ4EQdDKRUGQ6+jMsHOz1mJrbn/d2Lg5t/HJS9JXG2+IvCmc69YUUbB9NxDuJFooOEkA5O87s8OBiOcHBYTzLSwfAv2kmQcX1yMJdC6r9SoOg+yME4uHF3UNZ2mj8sSr7V6SAZnG4+6G1f/maZ49lzrIOFn3kLSLNYVNuPBXqDg1n2Vwpn/HEOug1i1enGOzmY0EE6SAcn6uDOG+egKS0Z4aCsKfaW4mD8r4Oy310ujF/3cmHs7qC/gYOddiT0zcGG73U6SAYn7ODm5e9yjIOuY+8HBz04uICD/b/LP7FyUzaUvL563ojPgMUBIx38m8HBqqODc3TwOgz5Sj24gyKNt4eDytFB3zjo3v7bwMHnPwvkfXl31sFw/1eFYzJOcXBXuzn4/M5BjpuZoYNPdJAO/oSDZYKlnX/jsw5CMOSDz38UCmeKUZ/B1UFc0bweHOTYLR6OyeDEHXxZqt7dwRG3GPj5KB/8i3thNDifdxBPD73+VxyUGRLZwcE+Dfh+oYN0cMIOtuJg7lSjh0do4uCIspk1ygdfpZH407J1EWxwUI04lWJojOfY8VJ0g4OhOOjTQTpIBqfuYNW7O5j4I7o9cqX+yKZi75ODWC0yOPisRqysw01MONZBObXTQTpIByfroBoc3Lk62LVS5fzkPgER0wf/7CHNmaV3QY2vbpH9fVYjqlZGOrg8OLj0C75f6CAdnOZA6hWkCXfGwcTNQYzlT5sR06KxGRODDL50cI98sHSdegUHM6+vA6eRXcvQrGmig4SQDM7BwRYOumR1uh7loGyTq6SMOl78s6VpyMcwJnah/r7CQX+Ug9lYB8NlSQfpIB2c5je4+OCgw3e0qFFa4n6VKhOfq+fBwc+PAHUnDcbq9a+q1o2JjL0AACAASURBVM5T8eHgwlMuDiJZXZwc3JUcs0AHqSAd/F8c9OHg3jSuVfVnB1Pj4P5vVeXOF8ZwEF/i1s3BjA4y6OBMHMzhYI+jp8P3NBjpYNpWFfI9VKb0nx2MUFQjDv5ZioPa9dc41sG93Kkv6SAdJINTdTCp4OBynIPZCAe7ddUPDubnHEwwATVrxcFknIMudTfvHERVDx2kg2RwqgMIjYP5S73JnRyMgjrzlu4O4glglf/9q+IwROtcdKYVBPfFeH4ot9nODvquDjZd+OZgQwfpIB2cqoMY+RzDwRUcTJ3ywfEO/nmFgxhiWJxriVvIZP59JYUzT64TDuHgytHB2KztpIOEkA5O2cFUHMQCY1cHmy3GBzpvk8O5vK92Ak3ondlJFzWJim/g4HN4pijnuo68cPlnqG6kg4SQDE7XwfzkYNu5ULENxzgYYFF6e3RQnxl2rTI4+Pe1qtb+LziYvDm4oYN0kAzOwkHt4iCGuYxzcC/QhFilpM8Nq0Y+2P/921e58ycxDrr05ZnHk8OaJjpIB8ng5B3c1omjg2aolStRkS7fOXgm4Ts4+PIXTxGdH0Jqf++26AlfnRceHFR0kA7SwanGewddZvRFpQy9d3fQX6vqFdBkoZdcdnD7klduHcIHB5Wbg/57BwM6SAfJ4ES/v8bBaltvxzjou5e05Kp6Me0k3rmLEJT+wcFqizEQ1da1oUSXzg6uvHB/cHDLcdSEkA5O9dvrf3Awclr+McJBTN1CgR4cPP8EDw6GcHCDtj8cTF0b68qNcimOjMTB2Di4oIN0kA5O2kHPOFjjCdzPO2imbsmyPDh4bh+cfufg3tnBZlOptYODRTo4uEA+WNFBOkgGJ+1gVq0GB4vIZb2IWrk6qIMkV7uXv5Vx8Aw02sde0Uy1L5vKvbEN5S8ou0lHORjTQTpIB+nglw6Wzg6u+ur55VVmPSzPO9iqDA7W28p90AGKc3rl4mAge0PFQVNaRAfpIBmcrIPrMQ5GcqWqnFs9tGRqe+Ogd9ZBXMOIg7t624dL99N3il9c5+Agdg7Er3/+ZHSQv1Ho4KQDhSs49BkH+x93sChbcXArDu7OO5igoUTl+PLgoOskVuOg/WX4ycFYHOQad0JIBicbJRw0+eC6ckh5UIe9hoOuJcaFj8+6fdmbXVHnBk5HTVohH8zrlzxUzovUA1TnOFwCHR00aztzOkgHyeDEHWzFwcrRwSp1dRBA9fn2BTvzsrPtxZLKwcGwr1925y+Ur+Q2V721gxFmiu1O64vpIB2kg9P97uLgeXJw6+pg4H5g7ZHrGQc3Zx//BX4PBxWsxKiE8ocdbA4OeiHWFzvvR2FM0EG+HlPLB8c6mI9xsKtyOLjDXYh3vvimgIOLGA7uwwtSXulgtS2cHFz8FQdjOkgH6eAcHEycHCzEQd/RQSnsy9e4A5E74fONb7qUfhe1gYOhcxtzUeZKOTmYi4NY04SR3XSQElLBSTsYK+OgzK63taLocq93dhANb3lycPD80z/d7MIs9jYvr2G4c3dwrez74t45iLa/HR1kkMGJO7g7OKh/1kFUSffJy0svDp4fq6UbFFLjMvnlRSlUGI5yUNu+6ct3+eDap4MMxlSjMQ5iQQkcXNk7GICK3JUIjcUh6B02DlbnHZRBrcbBvxkcbH7TQU0HGYypOrga6WA/0sHty7aS2fv+Vw5i0fxSVXXpXK6tvI2Lg713XF/c0kEGYx75YGP7e10HdeXlpaODsli4HxyUbpGvHdxhhqA/xkHrIkc6yGDMI8SZsQ7uHB1E32+l+hfMkskW3u58UQx+TJ/JgmUzgTCNft7BPwcHSzrIYEw1Bgd7cTBclfYOgs9RDkK4vbQQX5qqhcKcwcHNLzgoU27oIIMx/XywPji4cnIQFYDu+SCahzF9EO0kXznoi4NorIODLoukTg7a7x+O/G11WNtJBxmMSeeDNRa5Z4ODrYODqxEOomYHI1YHBy/NMEQhtYKDsjhALWtXBzeuDqrng4MrOshgTNzBShxUrfXFrziIVM7NQczsqqr2xbTVybPJSw7K13dwsHDbgoIphk4Owmk6yGDMxUF1cjD6YQc3NSpiUD54ac+6btbhYVDsCAc3dJDBYFw+M9aSb6ntLzhYpDLbAQ6GWXZxzCkcVEcHldtM6MHBnYODqzcHN3SQwZi0g5k4uDEO6h90EMvqMPu1rlWISauXZtagsGdwsFubBmg3B7cODkbGwWF9MSY9NHSQwZi8g6hmXts7KFcdGzcHZWknxuXXW+PgpUeTBwfbGskjHiK6Oohqb3sH05ODmIBIBxmM6TrYGQc32ISUrVMHBytXB5+arn9zsCwuFnoPG+tSLJ1LnA6nUdFsTdeLu4MxHWQwpu2gt1gMDubpj+aDMLTCoJuVOLi+lK0dHNzBQZyLnZrbIn1wMLKdMXtwMBwc5JuFwZho6A4zl7OTg7Z1M4ODTqkSHr9VMgB25YmDl6YgREUybGrC5TKWEDs6KNMgHBxsjw6G9uNqGAzG4ziIXeVv+aDtb3ZtJlq5HRmjtJWymbrFmFPVfuWgMg6mvXIbCh3pYSpO4Obg30wcrOkggzFxBz14lDs6WLk62LVVvxIHZSr/ZQc7jCfEmiXjoNvSOC1TEnt7Bzs4+EoHGYy5ONgaBztrB313B3W9q/ItFkTBwWp1CSloJGP7xcH8lxxUcLCqubaTwZhsRGkyzkFZ7+T21K6WspkORImDRXR5I57pN/HTHYb4O2Vlg4Ops4OxDHqggwzGdB30jw4uHRwskA/2W8fq5rp/czC5+ODv4ODKT9tRDlb2DtYnB72cDjIYE3cwGxy0Z2bYkO7mYFCrat2lpq+v7y6mlBGolTkMqVyrODpYYBFx1dk7iBnYf4d8cEkHGYx55IMODqbSGufo4BYOpmknDuZfOWgKCJM03cBBpyo+3LXAQdufKwd3cfB1yAe5ro7BmHo+KIuQHB10PDJGzQo2pf7g4OXCQJlSKHNaO+Ng6eZg2oZuDmYHB3d0kMGYsINl4sVZKA7G9sfOoUXY7RK3bOGgj2tglA/m6cVBN1EzNNZ16bbv177L5C2pBPSsDTUOLukggzEbB3PJB+1TpsFBJyK0Lzma7ydwMFx/sXkkMA0l6zrd5n3u6KB8rhUdZDAYlx3EPcDLy3NcrawdlNqXzq3JI92FVVqiXQ754NqPvtjm1GO/cV7jRqXHjbarg8rNQaxpGhzkmAUGY7oONoODf//8sIMy6KZPm8HBpIy+egZ5chA1Om4OJqG0Qds62MPBF+NgSwcZjKcpL3I/Opi5Obh2a/qVwYfo+T06+HSFg1Kz7TKBEBNVxUFfWxc4GgfNurqODjIYE3cwzhwd3PauDspilLwM0JAiDjZPX3T+wcFF3omDaus2ibVceQ4Obo2D6DukgwzGxBcYd2pwcO9yTzLCQcwEXDeDg7io/tJBBQcTv0PquC9/0sFhvTIdZDCmHqMcxIBTZweh2jpAYx72yH/tIBpKjIOYxOq1bgWE4mBLBxkMxlcOKkcHN64O6mAle5fEwTCruuKrSu91uECNN0ps+nDp5iBqtsPWsuYGDqqTg5uUDjIYU3Ywc3ZQNxv0xjkNy4eDqhIHcziYf+2gNJQYB/Ns6f+cg8FGKVkzf3CQbxUGY7JRpMbBV9TJOTlofd48/lSMTViJgzJtutNfVjjiXCwl1504WDgWB9FBBoNx2cHl4OCri4PA091B9DMXqXEwvcbBEi14me/SxAcHw3Bn6aCmgwzG02wGUss+thAOZtXa8umbLiWJdHKwKHdSgR2gKOYbB1HZYxxMxUGVBm6X08rFQU8czEM6yGDQwS8ddDwXB750ogTSPBzLHrqvfqhxcA0H16HqGkcHPScHN+Ig6qg3Pq9JGIypO+jJPiI3B1duDsrErjSQ7cTfOuiLg7lx0Fu5XBgbB5cuDu7pIIMxCwd3Qz74F0NdrB1snR3spAI7wIM7PJxMvlSm8HFfDAebFE/5nD6bzL52cLAd8kHcI3lbOshgTN9B2dOrsOv8hxyUCuw+SQPs/bzCwQqDWMXBVRhu0sLJwSx0cnD78tKHdJDBoIP/h4PlFluXMGZh/X0+qP2lcbAUB1sXB5+cHGwODiIfDLclHWQwJr3A+ODgwsHBZejooL9XuTgop84vx24ZB8PBwS2qX9LAzUG1tPuZkXHwFQ5KWREdZDAm7aDfeoODS2U77nlwsHRz0BMH08HB5msHd0oa6+AgBoR1bg4urR0sysHBig4yGE+TX9RkHHz+80ccDCwd3NnPNz3Y9iwONoODX6/UxFeIBmPZ5L7NYncHMzcHX037dd3QQQZj0gvrwoODmb2DS1cHUa0DB8vOnDq/dVANDtaLuO9cCqkLJwd3nvo7OJjRQQZj6os7jw72lg/fCjy5w5FRO3XziYOYRh2bs2709dQsOIh6bV92STkVUouDytZBH8kuHWQwZrSoaXCw+ykHA3Gw9v3V4GDxTXdwBQd3qV/LTr3SycHcwUG08Q3r6uKl225SBoPxgA5+NR//goOZi4NYQreI4WAqDnq7r2th8IPhYLgUB6VMx8nBnUJLnt2XCAczOshgzMXBBXIycbBycrBxcLDB1ENxsDXL4L4ZYvDmIMoVnSYeaDcHPVlf7NFBBmNWDtqVh4CKZbisXRwskzje1X53nYN+v1iIg11bqbZzdTBxcnBv1vnRQQZj6guMUbtiHMTdr52DaebooA8H2zrtdtcMMSiGautOjtHKaZOw7sTB0vpcLGvc6SCDMSMHn3/OQe2v4GDn4/oCDq6++ay6xOZOcRCT+dWyLlwcbF0c9AYHF+GODjIYTxNfYOzuoHJ0MG3jeCUOAjjvuwOrboyDKLNJxcHA0UG7G5bBwZcXOshgzGGBcWJuRAcHfVsH5QpBu7gUx1s88Otl2PN3BS26QWNdrFapu4Opk4Nq+fLn2TjY0UEGY8ohmB0d3FvNTMCtr6ODRbeLsy02L8kwF/VdFwsmYOFLDI2DlXJ2cGPv4G5wEOuL6SCDMel88OjgPgvtHQydHES/b7xAGXVXxYs4+266Q/Tm4FqprZODSYWKG8tk95QP0kEGYy75IGbs2zqII7XTozM4mC1raatDPph990kPDrbiYOVtmyiyv5ehgwwG48v1H64Olo4ORicHsZ0kXJbfOmjakNu0BGe4VbF3MJKf2Fo5qMXB55c/S+NgWtBBBoMOnq1ncc0Hm7rChQfqAa92MFuEbWccxLxDVwe1q4MbOshgTN3BLM7QSbtX2bOlgytHB0scU58PbXVwMPpu5EHaZ4ts15Wlj3zQ0cHQ2sFetaguD+kggzEDBzN3Bz10hRQOLEljCPpDWnPo/LZoscC41kWWd2UjDvoODgLe8NmqI083BweZDzIY04/Cz0Lj4Ku1g/7Kw2nVwUE0yFWbtOyATKzab2f7af/gIDqNvdbVwaWlg8lbPriigwzGxB1cvjlotQ1uhIPtOwc31ziIyfx97Qdl760dTHJzEGf3wUHZmkwHGYzpRvTmYObkYOqQnmFwDLZ2ljU+c1ytvn3AiAZjz0zmD/A3efdzDu4PDiZ0kMGYQT6onBxs3RzEGKxKtpPUC3zmKrF1MLD/jI1xsLC7DDcOZuGCDjIYc3Jw+VMO5gpP+8oOTyZjLEX51sFmLQ6uZN+xo4OdrYNFuRIH/+JLXGQud9QMBuMhHYztHCzEQYc17tHJQVmBdMWSPJxR1WKBQQuBv/shByM6yGDMzcGFk4Ops4OZcVA2hmZXLI+Pjg42cLBPHBqaHRz0V+rkYEcHGYw5OPiK3/I/5WCxNQ6ajaFZ/v2ep4ODbdcgA61cHAzcHcSXmHUNHWQwpu5gmB0dDOwdjBwcVGqH8dIrKZvJv5/jGgVowENjXV1ipbuLg1GAhfF0kMFgXHRw58VvDkY2Du7gYOkwZmEbmnYScTBcB/qaWbGZTIUu/Q0cbFzywV7WxVuNH9y8czCI6CCDMe188OhgaOdg4OzgxlOypamVfPA6BzGo0Cx+31TY5O6UD4aZvYPmDwdAmNJBBoMOXnIwxFWqfdlM03pqU6e1cbC9xsEtBs6YSV3bqlqXxZN9PpjHbg4qOshgTD+kCvDkYGfrYOjiYPnewe/LqGVeYS+Dq+vU3/bV2ndxcEkHGQzG/+FgjnywiazLZnxxsEtr82BydYWDRS0NxtnWOJinTg5mlg6mbw4u6SCDMR8HF5YOLp0cRP11qLZwMEf9oFoVVzq4yPBzXnI4GDw5nIvNbYe7g3yjMBjTdlDFWNE0ONjY5oP2Y1gxVnUXVtt0cLBKrnBQdztp8z042Lk4uMuyxA751jgY0kEGY/IR4WndwcGlnYORq4NIzjwM0YKD8dUOtuIgnim+7KreYQL2cKXT2Dv4SgcZjDnkg+XmnYOlFRW9m4O1TEsofVx+wMH6ihJl7B/2jg6qamt9FJdSx1CNcJBjWBmMieeD7xysS6t80DhoX8xX916OXmFxEEWBVziIQf5w0EPN4Qt0cnawpIMMBuNCFcvRQVSmWFHRVd7SycHKw5SZMjEOdlYO1tBpXzo42IZ2Jd/Gwb90kMGY27k4zra+TT4owwvsHdSoisaWETgoW4nza+YXyqbkhTTWpfWm8vb2DSWDg76Dg9L6RwcZjLk4iBH0Vg665oO62SosqTs4uE6vKM2TgTPZycFnZwc180EGg3FpC/HBwXhrQUXUuDq4gYNN0YiDWLsUXZd6ZtJgnHbIJZ/tR31p46DFAuOI+SCDMaOIGmcH0xs4mPjRlXOzFrFxsPeWDg6idNtukTsdZDBm5mAYu+eDhcOYBeWtrBx8Kro+W8R9naauDq7sHJR8sKKDDAYdvGYZppuDWFpclGvjYHmdg7k4iAZj1B4u7QctDA7aDGJF5TXzQQZjZg4+OznolA+WpgYwsHFQo3VlEVfGwTDzrWu34aCyWzlPBxmMuTmY/aCDGIBdVdsg8NfVAmMWmuscXIuDG9/v4GDq4mCI62Y7B+VcvKeDDMbM8sHQykE/Ud6zvYNYQlz1xkEFB5Pmys/lwcGVX3brUHX2M27wtWY7mx5AcbCigwwGz8VXONjZO5hiZkwd4L+Mg8H1Dio4mK49z372qxRix9YOZsbBBR1kMKbvYPLOQZsrVTxz89pOO+wKkdlZcBBXH9WVDpYHB5s08Tz7XaH4+Zmrg8wHGYx5ObixcFC7OfjU1H0vDg6lMNcNE8QXKQ62foPE0Nu4Obi0dbCngwzGTBwMXB1M3fLBclv16zTADrrF1Q4+SWOdOBgYB1PrT9p0Ixx8poMMxuQdrA4OepYOoh66tSfJ36p+7Qd4LInRCfmVzxeDVBzET8PkGZdP6uBgTgcZjJk6WFg5qBxSM3+v+gTjZmSU1rUOor1DxYODyAd31pua8PPpIIPBuMbB0MrBzjhoX8q3D42DZsT07vp8EA5iRVOZhO4ONnYO5gcHWzrIYNDByw5azfQ7pJH7sIKDfmtGq6YWDobi4Db0lp2Dg0u0J1/vYEQHGYxZOvhsdy4usH/YycFnBweLNAslH8Q0//jqh4r/OJhtmQ8yGIxvHAwtHVx6KrF2sDg5GMYLb3XNOGrzs5biYAcHF2Fvv8FYHLRZbHLMB5/pIIMxHweXxsG9tYOlvYNL4yA2J8HBxLdwMOuTUhysuv/dwSc6yGDMysHUyUGsW3JyMOiWIbYXy/JjyQevdFD7uM3OqqQs6+VPOHjIB1+Mg3s6yGDMycHO0sHO1sHo4GAzOJhc7yDywWolDnpV1zxZD7lZ2i0wpoMMxpxihIMy+sW+ohkP+Oq0xAAt3JMk5bUOthBJbfzS8TRu6eAxH2yNg/aDXxkMxsM5uIhPDkb/u4OZLFySLe5uDrYut9SF/+yQD77QQQZjRudi46D3Ew6WCZLPly4VB2P8/OscjMoNRMLa48atelscrCwWuUcfHdR8nzAY0z8XOzjY1FmYWd9YRNIQAgexgBMO4udHVzq4UqbDrUk3StlPd4CDysZBvCr90UGPDjIYc3KwtXIQE0qtHdS+cbCut8rKQQycMROwMGgBDtb6/88H+2r3Yu5J6CCDMTMHrx5FEJXIB10clIExcHAjDi6vdhBf5cHBpFL2W1Gkq9k6Hzw6uKGDDAYdvDBHcLSDoYODpauDqkoc80E6yGBM3kG/Hxzc/4iDaet5ezi4Pzp49VcZ46uEg13v4mApDlp41nTGwSUdZDDo4FfzVMPM3sFCHNzUXd3CQe85tXMwEwdzZTVJ8ODgxtrBvh0cVHSQwZiBg569g5E46JAPBl0beltxEJvgvOs7d4vS1NmkDRpRHBxE3U1FBxkMxsWrVCcHtXEwtXdwhzXJdYqhXXGGTSPXOqhL9OHFYVeKg5m9g80YB0s6yGDQwbMObrxsZ+sgqq9zONgZBxfy5O1aBxv04cXoRxYHlYOD275ap64Osr2YwZh0RAcH/9o7GIZODnpZnab4L8kHr3Uw0s0Omzs9s8ldhTYTtI71h1YO4sdX4uCODjIY88gHc0cHPQcHsb04zKS9GMfczGJgwsHBTVqigFAcjGynLNrlg+U7B1d0kMGgg2cdTOFga+1gWVfeUvLB3tLBwMzx32Ayf6I8yGTrYJdX6+vb8dD+V+VHBxM6yGBM3cFSHFz8/fP6Iw5u3xyUMQvXj3VolckHGwgFB3VkWy2OuQmuDjZ0kMGgg5cdLOy3uKO9OE230sSi0sDKQRTadE3jj3AwooMMBuNmDkpBdLjxrR1M1GHcTGjaQ64/2K7EwV3XSL1j4ls76MPB2tbBWrYB0EEGY/KhHR3sMBDVwcGV8p7FQTM+xrcYf72qMtn73gRlH7bWDhYODq7goGwDoIMMxiwcXAwO7v53B1OMzYKDtbWDRVJJQ3JdioPr1M3B66eK+eJgPThovyaUwWA8VKAyL8dNrKWDkQ46MyBfW34ycXCPtjqMm4m93fWNGnBXGutyONjkWOheWEKI07+dg6ujgzEdZDCmnw++OZjZORi6ONiKg+ngYGvjYJpni7g3DoZ55+Cg6m0c3FR5QgcZDOaDXzpY7+Bgaesg1otU0laHcTOxsnFQGwerQz7YBT/gIPNBBmN++WBo7WDi4GBVbdFOMqyfa7TFJFVpMMashCEfDPSTvYPbgA4yGIyv8sG/YWbpIG5SbR2sd1UvbXXPpmHNzkG1yMRBTJ7pE1sHdblGIurmoE8HGYyp54OBOJiJg7b5YJXaOyjXFb5vgFEri7Ex7xzceZWTg2p79c9672BPBxmMyeeDxsHYPh9EWpZazr/64CDSSRsHy3W4WBgH2x9xUNFBBmOO+aCNg42Tg0Vdob3tkA9WNj89AmSLhXJ2sGnpIIPB+NJB23ywEAdz39rBrcJlb+nXC5RRWzEqG4zFQWwokVUjjYuD19/LfHSw4LuEwWA+eAa00snBAA6uDw5muYODLR1kMBj/o4OxnYO9k4Ohao/5YO4X9g52DUZ3uTiIvceODpZ0kMGYvIO7w7kYGZqFg1sHB/XgoJ9uURNt6SAGzmQLtauNg2tbmywd1HSQwZing5mdg1VmBdmg0ebgYCwOllYOJuIgGoyNg76jgxEdZDAYlxx8tXdQ7awdLOHgpvO7rSyfW9tMU4WDGLyVmaIb1N7YO7iqVHu9gykdZDDo4DX54K60czDSZTs4uDEONlYO1uJgdnDQttfN0cEsEwe5vpjBmLyDrZODG2XvYOG3sZIxC8bB1uayAw72eKiopDlZRuzbOhhYOtgODsZxnDd0kMGYjYOL6x18EgeVg4O7cQ5m4uBLXlW19Q2NvYNbOshg0MEvHcRA1dbWwSCFgy8ydiu2drCoZfBWuO18zGqobDe500EGg3GFg39+wMEuh4Pp4KDaBJYOShIpDraV2pZ0kMFgPKSDdY6R0nBwJw6urBzEyC5xcCMOKm9veXmhcd2sdnAwsnJQ0UEGgw5edrB1dHApN747+3xQd7jXhoP14KDv5GBh5+CWDjIYdPCLSsBWhXtrB7c9Zhw2uPEVB7dWdx0YZS0OtnBwU3nP9g725l6HDjIYjN90EG11VbzD5Kw6x2esLB1MZZb/m4OFvYO5jYOecTBD2wsdZDDo4PnGs8FB2/biKmuxgbjujYOFnYMrLzMOdtvKW1o6iHaUnA4yGIzbOoj5zhtbB5sNHGyKpoODocX6uMNKYckHd8ZBWQFvWbrYwUHMhbjWweeQDjIYs4no5ODS3kFt66DCLTEcrOBgXms3B9Pa3UFt6SDGg+3oIIMxEwf3cBCjopv/18FWHNRB6uJgmYhKuTiYh5nlSgA6yGAwrnIw6692sBAHt80YB3fdjzqYwsH0egeX+Ex0kMGYjYMbJwdzaW6zdBCXzLglllq+xcJbp3YOYoLg4CDKbkJl66C2ddCjgwzGLB3MbRw0pFk6iC3uWzwfNA62lg4GXSXTAE0Zdhh2jb2DfdrQQQaD8aWDyiofVP3WcuiLJJF9fXLQt21O7sXBLRxch2Fi92zS3kGeixmMGTlYODmY5pW1g4EvW9yDoDQOJr7lz05zWXq89Ut0loQr38HBrqSDDAbjGwcTKwcthwBi7FZvHPRl9Zy3snSwGBxM/DI1DtpVH8oFd59c2wBT0EEGY14OruwdBGkmtbOTDPXTvXFwLSs4V7ajs9KdOLiCgysv3KT/q4PdwUHUUe8COshgTN9B9eZgaeWgZS0z+un6dRcEKRyMVWI7SjVde8bBRhxs7S6MowgOVlcnkboz9yQbkw/SQQaDDl6YqIolIZY9vtjtNDgok6VVYrtixE88cy5u/P/dwUM+SAcZjNk8H/wpB/0tPkMa4OeKg7Wlg9Gbg0kYtp3lw0k6yGAwbuxggiuPVFtCtsFn8INh81xv7WB5cDAQB3fWDiboZfEDOshgMC44GNo6WPfV2tJB7e+9XBzEFMJFnDs4CJaqtcwvzOwdhKJq4+JgSwcZjJnkg892DjbbCiJZOijDC5IyaFCOIg4Wll9p+7g8kwAAHgpJREFUIw6qg4P5/+/gywsdZDDm52B1rYPa2cEUY1ixvXiB+fyFbeOLcRBDY5p64eZga+cg80EGg/ngdw5ajt2S4mS0tsFBz4ybsc0HA//kID6QbYOxcTBlPshgMC7WzVjmg+WmqixbfJ8CweXkYOvqYEoHGQzGfTiIH2xZCG0c7JrAb42DqS0vhTiYQVI4eP2XenqiuaKDDAbjOwefbRzcWzuImsPFWAdD46CAWlmOaaCDDAbjCwdl6kG8dHDQ8qai6bJ3Dq4cHMzgIHqgg66Vmmj9/zkYyJdKBxkMOvjV1AIXB8taxknDwV0oDvq2vGh/CQfxNQZpW1UbjHGNrBxU4e76fNA4uB8cjPguYTAm72B1dLC/2kHkdA4Oog2kLmWO4BgHVyUaSuBgZ+kg+kl2lvngPqSDDMb8HLzuoVtUwEGVWHe2eW8Oxra3zcZBL14oWQSPrr62LlwcfLraweXgoEcHGYxZOVhd7+CztYPa3xgHm04czCzve80H2HlxJsXQJaZ+LevA2sHc1sGMDjIYdPArB1eWDpqxgTXG6mOudJZZ1v8ZB1vkg+GzXzQODgZbawf/MB9kMOjgFw4uvcrawY1x0K+xf3Ox7Kx5ibD2Ew4uTw7q/9fBP4ODGzrIYMzDwYWDg7bnYqwV8fZ1mmLcTByPclAWPlk7WF/vIEodFR1kMOaYD+7/Zwe7o4PK1cEVHMxODjZW+4/pIIPBuFwD8+Zg/386WIiDr3XamS1wLg5i7zEGuB4czLa2DlZYYGzn4DMdZDDo4JcO1rYO7rzw5OBzau9gkFa4wF36svGuUtvSqoAQk2OxwPhqB0M6yGDQwa+dcHAwqHMvfIGDG0+qk+32br45mGXiYNLbOljUssi9oYMMBuOMg13v5GDv4GD80vnd3pNqFHsHMXirRz6oDg5ufDgY2ToY2Tqo6CCDMScHKzior8zMxEG7Teo4mHqLOvXxmBAO7lPt4GAuDsoIQzgoy+csHayud9CjgwzG3Bxc/O8OPjV1ZRysjYMb336KS1Hm0vCbmsa6sPULbeXg7vo5EuLgMx1kMGbkINYJHx1M/08HcQcrZdTLcQ56surJ7zFE63910KODDAYd/NrBzMstHSy3RwdFF/v2YtmKMjgoDwjFwcDGQd1ZONi8ywdXdJDBoINnnVC2Dsr64fcOWrcX4yttdicH8wwbjG0dVFc7mLzlg3SQwZiBg6lx8O//7aAPB5/FweGyw0EXHbTDVXMQlHCwtnSwhYM+HWQwGJccXPz984oVdNc5qJ0cXB0cRPFLWF078eAfB82AaDjY5Fnu4ODK3sGKDjIY83LwyuVJuoSDOwcH94dxM2HlOzg4bHIXBwsHB1M6yGAwbulgYu9gulIKDmLcDPLB3i+cHBRD13AwoIMMBuN2DkY/5WBSDQ6qLPaWpXZ2cCcO7rLebvCWTjGQenPl88+SDjIY83Wwu4qWwcFO2zmIJXPbThxcxF7u5CBGhCGXxPQseVJo6SDuaSpbB5e40bEdq8NgMGbkYGvlIMpz1nAw9dMN1oR6O3cH44ODAMrawZYOMhiMGzmIOw97B3dVv01LTOfHuXjXaMdHmT/m4J4OMhh08DsHU21lWJ1XObY0wUHkg23jgMs7Bwtx0MpS2EYHGQzGVw5mNg4W7g42GDfj6iD8FQf7tNHFCkXfdjmlhYOaDjIYc80H+2p3rYP/tXcvyo1aWwKGLcFG3K8iCEm2u9//JWetDdjqtGWxBT5TKf6/ZuZkaro9Sir5shGwVvyEg12ZtbK9+FUcNM8twxQHTZQucFD+/NwcTHGQaHMOVvPPgyc3B/OLKfukKNqjbHF/8mW1gziYpqU6GHddXDg9g6jbTdwdTDscJNoAhM4OHnJ5Jnk/813dPx2si0odfPKhvEPRq4NxIQ5mXf+Mg7mrg5wHibbgoDd9P9iZee8My9itZj/33YzPPeqy4e7DwXipg6046PZOSt2W6XGmgx7nQaJtOvjrJx0M/fO+PKmDuyUOxtZBzzqY4SARrergbzcHjeMk1bBurIOeOph27XMO1uKg3Lnw8jwRB51m1siMaRcHDQ4S4eDaDhZNIK+1iYNptEuzZIGDJk7Ewd7RwRe/7Rwd/CXPzeAgEQ7ecVBnO7s8AnjIxcHy4tXeJVAHvfxJB+XFOtOPDraO50F10HdzkPMgEQ7edXBvnHw45N41GhzcL3ewtQ52Vf3ifB7EQSL61sHSxUGnr/jkt2RRJw4mJ3HQPOugrw7u5SCYyxSv8uJ0IvVlD8tx3of+08EcB4k4D35FirODrTiorxdbB/tnxs1MDgYygTXXqQkXp28o1cHU3cGsxUEiHFzJwS7SMQvyenG0C/p6iYPd6OCbs4MGB4noSwd75+viJxys1MFicNA87aBd8jQ6GLw57YKXK3MnB3/jINGWHDSDg5njefDF5fHBSxlcq3p0UEYHPutgIEue1MFTGbw6Oig3uec5KN8+4iDRRh2U86D/kw4mfr3UwUwcNDKRX8+DTzg472EfHCTa9HlwloN1mwWpo4PnMmg8cbBXB5/cfTQ4GCmjMkUrOOIgEa35/eCbk4NdcHR1UCYWFrmeJKP0aQdz/e2jg/IRnF4wzue/BKO/NBAHUxwk2qSDMwZvjQ7mTq/ViYOnOpSbFeJg+byDvTp48kM9kh4TZwdPs46QOEi0zeti62D3cw7KxELhSxwMFsy6z+XrxSDQ86B9KvrnHYxwkAgHvx5/tczBtKyetCVUoOx1sf6g1Glag4ODPg4S4eDDMYDd3tVBuUlxycPcOtg972AsDu4HB80zDs5aJuC38ktxkAgHv3fQ8TwoYxZuHMzWcLAPTFu7OijLpQ5zngvCQaLtOniZ46B9eO/q6GBm5Go4lP9UB51WwP9rcbI6WFsHA6cRiLlnHcxdHUxwkGg7Dr47ONjNXYE5XWl6etgMQ38NBwPZ0OR7feC2Kir0zuJgi4NEtI6DshLdzcFEhziIg7E62CdPOniwDhrroKwQObk8SK2GzncwwEGibTpY/pSDh08Hu2iJg4V+PyjjC33r4PnHHLxyHiTaqoOpg4NOa9xlWVwpV8PiYKnvgyRP0qIDqfW6WhzUFcNOn8HVQVlkioNEm3EwHh28ymjT+rGDB7lr6+qgvA5c9uJgrQ4Gbivg/3yC2zqYWAcDNwflLGmu1SwHq8nBFAeJcPBrBxtHBw/WwUQc7Jc5KONcg/TDwavLCyWHwUHfycEdDhJtyMHGyUEjOzhdHJR7tWUsDha9vS5+3sGk26uDtV/H+8jp2R1HB1Oui4k26aCZ52Dezn4z4w8HPXXQqIPF8w5mk4Nt4Ohg3c53MMNBIhx87KDrs3vWQW+hg/nkoEzwSqOjm4NJOW+w2KeDOxwkwsG1HJQr6S4uxMFhfmD9LC25ndvVxYODmZOD/pMOhjhItC0HizkOytdnpdu7HMnrvkvqMBzHbj3tYJj0Hw4eo85lFuz4DCMOEtE3DjYzHfStg4WTg8cgUwdb62DlP+2gpw6Wg4Pp/8BBg4NE23HwdXQwn+Pg0dHB3Droh7k89hLpMe55B+U28U7muOa5OFgmTg56cx2scZBo4w4eZjiYlm4zr9rRQX0dJBCMnv6wxeBgnQutxtVBO1hstoPvOEi0SQfPcx3snBz0Rwf9wcF2iYNmcFBvvch/Ojl4xEEi+n9yUF4DSQcH7dgsp9u8f71gbNK07CcHvYOTg4Gzg9wnIdqeg544eFjdwfrWwf11gYO+OLgz6qCnDjoMbDjkTg4eOQ8SbdfBcJaDmcu9DoFlcnAvDjbJ0w7KQFd1MJNjqx0f4/BSi7uDb9ZBDweJtuLg0dFBp1sURRwEfeLnix08WAdTdbBwHIJoHZy1MRQHiXDw8JCJo+wOdnNwbx2sm8HB52nxvVIdlMt3fU3uWv24gz0OEuHgl1e5budBfepPhgVaB6NIx+k/S4tgJg7uZBCrfSza0cGri4PvOEiEg/eZuKTp1WV3sIyCHhws+oUOytY5GQq46xJ1MDMuC0AHB08ODp5xkGhrDv4z18HiWQf9og8WO3gMdvpCiX0s2tHB497JQc6DRDh459c/4WAiDp7FQd3aKeuHi+UO1roCtOwc3lQ+6ALj8lS7ORjgIBEOruCgTA1sgv1JhqfacTPBCg6eBgeNs4NzRt0ciqrDQaJtOvg2z8FQHDRODuo+YDkP1nWSRTJ+sK2XOijvvYS513fm4nAqfcpBvS7m7xEiHPy3g94plSeYnRy8RsFFHGwXOxh617042IiDhaOD4bPnQf4eIdqSg0Hj+XMcNI4OVtcoFQeLVra4R2nrL3GwEQeDDwcdSA2LN0cHAxwkwsGVHJT7DmlaeXWh24vVwcMSB+XTBq+eOliaU+Hi4BkHiejeKCtXBwMjv9DdQc9ucT8ucrCwDh49uxPe1cFy1vjYycEzDhLh4LcOOjy5V4iDR3XwNDm44NOe7acdHAxcHkUMa0cHOQ8S4eBdB2NnBztxsJgcTJY4WJ9K62BuHWwcHDzUnAeJ6M4/9SdXB5tA1nY6OOhdxJW2FgfNYgdlpLXcxh0ddONYHew5DxLRAweTeQ6Wbg6KWEd9naQRB3Xs1hIHE3UwnRx0+FlKqDgYznawwUEiHLznYC8OOtygkJGpKtZKDnqddVCGuiadvtYy+3M4OBhPDqZmzm8goq05mCfioMO7cXpj5dbB86I31eR1uslBETFrnRzsyjnHOxwkwsHVHUxOZXn2xMGrkTfVTosczK2DgQ75lz9yc7Cd72CJg0SbdPD3fAc7NwdjdTDXiYHq4CJZ8kId3CcyaKHIdBXyfFT9NnN3MMZBIhz8ykHTObwjLA42nd5YsQ6qLEsGuISFYqqzu/JaBxC6OJhkZTbXwVccJNq0g4cHDmaODrZ9JwfI0cHSaQP8F09DX62DcsPYz3Qv+3wHcxwkoocOmscOHkLlrHO5T6sOZjo5VW7wRmm35PFB+WG1Ps4yOhh0LoMW5KvFMktmOtjgIBEO3newdXWwyrpMDpB1u9zBl9Bvbs+DOEhE/08OZp6rg/KD67ZUBz3/ZQUHE3FQ71u7OWiyFgeJ6P77xW4OHtwcFDjt2C3dPbzMwVgdbNRBfa+lDl9+0MEIB4k252D/8H7xEw7m4mBvHTRpZJY7WIqDvTiYuzpY2A13OEhE9x1M5zkYuzp46QYHT9bBYpGDB+tgMDioc1VDp0duuhmbPq2DbzhItCkHSycHdauls4Py2IzOsU6j4LoMlkOuH1cdPOQndwfLy0wHzzhItEUHf9k1dI8dlLdv5eJ2voP+pRwcbPQ82Cx2sJPzYCYOhvK6npuD/WwHu3OFg0Qbc3A328HcOljMdzD0z0YdlL2ZCktTL3QwydIokvvPh1Dnxzg76M9xMMNBok05WN84mM04D4qb5ursYJ3nyVUfRFnqYCgOpqODnbODczZ9yrxEHCTapIO/ZjqYuzvYjA7KCva0PPkrOJhaB3VugsNdFxwkolUcFE10mqCLg/XgoL+Sg97k4EEczFwdPM9zMMNBos062P6Ig+noYCQOxoteq9MNxplJ7dt5Bzs3wdnBEAeJ6EsHU3HwqA4+Ai53dFAupMXBVh1M13Dw4PXioC5kHxz0nXYfOzhYDQ7WOEi0BQc7cXD3cw56V5kbLQ626mDXruRgcZA/krkJDg7KBfp+hoMvk4MpDhJtycH09jx4WPO6+DDMz58czJKlDhajg2GoDrYuDsY4SESrOCj3i88uDiZ2j0het8E6DspryjIHxrMOyvWx23mwmengBQeJtuRgdetgnT+8T9I4Oth20Y2DXr6eg/Ig9WX+lP+wPomDNQ4S0b/7OA/+M9NB1/Ng1eljz/Lc4X4VB2vrYJOEuv/J/ICDBxwk2pyDlaODetfVwcH6UqZXzzqY7sxqDra5Orh/83CQiJZeF/s/62BYX0zUe7k6uNvpPuBVHLyKg551MJw/uvBU4iARrXEe1KeR6/kOFmcTyGvAk4P1Ygdlj0CaXis/FweDVzcHg+scB3txsMVBIs6D376lW4dODsZ+GKqDqYkXOyiDWFP5nlEdlPOdk4MxDhLRV904GMxwMJ8cfHnCwd26DoprRxcHLzhIRHfPg7vRwerhQW9wcP6wBPk+MdjLy3TTedAPF39edbCbHExyHCSiNc6Dk4Ptw32cuvWtdHQwOMn0aK9fy8FOHDRV7XsXJwdlMHYXZDMdrBIcJNreefB9voPdZf5LIaF3DczgYCD3eU9LHVS3dZ7rpfA9+SMnB+XXzxjUNTrY9jhItLXvB10crBwdjCcHyzUczFL5ovHTQYcForMcfFEH46RSB8vF51ci+i+eBw8zHJz/MLRsiQtMFcrYGevg0rFb8gGqLJCNdRdPHMyCdP77yrpIOehmPMetDrb2PLjG5yWi/8B5sM2m+8V2HkL42MHMzUH5PnFNB1vr4Hlw0Dg7+PDXHwYH9ftBHCTayHlwcPDt16+jzEOoFcLD9w6WLg7m4/Z0387Td7mivutgL4vnzcmrvepqHZz7hp8sNAm6B27KtJ1QHXx/Px8HB7kuJtrIeVAgTI+7KD23SWElvIuLdbANXRxUN0N/2K9U5UsdDBNxMDXnpEgGB+c+0j3DQUEw93VNU3o8GmEQB4k2dB7cyU5gTf75by5V6xW+aBh+peHo4Pwf72WdPPSsNzXkx2ftCg7Gch4MGrmj+96kJqnvfNCvVt31Xzuo7AuAdeEl8bk5yl7QVBHccV1MtKnz4E4PQCphEATp8dqcqjZRDf8yRh3sHzpoZRFafD1dlcf3ODldTRSZNRz07Aslx6Y5/36VRxNbzytqy/Z3x9hh1V0flMm/DngDgYXXVpbAYB8I1/KAj/wbIU1xkGhT18W/fv3Wf/DNXiEQDeU6uTlfBMPRwqHhfNff1WzwbzxbtZXYcr6WOh/GWGUDlyvqbx2U45oJ9EeK2efz5WLZrqdT7Jcefjj48Wdjqa69pLpYAoNg/PeAvK7y9v5+NThItDEH3/95TctzdWqugmFwi2GVeLU9b4kg+j1f1if5rSUKnx79BD/RT/i7nN9eX49HudgOAv1R6QSh6Zc7KAOp9TwoPzEdLuaDwH5QAVFEjOMk+Twg3pCnn1RGWZdebf8PnwK+yQfVH6GfdW/kp1x+y5X8+7tcdOMg0caem5HnB6PuJITIQS5urpkRDeWLMhHCyJeG57i1vtQ6nK+Xl9om9zwrX3W5XN7eGsFPD5WKXzB+4ahGpVkvF516Xdwnazl4PMf9NbXCBpaxVB0LjF7QXuWMeJIPLJ9YKopi+Li+rLorY08/tGL9Jp82tb/Vcl1mjRpa+EWlDlY4SLRNB8uTp5eN+oVZksRxn3VmPx6VBg0v1fulLI//vFdK3/l8tvSJfcGAUTSe0ORkZcpOxGzOR1M2VVEnJ3Fwv5KD8oGvlee1MsomkyOgqN11pRw5AzMdEeVjy/9+HE+JeuEsyaWuOb/bq+BJQP2lphMC48Qb7riE+eBgZR084SDRy2buF48OFsM3f+MNVDk4CTKC4X5vNdR7KEcT7MZj3419+kd7ex6z9MRxbI9iddG+leUpscOjxcFmBQft4nl5AkderIt1IKscUvVYKh9V5c4siPp59SCaDp9M/1C93kXpiPaIpd4Siu03ix+PTR7CTwcjg4NEG/t+0Dr4r3sL8sWfPk7SjHzoV356RzWKbr6bGy5FYz1TebV+Nfdxt0KeVWmMOKjjB0cHly/Ya4cBhPqCcaqvAh5eppseub1YtyI2zVXIM7dW7+yF+mjjKGA93Fn5409ZHaxaeb8YB4k2837x9F7da1CevhyvordH5GvD4UpZv5ErO7nmzcS+5nSyX6p94Pfy19N+jYyb8cLD5OBhhQNsZx2s5Zu8XXD8e5P79MiOipjEp5OQeJWP23VGT4hysW7FvvfmzOigzlnguphoM/NmsnH+4F0HPy6URcPqzZjrRQ5+etvk9kmVlztPPb/KuBnvIMuPTCDHK28NBzN1UF4BrMXB7G8Hpwd4Ps6Iw/0cz4ubNLi2nv3Qdz8xDhJt9Dz40MFJl9w7l2UsD+E9emr5w8HjvowLWbre6/3iVRxMBgdlNXx1DLp2xgDC0UTvFMji4weyWQd7HCTiPHj/nQw5D8be/PUkiVClDiZrOfhiHdzpanjfOujPFtQ7B8Hro8GtfzjI94NEG/p+0MxzUN7meNubuJg/ZqFVqoo8l3d7xUGH33n/R1oHO3Ww/TkHuU9CtLXzYJrOdbBoxMHayUHdgidf6un3gw6/8xsHr/rmW1xbB+VFudm/s4iDxwvucJBo6/eL/YfnQXVwPg5+q7cy5M5Elel1cVwv/8RyC1rOg6U6KDdhXBys5zqYjdfFOEi0qfPg77nXxa/78gkHa9kqEkVl5S//wEKxGRzM9eFEB1rri3FzkO8HibZ2Xfw2y0F5T84Bh7qVR1Xkkedatm1GkcOXed8OnBkdDL2zOFg4HH1NcJ3nYIuDRNt7v/j34GDxYD6gdXD+eVBeghscLHQMa7CKg/JItg7mbwpx8CQP8cy/BS0OmquXPx5brQ62OEi0sffqovE86D1Y9yFrOF2ui8WsNNAxC56eB+UKOV/+gcXWPxyc/YqKngfNca6Dds4CDhJtolwdjKLX3+KgPmX8/boPOQ+6O9iKg5f1HPRj2R1ietnAKS/rlc38JQF+lZrswXMz8qi4Tlh8v+ieph0OEm3DwcSeBwOZIiPTWN5bHT91n8InHEzjpCiSi9Fx1MkqDnoyXiu9yoiwIu5cHJRF7ub4zUcYJ45dOh3Yle7YT0K0leRND/1HXi2Uf/B1NYkMIbj7Aq51cPbyTR0BLdeWiZe8/9YxL/0aDr74XikOHiuvkA3G5VVW4B1mH33lPOjff3+6kLEMMptw+GuhDnY4SLSF5Ou2TgZP70YLRSszYFh8NZAl9+QVjkcOfi7/KGRUavr2LnP6j5F1MFzOirzjLANnIrsy4PfRHN+TmzVN3770/LWDE4HVWUZ1GR3S9fHXYo15iUT0H3AwrL2+u/nHXwGwA1ebU+JNA2U+DdL3Q/y/dZhWlQybSsYdmDqpX4lNh/F/e4cXk79dJS8O7oYpgnb44auO4R/WBvjDALCvh0DIHZDy1sFxiI4sqzsNE6qj278I8u+Dc8JxkGgjEurucllePpyFolsM5dCliz6GfcZqi+8N78mF046mYfZpPSwqkc0mJzvvL/tjVP/4A3XZ8BoOhoXsAN3ZBcOW13EStk6cblTEYTPJsJXk9pwod0D6ThycdoraPSWyl8ruaboh0M6XLTMZUljPvuQmov86hMMKX2vhfhAhuiFh+NKwtfNWveposkqOiXU97KaT7KjTYfyzUZL2n2uaPhSMlMHeW+V4JTeMO5mMPXy+XXRTMO1qkiGxjR0SG7fDuiarYlHJ3P4qkWVTulJUBZxm9P9xFJZ9JcOg1hAFibZnodgmI6fNxNgtDoE9buk3ckEny+lkR1PTTCuaRvtuRdpZTCel7N6kLvZWusoUCDNz8/9yN/2P6b9HEmUFk91fpxtT3mRX0+X9WHa/7Zqmjz1NfxwCZb1Udo2nBfb8TUG00fRkGMfXrDSfTEQfUgy7OHd2M3Hwby7tqW/4r93H6iYd4m83NyWevx4toV7J67j9rizNuG5592d62by7UXHYozwubroFcPexta6X5VK1H3IMJOJkOK6qG/Z23n7D90nHV6UfV6bj0k67CMTevyiGuy2r3t2xawLsvH3dUzcsqhuuyFMFb5fuHjUuWNbP2seWwG/G9RPRZi+T7ZeG5f4vDT+vR4frSb0C/bQvtl/JjfcpDocfw+WPHSTD5k5L4u0x8e+T4udlsCkHAYfrYAQkonvLmVRDu9LdHreG7FeCE359P+wrLv714Mrhf/pRpzV19vZ1MRwTr+M+Y7uO3u4btWuY5YMPZ8Di+51NRES3ezCHK2U9bGX2bmxs7bOHPvt0yv9avseEhx/rO73hoHgdPvt4EcwRkIie/E5ualrW/l+RfHrC235yACSipVeg/GUgIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJy7vB/dcMvDh7xpqUAAAAASUVORK5CYII=", Zn = 768;
|
|
9041
9041
|
function Oo() {
|
|
9042
9042
|
const [o, g] = Q(!1);
|
|
9043
|
-
return
|
|
9043
|
+
return HA(() => {
|
|
9044
9044
|
if (typeof window > "u") return;
|
|
9045
9045
|
const t = () => g(window.innerWidth < Zn);
|
|
9046
9046
|
return t(), window.addEventListener("resize", t), () => window.removeEventListener("resize", t);
|
|
@@ -9157,7 +9157,7 @@ function er({ landmarks: o, w: g, h: t }) {
|
|
|
9157
9157
|
}
|
|
9158
9158
|
);
|
|
9159
9159
|
}
|
|
9160
|
-
function
|
|
9160
|
+
function Ng({
|
|
9161
9161
|
previewUrl: o,
|
|
9162
9162
|
productImage: g,
|
|
9163
9163
|
bodyLandmarks: t,
|
|
@@ -9184,13 +9184,13 @@ function zg({
|
|
|
9184
9184
|
const v = b.currentTarget;
|
|
9185
9185
|
M({ w: v.naturalWidth || v.offsetWidth, h: v.naturalHeight || v.offsetHeight });
|
|
9186
9186
|
}, Y = 6e3, h = 1e3, C = QA(Date.now()), [W, Z] = Q(0);
|
|
9187
|
-
|
|
9187
|
+
HA(() => {
|
|
9188
9188
|
const b = (Y - h) / Math.max(1, u.length - 1), v = setInterval(() => {
|
|
9189
9189
|
const F = Date.now() - C.current, z = Math.min(u.length - 1, Math.floor(F / b));
|
|
9190
9190
|
Z((K) => K === z ? K : z), z >= u.length - 1 && clearInterval(v);
|
|
9191
9191
|
}, 100);
|
|
9192
9192
|
return () => clearInterval(v);
|
|
9193
|
-
}, [u.length]),
|
|
9193
|
+
}, [u.length]), HA(() => {
|
|
9194
9194
|
d && t && W === 0 && Z(1);
|
|
9195
9195
|
}, [t]);
|
|
9196
9196
|
const i = u[W] ?? u[0];
|
|
@@ -9333,7 +9333,7 @@ function nr({
|
|
|
9333
9333
|
/* @__PURE__ */ A("span", { className: "ps-msr-match-label", children: h("FIT MATCH") })
|
|
9334
9334
|
] }) }),
|
|
9335
9335
|
/* @__PURE__ */ A("div", { className: "ps-msr-sections", children: a.map(({ name: i, secResult: b }) => {
|
|
9336
|
-
const v = i.replace(/\s*[—–-]\s*.*/g, ""), F = b, z = c?.[i], K = !!z, wA = F.found === !1 ? h("No fit") : K ? z.displayLabel : F.size || b.recommendedSize, T = r?.sectionImages?.[i], zA = or(i),
|
|
9336
|
+
const v = i.replace(/\s*[—–-]\s*.*/g, ""), F = b, z = c?.[i], K = !!z, wA = F.found === !1 ? h("No fit") : K ? z.displayLabel : F.size || b.recommendedSize, T = r?.sectionImages?.[i], zA = or(i), MA = T || zA || null;
|
|
9337
9337
|
return /* @__PURE__ */ e(
|
|
9338
9338
|
"button",
|
|
9339
9339
|
{
|
|
@@ -9341,7 +9341,7 @@ function nr({
|
|
|
9341
9341
|
className: `ps-msr-section-card${K ? " ps-overridden" : ""}`,
|
|
9342
9342
|
onClick: () => n(i),
|
|
9343
9343
|
children: [
|
|
9344
|
-
|
|
9344
|
+
MA && /* @__PURE__ */ A("img", { src: MA, alt: "", className: "ps-msr-section-icon-lg" }),
|
|
9345
9345
|
/* @__PURE__ */ A("span", { className: "ps-msr-section-name", children: v.toUpperCase() }),
|
|
9346
9346
|
/* @__PURE__ */ A("span", { className: "ps-msr-section-size", children: wA }),
|
|
9347
9347
|
/* @__PURE__ */ A(
|
|
@@ -9409,7 +9409,7 @@ function Wo({
|
|
|
9409
9409
|
t: g
|
|
9410
9410
|
}) {
|
|
9411
9411
|
const [, t] = Q(0);
|
|
9412
|
-
if (
|
|
9412
|
+
if (HA(() => {
|
|
9413
9413
|
if (o == null) return;
|
|
9414
9414
|
const d = setInterval(() => t((u) => u + 1), 200);
|
|
9415
9415
|
return () => clearInterval(d);
|
|
@@ -9495,7 +9495,7 @@ function ir({
|
|
|
9495
9495
|
t
|
|
9496
9496
|
}) {
|
|
9497
9497
|
const [r, a] = Q(0), c = Math.max(1, Math.ceil(o.length / yo));
|
|
9498
|
-
if (
|
|
9498
|
+
if (HA(() => {
|
|
9499
9499
|
if (c < 2) return;
|
|
9500
9500
|
const s = setInterval(() => a((l) => (l + 1) % c), rr);
|
|
9501
9501
|
return () => clearInterval(s);
|
|
@@ -9648,7 +9648,7 @@ function cr({
|
|
|
9648
9648
|
{ title: t("MATCHING SIZE"), desc: t("Comparing your measurements to the size guide.") },
|
|
9649
9649
|
{ title: t("FINALIZING RESULT"), desc: t("Almost done — preparing your recommendation.") }
|
|
9650
9650
|
], a = 6e3, c = 1e3, n = QA(Date.now()), [w, s] = Q(0);
|
|
9651
|
-
|
|
9651
|
+
HA(() => {
|
|
9652
9652
|
const D = (a - c) / Math.max(1, r.length - 1), d = setInterval(() => {
|
|
9653
9653
|
const u = Date.now() - n.current, m = Math.min(r.length - 1, Math.floor(u / D));
|
|
9654
9654
|
s((M) => M === m ? M : m), m >= r.length - 1 && clearInterval(d);
|
|
@@ -9728,7 +9728,7 @@ function Fo({ lines: o, fitRows: g, show: t, imgWidth: r, imgHeight: a }) {
|
|
|
9728
9728
|
const Z = Y.x1 * w, i = Y.x2 * w, b = Y.y * s, v = i - Z, F = v * 0.06, z = (Z + i) / 2, K = g.find((RA) => {
|
|
9729
9729
|
const mA = RA.area.toLowerCase().trim();
|
|
9730
9730
|
return !!(mA === L || L === "chest" && (mA.includes("bust") || mA.includes("chest")) || L === "waist" && mA.includes("waist") || L === "hips" && (mA.includes("hip") || mA === "hips"));
|
|
9731
|
-
}), wA = K ? c(K.fit) : "#2154EF", T = C * 0.35, zA = `M ${Z} ${b} Q ${z} ${b + F} ${i} ${b}`,
|
|
9731
|
+
}), wA = K ? c(K.fit) : "#2154EF", T = C * 0.35, zA = `M ${Z} ${b} Q ${z} ${b + F} ${i} ${b}`, MA = v * 1.05, E = K ? K.fit === "good" ? "✓ Fit" : K.isLength ? K.fit.includes("short") || K.fit.includes("tight") ? "Short" : "Long" : K.fit.includes("tight") ? "Tight" : "Loose" : h, gA = Math.round(14 * M), O = E.length * gA * 0.62, X = w - i - 12 * M < O, rA = X ? Z - 10 * M : i + 10 * M, uA = X ? "end" : "start", iA = X ? Z : i, yA = X ? Z - 6 * M : i + 6 * M;
|
|
9732
9732
|
return /* @__PURE__ */ e("g", { children: [
|
|
9733
9733
|
/* @__PURE__ */ A(
|
|
9734
9734
|
"path",
|
|
@@ -9738,8 +9738,8 @@ function Fo({ lines: o, fitRows: g, show: t, imgWidth: r, imgHeight: a }) {
|
|
|
9738
9738
|
stroke: wA,
|
|
9739
9739
|
strokeWidth: u,
|
|
9740
9740
|
strokeLinecap: "round",
|
|
9741
|
-
strokeDasharray:
|
|
9742
|
-
strokeDashoffset:
|
|
9741
|
+
strokeDasharray: MA,
|
|
9742
|
+
strokeDashoffset: MA,
|
|
9743
9743
|
style: { animation: `ps-pose-draw 0.7s ease-out ${T}s forwards` }
|
|
9744
9744
|
}
|
|
9745
9745
|
),
|
|
@@ -9769,9 +9769,9 @@ function Fo({ lines: o, fitRows: g, show: t, imgWidth: r, imgHeight: a }) {
|
|
|
9769
9769
|
/* @__PURE__ */ A(
|
|
9770
9770
|
"line",
|
|
9771
9771
|
{
|
|
9772
|
-
x1:
|
|
9772
|
+
x1: iA,
|
|
9773
9773
|
y1: b,
|
|
9774
|
-
x2:
|
|
9774
|
+
x2: yA,
|
|
9775
9775
|
y2: b,
|
|
9776
9776
|
stroke: wA,
|
|
9777
9777
|
strokeWidth: 2 * M
|
|
@@ -9780,10 +9780,10 @@ function Fo({ lines: o, fitRows: g, show: t, imgWidth: r, imgHeight: a }) {
|
|
|
9780
9780
|
/* @__PURE__ */ A(
|
|
9781
9781
|
"text",
|
|
9782
9782
|
{
|
|
9783
|
-
x:
|
|
9783
|
+
x: rA,
|
|
9784
9784
|
y: b + 1 * M,
|
|
9785
9785
|
fill: wA,
|
|
9786
|
-
fontSize:
|
|
9786
|
+
fontSize: gA,
|
|
9787
9787
|
fontWeight: "700",
|
|
9788
9788
|
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
9789
9789
|
dominantBaseline: "middle",
|
|
@@ -9818,7 +9818,7 @@ const Qg = (o) => {
|
|
|
9818
9818
|
if (c.toLowerCase() === a) return r[c].toString().trim();
|
|
9819
9819
|
}
|
|
9820
9820
|
return "";
|
|
9821
|
-
}, lr = (o, g) => g(o === "good" ? "perfect fit" : o === "too-tight" ? "too tight" : o === "tight" ? "tight" : o === "a-bit-tight" ? "a bit tight" : o === "too-loose" ? "too loose" : o === "loose" ? "loose" : "a bit loose"),
|
|
9821
|
+
}, lr = (o, g) => g(o === "good" ? "perfect fit" : o === "too-tight" ? "too tight" : o === "tight" ? "tight" : o === "a-bit-tight" ? "a bit tight" : o === "too-loose" ? "too loose" : o === "loose" ? "loose" : "a bit loose"), Ug = (o, g) => g(o === "good" ? "perfect fit" : o === "too-short" || o === "too-tight" ? "too short" : o === "short" || o === "tight" ? "short" : o === "a-bit-short" || o === "a-bit-tight" ? "a bit short" : o === "too-long" || o === "too-loose" ? "too long" : o === "long" || o === "loose" ? "long" : "a bit long");
|
|
9822
9822
|
function Ct(o, g, t) {
|
|
9823
9823
|
return g === t || !o || isNaN(o) || g === "mm" || t === "mm" ? o : g === "cm" ? Math.round(o / 2.54 * 10) / 10 : Math.round(o * 2.54 * 10) / 10;
|
|
9824
9824
|
}
|
|
@@ -9827,7 +9827,7 @@ function pr(o, g, t) {
|
|
|
9827
9827
|
const r = (c) => Ct(c, g, t), a = o.match(/^(\d+\.?\d*)\s*[-–]\s*(\d+\.?\d*)$/);
|
|
9828
9828
|
return a ? `${r(parseFloat(a[1]))}-${r(parseFloat(a[2]))}` : /^\d+\.?\d*$/.test(o.trim()) ? String(r(parseFloat(o))) : o;
|
|
9829
9829
|
}
|
|
9830
|
-
const
|
|
9830
|
+
const Jg = (o) => /length|lunghezza|longueur|länge|largo/i.test(o);
|
|
9831
9831
|
function cg(o, g) {
|
|
9832
9832
|
const t = o.toLowerCase().replace(/\s*(size|sizing|—.*|–.*|\(.*?\))\s*/gi, "").trim();
|
|
9833
9833
|
return g.find((r) => {
|
|
@@ -9863,10 +9863,10 @@ function qo({
|
|
|
9863
9863
|
sectionFound: F,
|
|
9864
9864
|
allSizes: z
|
|
9865
9865
|
}) {
|
|
9866
|
-
const K = t?.recommendedSize || "", [wA, T] = Q(null), zA = qn(W ?? null),
|
|
9866
|
+
const K = t?.recommendedSize || "", [wA, T] = Q(null), zA = qn(W ?? null), MA = a.toLowerCase(), E = MA.includes("mm") ? "mm" : MA.includes("cm") ? "cm" : "in", gA = c || E, O = (x) => Ct(x, gA, E), fA = (x) => pr(x, gA, E), X = (x) => {
|
|
9867
9867
|
const q = fA(x);
|
|
9868
9868
|
return /^\d+(?:\.\d+)?(?:\s*[-–]\s*\d+(?:\.\d+)?)?$/.test(q.trim()) ? `${q} ${a}` : q;
|
|
9869
|
-
},
|
|
9869
|
+
}, rA = i ? Object.keys(i) : [], [uA, iA] = Q(null), yA = n?.secResult?.recommendedSize || "", [RA, mA] = Q(null), we = xe(() => {
|
|
9870
9870
|
if (!n) return [];
|
|
9871
9871
|
const x = n.section, q = x.headers.findIndex((UA) => /size|taglia|größe|taille/i.test(UA.trim())), XA = q >= 0 ? q : 0, S = x.headers[XA] || "Size", pA = x.rows.map((UA) => Te(UA, XA, S)).filter(Boolean);
|
|
9872
9872
|
return [...new Set(pA)];
|
|
@@ -9878,10 +9878,10 @@ function qo({
|
|
|
9878
9878
|
if (g.rows.some((S) => /^(XXS|XS|S|M|L|XL|XXL|XXXL|ONE SIZE|\d{1,2})$/i.test(Te(S, q, XA)))) return q;
|
|
9879
9879
|
}
|
|
9880
9880
|
return 0;
|
|
9881
|
-
}, [g]),
|
|
9882
|
-
const x = g.rows.map((q) => Te(q, PA,
|
|
9881
|
+
}, [g]), te = g.headers[PA] || "Size", qA = xe(() => {
|
|
9882
|
+
const x = g.rows.map((q) => Te(q, PA, te)).filter(Boolean);
|
|
9883
9883
|
return [...new Set(x)];
|
|
9884
|
-
}, [g, PA,
|
|
9884
|
+
}, [g, PA, te]), fe = wA || K, vA = fe === K;
|
|
9885
9885
|
xe(() => {
|
|
9886
9886
|
if (vA) return null;
|
|
9887
9887
|
const x = t?.matchDetails ?? [], q = /tight|loose|large|small|very/i, XA = x.some((S) => q.test(S.fit || ""));
|
|
@@ -9919,44 +9919,44 @@ function qo({
|
|
|
9919
9919
|
}, [g]), Pe = IA((x, q) => {
|
|
9920
9920
|
const XA = x.toLowerCase().trim(), S = a === "cm" || a === "", pA = S ? "cm" : "in", UA = [];
|
|
9921
9921
|
for (let I = 0; I < g.headers.length; I++) {
|
|
9922
|
-
const
|
|
9923
|
-
if (
|
|
9922
|
+
const kA = (g.headers[I] || "").toLowerCase().trim();
|
|
9923
|
+
if (kA === XA) {
|
|
9924
9924
|
UA.push(I);
|
|
9925
9925
|
continue;
|
|
9926
9926
|
}
|
|
9927
|
-
const oA =
|
|
9928
|
-
(oA === XA ||
|
|
9927
|
+
const oA = kA.replace(/\s*\(.*?\)\s*/g, "").trim();
|
|
9928
|
+
(oA === XA || kA.includes(XA) || XA.includes(oA)) && UA.push(I);
|
|
9929
9929
|
}
|
|
9930
9930
|
if (UA.length === 0) return null;
|
|
9931
|
-
let
|
|
9932
|
-
|
|
9933
|
-
const Ae = g.headers[
|
|
9934
|
-
let LA = g.rows.find((I) => Te(I, PA,
|
|
9935
|
-
if (LA || (LA = g.rows.find((I) => Te(I, PA,
|
|
9936
|
-
const
|
|
9937
|
-
return
|
|
9931
|
+
let Be = UA.find((I) => $[I] === pA);
|
|
9932
|
+
Be == null && (Be = UA[0]);
|
|
9933
|
+
const Ae = g.headers[Be], pe = q.trim().toLowerCase();
|
|
9934
|
+
let LA = g.rows.find((I) => Te(I, PA, te) === q);
|
|
9935
|
+
if (LA || (LA = g.rows.find((I) => Te(I, PA, te).trim().toLowerCase() === pe)), LA || (LA = g.rows.find((I) => {
|
|
9936
|
+
const kA = Te(I, PA, te).trim().toLowerCase();
|
|
9937
|
+
return kA.startsWith(pe) || pe.startsWith(kA);
|
|
9938
9938
|
})), !LA) return null;
|
|
9939
|
-
const Ce = Te(LA,
|
|
9939
|
+
const Ce = Te(LA, Be, Ae);
|
|
9940
9940
|
if (!Ce) return null;
|
|
9941
|
-
const
|
|
9941
|
+
const FA = pt(Ce), lA = $[Be];
|
|
9942
9942
|
if (lA === "in" && S) {
|
|
9943
|
-
const I = (
|
|
9944
|
-
return { range: String(I(
|
|
9943
|
+
const I = (kA) => +(kA * 2.54).toFixed(1);
|
|
9944
|
+
return { range: String(I(FA.min)) + (FA.min !== FA.max ? "–" + String(I(FA.max)) : ""), min: I(FA.min), max: I(FA.max) };
|
|
9945
9945
|
}
|
|
9946
9946
|
if (lA === "cm" && !S) {
|
|
9947
|
-
const I = (
|
|
9948
|
-
return { range: String(I(
|
|
9947
|
+
const I = (kA) => +(kA / 2.54).toFixed(1);
|
|
9948
|
+
return { range: String(I(FA.min)) + (FA.min !== FA.max ? "–" + String(I(FA.max)) : ""), min: I(FA.min), max: I(FA.max) };
|
|
9949
9949
|
}
|
|
9950
|
-
return { range: Ce, ...
|
|
9951
|
-
}, [g, PA,
|
|
9950
|
+
return { range: Ce, ...FA };
|
|
9951
|
+
}, [g, PA, te, a, $]), ve = xe(() => {
|
|
9952
9952
|
if (v)
|
|
9953
9953
|
return (t?.matchDetails || []).map((I) => {
|
|
9954
|
-
let
|
|
9954
|
+
let kA = I.chartRange, oA = I.fit;
|
|
9955
9955
|
if (fe !== K) {
|
|
9956
9956
|
const KA = Pe(I.measurement, fe);
|
|
9957
9957
|
if (KA && (KA.min > 0 || KA.max > 0)) {
|
|
9958
9958
|
const me = (I.chartRange.match(/[a-zA-Z]+\s*$/) || [""])[0];
|
|
9959
|
-
|
|
9959
|
+
kA = KA.range + (me ? ` ${me.trim()}` : "");
|
|
9960
9960
|
const ZA = Ze(I.userValue);
|
|
9961
9961
|
if (ZA > 0) {
|
|
9962
9962
|
const Me = KA.min, de = KA.max, De = de - Me, JA = De > 0 ? De * 0.5 : Me * 0.05 || 3, Qe = Math.max((de || Me) * 5e-3, 0.25);
|
|
@@ -9974,7 +9974,7 @@ function qo({
|
|
|
9974
9974
|
return {
|
|
9975
9975
|
area: I.measurement.replace(/\s*\(.*?\)\s*$/, "").trim() || I.measurement,
|
|
9976
9976
|
rawUserValue: I.userValue,
|
|
9977
|
-
rawChartRange:
|
|
9977
|
+
rawChartRange: kA,
|
|
9978
9978
|
fit: oA,
|
|
9979
9979
|
userNum: 0,
|
|
9980
9980
|
chartLabel: "",
|
|
@@ -9984,13 +9984,13 @@ function qo({
|
|
|
9984
9984
|
const x = t?.matchDetails || [], q = n?.secResult?.matchDetails || [], XA = /* @__PURE__ */ new Set(), S = [...x, ...q].filter((lA) => {
|
|
9985
9985
|
const I = String(lA?.measurement ?? "").toLowerCase().trim();
|
|
9986
9986
|
return !I || XA.has(I) ? !1 : (XA.add(I), !0);
|
|
9987
|
-
}), pA = t?.length || "", UA = (t?.availableLengths?.length || 0) > 0,
|
|
9987
|
+
}), pA = t?.length || "", UA = (t?.availableLengths?.length || 0) > 0, Be = yA || pA, Ae = !!(n || UA), pe = S.some((lA) => lA.measurement.toLowerCase() === "height"), LA = !!n?.section?.headers?.some((lA) => /height|altezza|estatura|\(cm\)/i.test(lA));
|
|
9988
9988
|
if (n && LA && !pe) {
|
|
9989
9989
|
const lA = r.height || 0;
|
|
9990
9990
|
S.push({
|
|
9991
9991
|
measurement: "Height",
|
|
9992
9992
|
userValue: lA ? String(lA) : "",
|
|
9993
|
-
chartRange:
|
|
9993
|
+
chartRange: Be || "",
|
|
9994
9994
|
fit: "good"
|
|
9995
9995
|
});
|
|
9996
9996
|
} else if (UA && !n && !pe) {
|
|
@@ -10005,10 +10005,10 @@ function qo({
|
|
|
10005
10005
|
if (!S.length) return [];
|
|
10006
10006
|
const Ce = new Set(q.map((lA) => lA.measurement));
|
|
10007
10007
|
Ae && Ce.add("Height");
|
|
10008
|
-
const
|
|
10008
|
+
const FA = RA || Be;
|
|
10009
10009
|
return S.map((lA) => {
|
|
10010
10010
|
if (Ce.has(lA.measurement)) {
|
|
10011
|
-
const Me = r[lA.measurement.toLowerCase()] || Ze(lA.userValue), de = n?.secResult?.allSizes, De =
|
|
10011
|
+
const Me = r[lA.measurement.toLowerCase()] || Ze(lA.userValue), de = n?.secResult?.allSizes, De = FA ? de?.[FA]?.[lA.measurement] : void 0, JA = FA ? z?.[FA]?.[lA.measurement] : void 0, Qe = z?.[fe]?.[lA.measurement], SA = De ?? JA ?? Qe, P = SA?.chartRange ?? lA.chartRange, H = SA?.fit ?? lA.fit ?? "good";
|
|
10012
10012
|
return {
|
|
10013
10013
|
area: lA.measurement,
|
|
10014
10014
|
userNum: Me,
|
|
@@ -10017,7 +10017,7 @@ function qo({
|
|
|
10017
10017
|
isLength: !0
|
|
10018
10018
|
};
|
|
10019
10019
|
}
|
|
10020
|
-
const I = r[lA.measurement.toLowerCase()] || Ze(lA.userValue),
|
|
10020
|
+
const I = r[lA.measurement.toLowerCase()] || Ze(lA.userValue), kA = lA.measurement.toLowerCase(), oA = /length|inseam|sleeve|hem|rise/.test(kA), KA = z?.[fe]?.[lA.measurement], me = KA?.chartRange ?? lA.chartRange, ZA = KA?.fit ?? lA.fit ?? "good";
|
|
10021
10021
|
return {
|
|
10022
10022
|
area: lA.measurement,
|
|
10023
10023
|
userNum: I,
|
|
@@ -10028,15 +10028,15 @@ function qo({
|
|
|
10028
10028
|
});
|
|
10029
10029
|
}, [t, n, r, v, z, fe, RA]), Fe = ve.filter(
|
|
10030
10030
|
(x) => x.fit === "good" || x.fit === "a-bit-tight" || x.fit === "a-bit-loose"
|
|
10031
|
-
).length,
|
|
10031
|
+
).length, ne = ve.length > 0 ? Math.round(Fe / ve.length * 100) : 0, le = !v, CA = t, _A = CA?.size || K, TA = (t?.matchDetails || []).find(
|
|
10032
10032
|
(x) => /inseam|length/i.test(x.measurement) && !/neck|arm|sleeve|back|shoulder/i.test(x.measurement)
|
|
10033
|
-
), y = TA ? (TA.chartRange || "").replace(/\s*(cm|in|inches)\s*/i, "").trim() : "", GA =
|
|
10033
|
+
), y = TA ? (TA.chartRange || "").replace(/\s*(cm|in|inches)\s*/i, "").trim() : "", GA = CA?.length || yA || y, Ee = CA?.availableSizes || [], Ge = CA?.availableLengths || [], NA = RA || GA, He = Ee.length > 0 ? Ee : qA, re = (() => {
|
|
10034
10034
|
if (He.length <= 3) return He;
|
|
10035
10035
|
const x = He.indexOf(K);
|
|
10036
10036
|
if (x < 0) return He.slice(0, 3);
|
|
10037
10037
|
const q = Math.max(0, Math.min(He.length - 3, x - 1));
|
|
10038
10038
|
return He.slice(q, q + 3);
|
|
10039
|
-
})(), V = Ge.length > 0 ? Ge : we,
|
|
10039
|
+
})(), V = Ge.length > 0 ? Ge : we, ae = (() => {
|
|
10040
10040
|
if (V.length <= 3) return V;
|
|
10041
10041
|
const x = V.indexOf(GA);
|
|
10042
10042
|
if (x < 0) return V.slice(0, 3);
|
|
@@ -10118,11 +10118,11 @@ function qo({
|
|
|
10118
10118
|
}
|
|
10119
10119
|
),
|
|
10120
10120
|
/* @__PURE__ */ e("div", { style: { display: "flex", alignItems: "center", gap: "10px", marginTop: "6px", marginBottom: "4px" }, children: [
|
|
10121
|
-
|
|
10121
|
+
rA.length > 1 && /* @__PURE__ */ e(
|
|
10122
10122
|
"select",
|
|
10123
10123
|
{
|
|
10124
10124
|
value: uA || "",
|
|
10125
|
-
onChange: (S) =>
|
|
10125
|
+
onChange: (S) => iA(S.target.value || null),
|
|
10126
10126
|
style: {
|
|
10127
10127
|
fontSize: "11px",
|
|
10128
10128
|
fontWeight: 600,
|
|
@@ -10139,7 +10139,7 @@ function qo({
|
|
|
10139
10139
|
"aria-label": s("Display size in country"),
|
|
10140
10140
|
children: [
|
|
10141
10141
|
/* @__PURE__ */ A("option", { value: "", children: s("Standard") }),
|
|
10142
|
-
|
|
10142
|
+
rA.map((S) => /* @__PURE__ */ A("option", { value: S, children: S }, S))
|
|
10143
10143
|
]
|
|
10144
10144
|
}
|
|
10145
10145
|
),
|
|
@@ -10168,10 +10168,10 @@ function qo({
|
|
|
10168
10168
|
/* @__PURE__ */ A("span", { className: "ps-msd-card-eyebrow", children: s("FIT ACCURACY") }),
|
|
10169
10169
|
/* @__PURE__ */ e("div", { className: "ps-msd-card-pct-row", children: [
|
|
10170
10170
|
/* @__PURE__ */ e("span", { className: "ps-msd-card-pct", children: [
|
|
10171
|
-
|
|
10171
|
+
ne,
|
|
10172
10172
|
"%"
|
|
10173
10173
|
] }),
|
|
10174
|
-
/* @__PURE__ */ A("div", { className: "ps-msd-card-bar", children: /* @__PURE__ */ A("div", { className: "ps-msd-card-bar-fill", style: { width: `${
|
|
10174
|
+
/* @__PURE__ */ A("div", { className: "ps-msd-card-bar", children: /* @__PURE__ */ A("div", { className: "ps-msd-card-bar-fill", style: { width: `${ne}%` } }) })
|
|
10175
10175
|
] }),
|
|
10176
10176
|
/* @__PURE__ */ A("p", { className: "ps-msd-card-note", children: s("Based on your measurements and the garment's tailoring chart.") })
|
|
10177
10177
|
] }),
|
|
@@ -10179,7 +10179,7 @@ function qo({
|
|
|
10179
10179
|
/* @__PURE__ */ A("span", { className: "ps-msd-blueprint-title", children: s("MEASUREMENT BLUEPRINT") }),
|
|
10180
10180
|
/* @__PURE__ */ A("div", { className: "ps-msd-blueprint-underline" }),
|
|
10181
10181
|
/* @__PURE__ */ A("div", { className: "ps-msd-rows", children: ve.map((S, pA) => {
|
|
10182
|
-
const UA = S.isLength && S.fit.includes("short") || S.fit.includes("tight"),
|
|
10182
|
+
const UA = S.isLength && S.fit.includes("short") || S.fit.includes("tight"), Be = S.fit === "good" ? "ps-good" : UA ? "ps-tight" : "ps-loose", Ae = q(S.area), pe = String(pA + 1).padStart(2, "0");
|
|
10183
10183
|
return /* @__PURE__ */ e("div", { className: "ps-msd-row", children: [
|
|
10184
10184
|
/* @__PURE__ */ e("div", { className: "ps-msd-row-num", children: [
|
|
10185
10185
|
pe,
|
|
@@ -10201,16 +10201,16 @@ function qo({
|
|
|
10201
10201
|
/* @__PURE__ */ A("span", { className: "ps-msd-cell-value", children: v ? S.rawChartRange || "" : X(S.chartLabel) })
|
|
10202
10202
|
] })
|
|
10203
10203
|
] }),
|
|
10204
|
-
/* @__PURE__ */ e("div", { className: `ps-msd-row-badge ${
|
|
10205
|
-
S.isLength ?
|
|
10204
|
+
/* @__PURE__ */ e("div", { className: `ps-msd-row-badge ${Be}`, children: [
|
|
10205
|
+
S.isLength ? Ug(S.fit, s).toUpperCase() : XA(S.fit, S.isLength),
|
|
10206
10206
|
/* @__PURE__ */ A("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "11", height: "11", children: /* @__PURE__ */ A("path", { d: "M3 8l3.5 3.5L13 5" }) })
|
|
10207
10207
|
] })
|
|
10208
10208
|
] }, pA);
|
|
10209
10209
|
}) })
|
|
10210
10210
|
] }),
|
|
10211
|
-
F !== !1 &&
|
|
10211
|
+
F !== !1 && re.length > 1 && /* @__PURE__ */ e("div", { className: "ps-msd-sizes", children: [
|
|
10212
10212
|
/* @__PURE__ */ A("span", { className: "ps-msd-sizes-label", children: s("TRY ANOTHER SIZE") }),
|
|
10213
|
-
/* @__PURE__ */ A("div", { className: "ps-msd-sizes-pills", children:
|
|
10213
|
+
/* @__PURE__ */ A("div", { className: "ps-msd-sizes-pills", children: re.map((S) => /* @__PURE__ */ A(
|
|
10214
10214
|
"button",
|
|
10215
10215
|
{
|
|
10216
10216
|
type: "button",
|
|
@@ -10221,9 +10221,9 @@ function qo({
|
|
|
10221
10221
|
S
|
|
10222
10222
|
)) })
|
|
10223
10223
|
] }),
|
|
10224
|
-
F !== !1 &&
|
|
10224
|
+
F !== !1 && ae.length > 0 && /* @__PURE__ */ e("div", { className: "ps-msd-sizes", children: [
|
|
10225
10225
|
/* @__PURE__ */ A("span", { className: "ps-msd-sizes-label", children: s("LENGTH ADJUSTMENT") }),
|
|
10226
|
-
/* @__PURE__ */ A("div", { className: "ps-msd-sizes-pills", children:
|
|
10226
|
+
/* @__PURE__ */ A("div", { className: "ps-msd-sizes-pills", children: ae.map((S) => {
|
|
10227
10227
|
const pA = String(NA ?? "").trim() === String(S ?? "").trim(), UA = $A[String(S).trim()];
|
|
10228
10228
|
return /* @__PURE__ */ e(
|
|
10229
10229
|
"button",
|
|
@@ -10289,7 +10289,7 @@ function qo({
|
|
|
10289
10289
|
gap: 6
|
|
10290
10290
|
},
|
|
10291
10291
|
children: [
|
|
10292
|
-
/* @__PURE__ */ A(
|
|
10292
|
+
/* @__PURE__ */ A(oo, { size: 14 }),
|
|
10293
10293
|
C ? `${s("Generating try-on…")}${zA > 0 ? ` ${zA}s` : ""}` : s("Try It On")
|
|
10294
10294
|
]
|
|
10295
10295
|
}
|
|
@@ -10351,11 +10351,11 @@ function qo({
|
|
|
10351
10351
|
}
|
|
10352
10352
|
),
|
|
10353
10353
|
/* @__PURE__ */ e("div", { style: { display: "flex", alignItems: "center", gap: "0.5vw", marginTop: "0.35vw", marginBottom: "0.4vw" }, children: [
|
|
10354
|
-
|
|
10354
|
+
rA.length > 1 && /* @__PURE__ */ e(
|
|
10355
10355
|
"select",
|
|
10356
10356
|
{
|
|
10357
10357
|
value: uA || "",
|
|
10358
|
-
onChange: (x) =>
|
|
10358
|
+
onChange: (x) => iA(x.target.value || null),
|
|
10359
10359
|
style: {
|
|
10360
10360
|
fontSize: "0.7vw",
|
|
10361
10361
|
fontWeight: 600,
|
|
@@ -10372,7 +10372,7 @@ function qo({
|
|
|
10372
10372
|
"aria-label": s("Display size in country"),
|
|
10373
10373
|
children: [
|
|
10374
10374
|
/* @__PURE__ */ A("option", { value: "", children: s("Standard") }),
|
|
10375
|
-
|
|
10375
|
+
rA.map((x) => /* @__PURE__ */ A("option", { value: x, children: x }, x))
|
|
10376
10376
|
]
|
|
10377
10377
|
}
|
|
10378
10378
|
),
|
|
@@ -10410,7 +10410,7 @@ function qo({
|
|
|
10410
10410
|
/* @__PURE__ */ A("path", { d: "M4.5 8L7 10.5L11.5 5.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
10411
10411
|
] }),
|
|
10412
10412
|
/* @__PURE__ */ e("span", { style: { fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: [
|
|
10413
|
-
|
|
10413
|
+
ne,
|
|
10414
10414
|
"% ",
|
|
10415
10415
|
s("Match based on your silhouette profile")
|
|
10416
10416
|
] })
|
|
@@ -10428,11 +10428,11 @@ function qo({
|
|
|
10428
10428
|
/* @__PURE__ */ A("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", fontWeight: 500, color: "var(--ps-text-primary)" }, children: x.area }),
|
|
10429
10429
|
/* @__PURE__ */ A("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: v ? x.rawUserValue || "" : isNaN(x.userNum) || x.userNum === 0 ? "" : `${O(x.userNum)} ${a}` }),
|
|
10430
10430
|
/* @__PURE__ */ A("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: v ? x.rawChartRange || "" : X(x.chartLabel) }),
|
|
10431
|
-
/* @__PURE__ */ A("td", { style: { padding: "0.55vw 0.6vw", textAlign: "right" }, children: /* @__PURE__ */ A("span", { style: { fontSize: "0.6vw", fontWeight: 600, color: XA, background: S, borderRadius: "1vw", padding: "0.15vw 0.5vw", whiteSpace: "nowrap" }, children: x.isLength ?
|
|
10431
|
+
/* @__PURE__ */ A("td", { style: { padding: "0.55vw 0.6vw", textAlign: "right" }, children: /* @__PURE__ */ A("span", { style: { fontSize: "0.6vw", fontWeight: 600, color: XA, background: S, borderRadius: "1vw", padding: "0.15vw 0.5vw", whiteSpace: "nowrap" }, children: x.isLength ? Ug(x.fit, s) : lr(x.fit, s) }) })
|
|
10432
10432
|
] }, q);
|
|
10433
10433
|
}) })
|
|
10434
10434
|
] }) }),
|
|
10435
|
-
|
|
10435
|
+
re.length > 1 && /* @__PURE__ */ e("div", { style: { marginBottom: "0.8vw" }, children: [
|
|
10436
10436
|
/* @__PURE__ */ e("span", { style: { fontSize: "0.6vw", fontWeight: 700, color: "var(--ps-text-secondary)", textTransform: "uppercase", letterSpacing: "0.1em", display: "block", marginBottom: "0.4vw" }, children: [
|
|
10437
10437
|
s("Select"),
|
|
10438
10438
|
" ",
|
|
@@ -10440,7 +10440,7 @@ function qo({
|
|
|
10440
10440
|
" ",
|
|
10441
10441
|
s("Size")
|
|
10442
10442
|
] }),
|
|
10443
|
-
/* @__PURE__ */ A("div", { style: { display: "flex", gap: "0.3vw", flexWrap: "wrap" }, children:
|
|
10443
|
+
/* @__PURE__ */ A("div", { style: { display: "flex", gap: "0.3vw", flexWrap: "wrap" }, children: re.map((x) => {
|
|
10444
10444
|
const q = x === fe;
|
|
10445
10445
|
return /* @__PURE__ */ A(
|
|
10446
10446
|
"button",
|
|
@@ -10466,9 +10466,9 @@ function qo({
|
|
|
10466
10466
|
);
|
|
10467
10467
|
}) })
|
|
10468
10468
|
] }),
|
|
10469
|
-
|
|
10469
|
+
ae.length > 0 && /* @__PURE__ */ e("div", { style: { marginBottom: "0.8vw", marginTop: "0.4vw" }, children: [
|
|
10470
10470
|
/* @__PURE__ */ A("span", { style: { fontSize: "0.6vw", fontWeight: 700, color: "var(--ps-text-secondary)", textTransform: "uppercase", letterSpacing: "0.1em", display: "block", marginBottom: "0.4vw" }, children: s("Length Adjustment") }),
|
|
10471
|
-
/* @__PURE__ */ A("div", { style: { display: "flex", gap: "0.3vw", flexWrap: "wrap" }, children:
|
|
10471
|
+
/* @__PURE__ */ A("div", { style: { display: "flex", gap: "0.3vw", flexWrap: "wrap" }, children: ae.map((x) => {
|
|
10472
10472
|
const q = String(NA ?? "").trim() === String(x ?? "").trim(), XA = $A[String(x).trim()];
|
|
10473
10473
|
return /* @__PURE__ */ e(
|
|
10474
10474
|
"button",
|
|
@@ -10535,7 +10535,7 @@ function qo({
|
|
|
10535
10535
|
C || (x.currentTarget.style.opacity = "1");
|
|
10536
10536
|
},
|
|
10537
10537
|
children: [
|
|
10538
|
-
/* @__PURE__ */ A(
|
|
10538
|
+
/* @__PURE__ */ A(oo, { size: 12 }),
|
|
10539
10539
|
C ? `${s("Generating try-on…")}${zA > 0 ? ` ${zA}s` : ""}` : s("Try It On")
|
|
10540
10540
|
]
|
|
10541
10541
|
}
|
|
@@ -10600,20 +10600,20 @@ function Cr({
|
|
|
10600
10600
|
userHeightCm: wA,
|
|
10601
10601
|
pendingCustomSizes: T,
|
|
10602
10602
|
onPendingCustomSizeChange: zA,
|
|
10603
|
-
tryOnAvailable:
|
|
10603
|
+
tryOnAvailable: MA = !0,
|
|
10604
10604
|
t: E
|
|
10605
10605
|
}) {
|
|
10606
|
-
const
|
|
10606
|
+
const gA = (g?.unit || l || "").toString().toLowerCase(), O = gA === "mm" ? "mm" : gA === "cm" ? "cm" : "in", fA = E(O === "mm" ? "mm" : l === "cm" ? "cm" : "in"), [X, rA] = Q({}), uA = pt, iA = IA((P, H, N) => Te(P, H, N), []), yA = xe(() => {
|
|
10607
10607
|
if (!t?.headers || !t?.rows) return -1;
|
|
10608
10608
|
const P = t.headers.findIndex((H) => /size|taglia|größe|taille/i.test(H.trim()));
|
|
10609
10609
|
if (P >= 0) return P;
|
|
10610
10610
|
for (let H = 0; H < t.headers.length; H++) {
|
|
10611
10611
|
const N = t.headers[H];
|
|
10612
|
-
if (t.rows.some((J) => /^(XXS|XS|S|M|L|XL|XXL|XXXL|ONE SIZE|\d{1,2})$/i.test(
|
|
10612
|
+
if (t.rows.some((J) => /^(XXS|XS|S|M|L|XL|XXL|XXXL|ONE SIZE|\d{1,2})$/i.test(iA(J, H, N)))) return H;
|
|
10613
10613
|
}
|
|
10614
10614
|
return 0;
|
|
10615
|
-
}, [t,
|
|
10616
|
-
xe(() =>
|
|
10615
|
+
}, [t, iA]), RA = t?.headers?.[yA] || E("Size");
|
|
10616
|
+
xe(() => yA < 0 || !t?.rows ? [] : t.rows.map((P) => iA(P, yA, RA)).filter(Boolean), [t, yA, RA, iA]);
|
|
10617
10617
|
const mA = xe(() => {
|
|
10618
10618
|
if (!t?.headers || !t?.rows) return [];
|
|
10619
10619
|
const P = [];
|
|
@@ -10629,13 +10629,13 @@ function Cr({
|
|
|
10629
10629
|
}
|
|
10630
10630
|
let J = null;
|
|
10631
10631
|
for (const _ of t.rows) {
|
|
10632
|
-
const
|
|
10633
|
-
if (
|
|
10634
|
-
if (/cm\b|centimeter/i.test(
|
|
10632
|
+
const tA = String(iA(_, H, t.headers[H]) || "").trim();
|
|
10633
|
+
if (tA) {
|
|
10634
|
+
if (/cm\b|centimeter/i.test(tA)) {
|
|
10635
10635
|
J = "cm";
|
|
10636
10636
|
break;
|
|
10637
10637
|
}
|
|
10638
|
-
if (/in\b|inch|"$/i.test(
|
|
10638
|
+
if (/in\b|inch|"$/i.test(tA)) {
|
|
10639
10639
|
J = "in";
|
|
10640
10640
|
break;
|
|
10641
10641
|
}
|
|
@@ -10644,42 +10644,42 @@ function Cr({
|
|
|
10644
10644
|
P.push(J);
|
|
10645
10645
|
}
|
|
10646
10646
|
return P;
|
|
10647
|
-
}, [t,
|
|
10648
|
-
if (!t?.headers || !t?.rows ||
|
|
10649
|
-
const N = P.toLowerCase().trim(), J = fA === "cm" || fA === "", _ = J ? "cm" : "in",
|
|
10647
|
+
}, [t, iA]), we = IA((P, H) => {
|
|
10648
|
+
if (!t?.headers || !t?.rows || yA < 0) return null;
|
|
10649
|
+
const N = P.toLowerCase().trim(), J = fA === "cm" || fA === "", _ = J ? "cm" : "in", tA = [];
|
|
10650
10650
|
for (let j = 0; j < t.headers.length; j++) {
|
|
10651
|
-
const
|
|
10652
|
-
if (
|
|
10653
|
-
|
|
10651
|
+
const dA = (t.headers[j] || "").toLowerCase().trim();
|
|
10652
|
+
if (dA === N) {
|
|
10653
|
+
tA.push(j);
|
|
10654
10654
|
continue;
|
|
10655
10655
|
}
|
|
10656
|
-
const
|
|
10657
|
-
(
|
|
10656
|
+
const bA = dA.replace(/\s*\(.*?\)\s*/g, "").trim();
|
|
10657
|
+
(bA === N || dA.includes(N) || N.includes(bA)) && tA.push(j);
|
|
10658
10658
|
}
|
|
10659
|
-
if (
|
|
10660
|
-
let ee =
|
|
10661
|
-
ee == null && (ee =
|
|
10662
|
-
const EA = t.headers[ee],
|
|
10663
|
-
if (!
|
|
10664
|
-
const he =
|
|
10659
|
+
if (tA.length === 0) return null;
|
|
10660
|
+
let ee = tA.find((j) => mA[j] === _);
|
|
10661
|
+
ee == null && (ee = tA[0]);
|
|
10662
|
+
const EA = t.headers[ee], ce = t.rows.find((j) => iA(j, yA, RA) === H);
|
|
10663
|
+
if (!ce) return null;
|
|
10664
|
+
const he = iA(ce, ee, EA);
|
|
10665
10665
|
if (!he) return null;
|
|
10666
|
-
const
|
|
10666
|
+
const YA = uA(he), f = mA[ee];
|
|
10667
10667
|
if (f === "in" && J) {
|
|
10668
|
-
const j = (
|
|
10669
|
-
return { range: String(j(
|
|
10668
|
+
const j = (dA) => +(dA * 2.54).toFixed(1);
|
|
10669
|
+
return { range: String(j(YA.min)) + (YA.min !== YA.max ? "–" + String(j(YA.max)) : ""), min: j(YA.min), max: j(YA.max) };
|
|
10670
10670
|
}
|
|
10671
10671
|
if (f === "cm" && !J) {
|
|
10672
|
-
const j = (
|
|
10673
|
-
return { range: String(j(
|
|
10672
|
+
const j = (dA) => +(dA / 2.54).toFixed(1);
|
|
10673
|
+
return { range: String(j(YA.min)) + (YA.min !== YA.max ? "–" + String(j(YA.max)) : ""), min: j(YA.min), max: j(YA.max) };
|
|
10674
10674
|
}
|
|
10675
|
-
return { range: he, ...
|
|
10676
|
-
}, [t,
|
|
10675
|
+
return { range: he, ...YA };
|
|
10676
|
+
}, [t, yA, RA, fA, iA, uA, mA]), $A = g?.recommendedSize || "";
|
|
10677
10677
|
xe(() => g?.internationalSizes || {}, [g]);
|
|
10678
|
-
const [PA,
|
|
10678
|
+
const [PA, te] = Q("fit"), [qA, fe] = Q(null), [vA, ue] = Q(!1), [$, Pe] = Q(!1), [ve, Fe] = Q(!1), [ne, le] = Q(null), [CA, _A] = Q(!1), [TA, y] = Q({ w: 800, h: 1200 }), GA = T ?? {}, Ee = IA((P) => {
|
|
10679
10679
|
const H = P.currentTarget;
|
|
10680
10680
|
H.naturalWidth && H.naturalHeight && y({ w: H.naturalWidth, h: H.naturalHeight });
|
|
10681
10681
|
}, []);
|
|
10682
|
-
|
|
10682
|
+
HA(() => {
|
|
10683
10683
|
if (!r || h) {
|
|
10684
10684
|
le(null), _A(!1);
|
|
10685
10685
|
return;
|
|
@@ -10690,15 +10690,15 @@ function Cr({
|
|
|
10690
10690
|
_A(!0);
|
|
10691
10691
|
});
|
|
10692
10692
|
}, [r, h]);
|
|
10693
|
-
const [Ge, NA] = Q(!1), [He,
|
|
10693
|
+
const [Ge, NA] = Q(!1), [He, re] = Q(!1);
|
|
10694
10694
|
QA(null);
|
|
10695
|
-
const [V,
|
|
10696
|
-
|
|
10695
|
+
const [V, ae] = Q(!1), [x, q] = Q(null), [XA, S] = Q(!1), pA = QA(null), [UA, Be] = Q(null), [Ae, pe] = Q(!1);
|
|
10696
|
+
HA(() => {
|
|
10697
10697
|
if (x) {
|
|
10698
10698
|
const P = URL.createObjectURL(x);
|
|
10699
|
-
return
|
|
10699
|
+
return Be(P), () => URL.revokeObjectURL(P);
|
|
10700
10700
|
}
|
|
10701
|
-
|
|
10701
|
+
Be(null);
|
|
10702
10702
|
}, [x]);
|
|
10703
10703
|
const LA = qA || $A;
|
|
10704
10704
|
xe(() => {
|
|
@@ -10709,45 +10709,45 @@ function Cr({
|
|
|
10709
10709
|
return P.has(J) ? !1 : (P.add(J), !0);
|
|
10710
10710
|
}).map((N) => {
|
|
10711
10711
|
const J = Ze(N.userValue);
|
|
10712
|
-
let _ = N.chartRange,
|
|
10712
|
+
let _ = N.chartRange, tA = N.fit;
|
|
10713
10713
|
if (LA !== $A) {
|
|
10714
10714
|
const ee = we(N.measurement, LA);
|
|
10715
10715
|
if (ee && ee.min > 0) {
|
|
10716
10716
|
_ = Qg(ee.range);
|
|
10717
|
-
const EA = ee.min,
|
|
10718
|
-
if (J >= EA - f && J <=
|
|
10717
|
+
const EA = ee.min, ce = ee.max, he = ce - EA, YA = he > 0 ? he * 0.5 : EA * 0.05 || 3, f = Math.max((ce || EA) * 5e-3, 0.25);
|
|
10718
|
+
if (J >= EA - f && J <= ce + f) tA = "good";
|
|
10719
10719
|
else if (J < EA) {
|
|
10720
10720
|
const j = EA - J;
|
|
10721
|
-
|
|
10721
|
+
tA = j > YA * 2 ? "too-loose" : j > YA ? "loose" : "a-bit-loose";
|
|
10722
10722
|
} else {
|
|
10723
|
-
const j = J -
|
|
10724
|
-
|
|
10723
|
+
const j = J - ce;
|
|
10724
|
+
tA = j > YA * 2 ? "too-tight" : j > YA ? "tight" : "a-bit-tight";
|
|
10725
10725
|
}
|
|
10726
10726
|
}
|
|
10727
10727
|
}
|
|
10728
|
-
return { area: N.measurement, userNum: Ze(N.userValue), chartLabel: _, fit:
|
|
10728
|
+
return { area: N.measurement, userNum: Ze(N.userValue), chartLabel: _, fit: tA };
|
|
10729
10729
|
});
|
|
10730
10730
|
}, [g, LA, $A, we]), xe(() => {
|
|
10731
|
-
if (!t?.headers || !t?.rows ||
|
|
10732
|
-
const P = t.rows.find((N) =>
|
|
10731
|
+
if (!t?.headers || !t?.rows || yA < 0) return null;
|
|
10732
|
+
const P = t.rows.find((N) => iA(N, yA, RA) === LA);
|
|
10733
10733
|
if (!P) return null;
|
|
10734
10734
|
const H = [];
|
|
10735
10735
|
for (let N = 0; N < t.headers.length; N++) {
|
|
10736
10736
|
const J = t.headers[N] || "";
|
|
10737
|
-
if (N ===
|
|
10738
|
-
const _ =
|
|
10737
|
+
if (N === yA) continue;
|
|
10738
|
+
const _ = iA(P, N, J);
|
|
10739
10739
|
_ && H.push({ header: J, value: _ });
|
|
10740
10740
|
}
|
|
10741
10741
|
return H;
|
|
10742
|
-
}, [t,
|
|
10743
|
-
const Ce = !!(t?.sections && Object.keys(t.sections).length > 1),
|
|
10742
|
+
}, [t, yA, RA, LA, iA]);
|
|
10743
|
+
const Ce = !!(t?.sections && Object.keys(t.sections).length > 1), FA = xe(() => {
|
|
10744
10744
|
const P = {}, H = (N) => {
|
|
10745
10745
|
if (N)
|
|
10746
10746
|
for (const J of N) {
|
|
10747
10747
|
const _ = J.measurement.toLowerCase();
|
|
10748
10748
|
if (P[_] == null) {
|
|
10749
|
-
const
|
|
10750
|
-
|
|
10749
|
+
const tA = Ze(J.userValue);
|
|
10750
|
+
tA > 0 && (P[_] = tA);
|
|
10751
10751
|
}
|
|
10752
10752
|
}
|
|
10753
10753
|
};
|
|
@@ -10755,39 +10755,39 @@ function Cr({
|
|
|
10755
10755
|
for (const N of Object.values(g.sections)) H(N.matchDetails);
|
|
10756
10756
|
return wA && wA > 0 && P.height == null && (P.height = wA), g?.sections && Object.keys(g.sections).length > 0 ? Object.entries(g.sections).map(([N, J]) => {
|
|
10757
10757
|
const _ = N.toLowerCase();
|
|
10758
|
-
let
|
|
10759
|
-
if (!
|
|
10760
|
-
const EA = Object.entries(t.sections).find(([
|
|
10761
|
-
const he =
|
|
10762
|
-
return
|
|
10758
|
+
let tA = t?.sections?.[N];
|
|
10759
|
+
if (!tA && t?.sections) {
|
|
10760
|
+
const EA = Object.entries(t.sections).find(([ce]) => {
|
|
10761
|
+
const he = ce.toLowerCase(), YA = he.replace(/\s*(size|sizing)\s*/gi, "").trim();
|
|
10762
|
+
return YA ? _ === he || _.includes(YA) || YA.includes(_) : !1;
|
|
10763
10763
|
});
|
|
10764
|
-
EA && (
|
|
10764
|
+
EA && (tA = EA[1]);
|
|
10765
10765
|
}
|
|
10766
|
-
|
|
10766
|
+
tA || (tA = { headers: [], rows: [], requiredFields: [] });
|
|
10767
10767
|
const ee = { ...P };
|
|
10768
10768
|
if (J.matchDetails)
|
|
10769
10769
|
for (const EA of J.matchDetails) {
|
|
10770
|
-
const
|
|
10771
|
-
|
|
10770
|
+
const ce = Ze(EA.userValue);
|
|
10771
|
+
ce > 0 && (ee[EA.measurement.toLowerCase()] = ce);
|
|
10772
10772
|
}
|
|
10773
|
-
return { name: N, section:
|
|
10773
|
+
return { name: N, section: tA, secResult: J, userMeasurements: ee };
|
|
10774
10774
|
}) : !Ce || !t?.sections ? [] : Object.entries(t.sections).map(([N, J]) => {
|
|
10775
|
-
const _ = g?.sections?.[N] || { recommendedSize: g?.recommendedSize || "", matchDetails: [] },
|
|
10775
|
+
const _ = g?.sections?.[N] || { recommendedSize: g?.recommendedSize || "", matchDetails: [] }, tA = { ...P };
|
|
10776
10776
|
if (_.matchDetails)
|
|
10777
10777
|
for (const ee of _.matchDetails) {
|
|
10778
10778
|
const EA = Ze(ee.userValue);
|
|
10779
|
-
EA > 0 && (
|
|
10779
|
+
EA > 0 && (tA[ee.measurement.toLowerCase()] = EA);
|
|
10780
10780
|
}
|
|
10781
|
-
return { name: N, section: J, secResult: _, userMeasurements:
|
|
10781
|
+
return { name: N, section: J, secResult: _, userMeasurements: tA };
|
|
10782
10782
|
});
|
|
10783
|
-
}, [Ce, t, g, wA]), lA = xe(() =>
|
|
10783
|
+
}, [Ce, t, g, wA]), lA = xe(() => FA.filter((P) => !Jg(P.name)), [FA]), I = xe(() => FA.filter((P) => Jg(P.name)), [FA]), kA = IA((P, H) => {
|
|
10784
10784
|
if (!H) return H;
|
|
10785
10785
|
let J = cg(P, I)?.secResult?.recommendedSize?.trim() || "";
|
|
10786
|
-
if (J || (J =
|
|
10786
|
+
if (J || (J = FA.find((ce) => ce.name === P)?.secResult?.length?.trim() || ""), !J) return H;
|
|
10787
10787
|
const _ = J.toLowerCase();
|
|
10788
10788
|
if (/^\d/.test(J)) {
|
|
10789
|
-
const
|
|
10790
|
-
return `${H} / ${
|
|
10789
|
+
const ce = /pant|trouser|inseam/i.test(P) ? "Inseam" : "Length";
|
|
10790
|
+
return `${H} / ${ce} ${J}`;
|
|
10791
10791
|
}
|
|
10792
10792
|
if (/^x(tra)?[- ]?long/.test(_)) return /^\d/.test(H) ? `${H}XL` : `${H} / Extra Long`;
|
|
10793
10793
|
if (/^\d/.test(H)) {
|
|
@@ -10796,7 +10796,7 @@ function Cr({
|
|
|
10796
10796
|
}
|
|
10797
10797
|
const ee = J.replace(/\s+/g, " ").trim();
|
|
10798
10798
|
return `${H} / ${ee}`;
|
|
10799
|
-
}, [I,
|
|
10799
|
+
}, [I, FA]);
|
|
10800
10800
|
xe(() => {
|
|
10801
10801
|
const P = wA || 0;
|
|
10802
10802
|
if (!P) return "";
|
|
@@ -10808,7 +10808,7 @@ function Cr({
|
|
|
10808
10808
|
}, [wA, fA]);
|
|
10809
10809
|
const oA = !!m, KA = oA && o, me = !oA && o, ZA = !!g, de = oA ? ZA && (!!r && !h) : ZA, De = Oo(), JA = i === "face" || i === "head";
|
|
10810
10810
|
g?.found;
|
|
10811
|
-
const Qe = i === "foot" || !
|
|
10811
|
+
const Qe = i === "foot" || !MA, SA = g?.mismatchDetected ? /* @__PURE__ */ e("div", { style: {
|
|
10812
10812
|
margin: De ? "8px 0 0" : "0.4vw 0 0",
|
|
10813
10813
|
padding: De ? "10px 12px" : "0.6vw 0.85vw",
|
|
10814
10814
|
borderRadius: De ? "8px" : "0.45vw",
|
|
@@ -10827,7 +10827,7 @@ function Cr({
|
|
|
10827
10827
|
] }) : null;
|
|
10828
10828
|
return /* @__PURE__ */ e("div", { className: "ps-tryon-sr", children: [
|
|
10829
10829
|
De && me && /* @__PURE__ */ A(
|
|
10830
|
-
|
|
10830
|
+
Ng,
|
|
10831
10831
|
{
|
|
10832
10832
|
productImage: a,
|
|
10833
10833
|
bodyLandmarks: null,
|
|
@@ -10844,7 +10844,7 @@ function Cr({
|
|
|
10844
10844
|
] })
|
|
10845
10845
|
] }),
|
|
10846
10846
|
De && KA && !de && m && /* @__PURE__ */ A(
|
|
10847
|
-
|
|
10847
|
+
Ng,
|
|
10848
10848
|
{
|
|
10849
10849
|
previewUrl: m,
|
|
10850
10850
|
bodyLandmarks: W ?? null,
|
|
@@ -10916,10 +10916,10 @@ function Cr({
|
|
|
10916
10916
|
overlayNode: h ? /* @__PURE__ */ e(eA, { children: [
|
|
10917
10917
|
/* @__PURE__ */ A(Wo, { tryOnStartedAt: C ?? null, t: E }),
|
|
10918
10918
|
/* @__PURE__ */ A(Vo, { active: !0 })
|
|
10919
|
-
] }) : r &&
|
|
10919
|
+
] }) : r && CA && ne ? /* @__PURE__ */ A(
|
|
10920
10920
|
Fo,
|
|
10921
10921
|
{
|
|
10922
|
-
lines:
|
|
10922
|
+
lines: ne,
|
|
10923
10923
|
fitRows: (() => {
|
|
10924
10924
|
const H = [...g?.matchDetails || []];
|
|
10925
10925
|
if (g?.sections)
|
|
@@ -10992,27 +10992,27 @@ function Cr({
|
|
|
10992
10992
|
sizeGuide: t,
|
|
10993
10993
|
sectionEntries: lA.map(({ name: P, secResult: H }) => {
|
|
10994
10994
|
const N = H?.size || H.recommendedSize || "";
|
|
10995
|
-
return { name: P, secResult: { ...H, recommendedSize:
|
|
10995
|
+
return { name: P, secResult: { ...H, recommendedSize: kA(P, N) } };
|
|
10996
10996
|
}),
|
|
10997
10997
|
pendingCustomSizes: GA,
|
|
10998
10998
|
onSelectSection: (P) => F(P),
|
|
10999
10999
|
onTryOn: () => {
|
|
11000
|
-
q(u || null),
|
|
11000
|
+
q(u || null), ae(!0);
|
|
11001
11001
|
},
|
|
11002
11002
|
tryOnProcessing: h,
|
|
11003
11003
|
resultImageUrl: r,
|
|
11004
11004
|
tryOnDone: !!r && !h,
|
|
11005
11005
|
onTryAgain: () => {
|
|
11006
|
-
z?.(), q(u || null),
|
|
11006
|
+
z?.(), q(u || null), ae(!0);
|
|
11007
11007
|
},
|
|
11008
11008
|
onClose: K,
|
|
11009
11009
|
showLines: $,
|
|
11010
11010
|
onToggleLines: JA ? void 0 : () => Pe(!$),
|
|
11011
11011
|
onImageLoad: Ee,
|
|
11012
|
-
overlayNode: r &&
|
|
11012
|
+
overlayNode: r && CA && ne ? /* @__PURE__ */ A(
|
|
11013
11013
|
Fo,
|
|
11014
11014
|
{
|
|
11015
|
-
lines:
|
|
11015
|
+
lines: ne,
|
|
11016
11016
|
fitRows: (() => {
|
|
11017
11017
|
const P = [...g?.matchDetails || []];
|
|
11018
11018
|
if (g?.sections)
|
|
@@ -11039,7 +11039,7 @@ function Cr({
|
|
|
11039
11039
|
/* @__PURE__ */ A("img", { src: h && m ? m : r || a, alt: n, className: "ps-tryon-v2-bg-img", onLoad: Ee }),
|
|
11040
11040
|
h && /* @__PURE__ */ A(Wo, { tryOnStartedAt: C ?? null, t: E }),
|
|
11041
11041
|
/* @__PURE__ */ A(Vo, { active: !!h }),
|
|
11042
|
-
r && !h &&
|
|
11042
|
+
r && !h && CA && ne && /* @__PURE__ */ A(Fo, { lines: ne, fitRows: (() => {
|
|
11043
11043
|
const P = [...g?.matchDetails || []];
|
|
11044
11044
|
if (g?.sections)
|
|
11045
11045
|
for (const N of Object.values(g.sections))
|
|
@@ -11076,25 +11076,25 @@ function Cr({
|
|
|
11076
11076
|
SA,
|
|
11077
11077
|
/* @__PURE__ */ A("div", { className: "ps-tryon-v2-sep" }),
|
|
11078
11078
|
/* @__PURE__ */ A("div", { className: "ps-tryon-sr-cards-v2", children: lA.map(({ name: P, secResult: H }, N) => {
|
|
11079
|
-
const J = t?.sectionImages?.[P], _ = sr(P),
|
|
11080
|
-
return /* @__PURE__ */ e("button", { className: `ps-tryon-sr-card-v2${
|
|
11079
|
+
const J = t?.sectionImages?.[P], _ = sr(P), tA = N === lA.length - 1 && lA.length % 2 !== 0, ee = H, EA = GA[P], ce = !!EA, he = ce ? EA.displayLabel : kA(P, ee.size || H.recommendedSize || "");
|
|
11080
|
+
return /* @__PURE__ */ e("button", { className: `ps-tryon-sr-card-v2${tA ? " ps-full" : ""}${ce ? " ps-overridden" : ""}`, onClick: () => F(P), style: { animationDelay: `${N * 0.07}s` }, children: [
|
|
11081
11081
|
/* @__PURE__ */ e("div", { className: "ps-tryon-sr-card-v2-text", children: [
|
|
11082
11082
|
/* @__PURE__ */ e("span", { className: "ps-tryon-sr-card-v2-label", children: [
|
|
11083
11083
|
_ && /* @__PURE__ */ A("img", { src: _, alt: "", className: "ps-tryon-sr-card-v2-label-icon" }),
|
|
11084
11084
|
P.replace(/\s*[—–-]\s*.*/g, "")
|
|
11085
11085
|
] }),
|
|
11086
11086
|
/* @__PURE__ */ A("span", { className: "ps-tryon-sr-card-v2-value", children: ee.found === !1 ? E("No fit") : (() => {
|
|
11087
|
-
const
|
|
11088
|
-
return
|
|
11089
|
-
/* @__PURE__ */ A("span", { children: he.slice(0,
|
|
11090
|
-
/* @__PURE__ */ A("span", { className: "ps-tryon-sr-card-v2-value-suffix", children: he.slice(
|
|
11087
|
+
const YA = he.indexOf(" / ");
|
|
11088
|
+
return YA === -1 ? he : /* @__PURE__ */ e(eA, { children: [
|
|
11089
|
+
/* @__PURE__ */ A("span", { children: he.slice(0, YA) }),
|
|
11090
|
+
/* @__PURE__ */ A("span", { className: "ps-tryon-sr-card-v2-value-suffix", children: he.slice(YA) })
|
|
11091
11091
|
] });
|
|
11092
11092
|
})() }),
|
|
11093
11093
|
/* @__PURE__ */ A(
|
|
11094
11094
|
"span",
|
|
11095
11095
|
{
|
|
11096
|
-
className: `ps-tryon-sr-card-v2-rec-pill${
|
|
11097
|
-
children: E(
|
|
11096
|
+
className: `ps-tryon-sr-card-v2-rec-pill${ce ? " is-overridden" : ""}`,
|
|
11097
|
+
children: E(ce ? "YOUR SELECTION" : "RECOMMENDED")
|
|
11098
11098
|
}
|
|
11099
11099
|
),
|
|
11100
11100
|
/* @__PURE__ */ e("span", { className: "ps-tryon-sr-card-v2-view", children: [
|
|
@@ -11141,10 +11141,10 @@ function Cr({
|
|
|
11141
11141
|
style: { marginTop: 0 },
|
|
11142
11142
|
disabled: h,
|
|
11143
11143
|
onClick: () => {
|
|
11144
|
-
q(u || null),
|
|
11144
|
+
q(u || null), ae(!0);
|
|
11145
11145
|
},
|
|
11146
11146
|
children: [
|
|
11147
|
-
/* @__PURE__ */ A(
|
|
11147
|
+
/* @__PURE__ */ A(oo, { size: 14 }),
|
|
11148
11148
|
" ",
|
|
11149
11149
|
E(h ? "Processing..." : "Try It On")
|
|
11150
11150
|
]
|
|
@@ -11158,9 +11158,9 @@ function Cr({
|
|
|
11158
11158
|
(() => {
|
|
11159
11159
|
const P = t?.found ? { headers: t.headers || [], rows: t.rows || [], requiredFields: t.requiredFields || [] } : { headers: [], rows: [], requiredFields: [] }, H = { recommendedSize: g?.recommendedSize || "", matchDetails: g?.matchDetails || [] }, N = {};
|
|
11160
11160
|
if (g?.matchDetails)
|
|
11161
|
-
for (const
|
|
11161
|
+
for (const tA of g.matchDetails) N[tA.measurement.toLowerCase()] = Ze(tA.userValue);
|
|
11162
11162
|
const J = E("Your Fit"), _ = () => {
|
|
11163
|
-
r || (q(u || null),
|
|
11163
|
+
r || (q(u || null), ae(!0));
|
|
11164
11164
|
};
|
|
11165
11165
|
return De ? /* @__PURE__ */ e(eA, { children: [
|
|
11166
11166
|
SA && /* @__PURE__ */ A("div", { style: { padding: "0 16px" }, children: SA }),
|
|
@@ -11193,11 +11193,11 @@ function Cr({
|
|
|
11193
11193
|
showLines: $,
|
|
11194
11194
|
onToggleLines: JA ? void 0 : () => Pe(!$),
|
|
11195
11195
|
onImageLoad: Ee,
|
|
11196
|
-
overlayNode: r &&
|
|
11196
|
+
overlayNode: r && CA && ne ? /* @__PURE__ */ A(
|
|
11197
11197
|
Fo,
|
|
11198
11198
|
{
|
|
11199
|
-
lines:
|
|
11200
|
-
fitRows: (g?.matchDetails || []).map((
|
|
11199
|
+
lines: ne,
|
|
11200
|
+
fitRows: (g?.matchDetails || []).map((tA) => ({ area: tA.measurement, userNum: parseFloat(tA.userValue) || 0, chartLabel: tA.chartRange || "", fit: tA.fit })),
|
|
11201
11201
|
show: $,
|
|
11202
11202
|
imgWidth: TA.w,
|
|
11203
11203
|
imgHeight: TA.h
|
|
@@ -11219,7 +11219,7 @@ function Cr({
|
|
|
11219
11219
|
),
|
|
11220
11220
|
h && /* @__PURE__ */ A(Wo, { tryOnStartedAt: C ?? null, t: E }),
|
|
11221
11221
|
/* @__PURE__ */ A(Vo, { active: !!h }),
|
|
11222
|
-
r && !h &&
|
|
11222
|
+
r && !h && CA && ne && /* @__PURE__ */ A(Fo, { lines: ne, fitRows: (g?.matchDetails || []).map((tA) => ({ area: tA.measurement, userNum: parseFloat(tA.userValue) || 0, chartLabel: tA.chartRange || "", fit: tA.fit })), show: $, imgWidth: TA.w, imgHeight: TA.h }),
|
|
11223
11223
|
r && !h && /* @__PURE__ */ e("div", { style: { position: "absolute", bottom: "0.5vw", left: "0.5vw", zIndex: 3, display: "flex", flexDirection: "column", gap: "0.3vw" }, children: [
|
|
11224
11224
|
!JA && /* @__PURE__ */ A("button", { className: "ps-tryon-sr-glass-btn", onClick: () => Pe(!$), children: E($ ? "Hide Fit" : "Show Fit") }),
|
|
11225
11225
|
/* @__PURE__ */ A("button", { className: "ps-tryon-sr-glass-btn", onClick: d, children: E("Download") })
|
|
@@ -11304,8 +11304,8 @@ function Cr({
|
|
|
11304
11304
|
children: /* @__PURE__ */ e("div", { className: "ps-tryon-sr-card-v2-text", children: [
|
|
11305
11305
|
/* @__PURE__ */ A("span", { className: "ps-tryon-sr-card-v2-label", children: J }),
|
|
11306
11306
|
(() => {
|
|
11307
|
-
const
|
|
11308
|
-
return /* @__PURE__ */ A("span", { className: `ps-tryon-sr-card-v2-value${ee ? " ps-long" : ""}`, children:
|
|
11307
|
+
const tA = GA[J]?.displayLabel || H.recommendedSize || "—", ee = tA.length > 12;
|
|
11308
|
+
return /* @__PURE__ */ A("span", { className: `ps-tryon-sr-card-v2-value${ee ? " ps-long" : ""}`, children: tA });
|
|
11309
11309
|
})(),
|
|
11310
11310
|
/* @__PURE__ */ A(
|
|
11311
11311
|
"span",
|
|
@@ -11354,7 +11354,7 @@ function Cr({
|
|
|
11354
11354
|
onClick: _,
|
|
11355
11355
|
type: "button",
|
|
11356
11356
|
children: [
|
|
11357
|
-
/* @__PURE__ */ A(
|
|
11357
|
+
/* @__PURE__ */ A(oo, { size: 14 }),
|
|
11358
11358
|
" ",
|
|
11359
11359
|
E(h ? "Processing..." : "Try It On")
|
|
11360
11360
|
]
|
|
@@ -11449,7 +11449,7 @@ function Cr({
|
|
|
11449
11449
|
className: "ps-pm-primary-btn",
|
|
11450
11450
|
disabled: !x,
|
|
11451
11451
|
onClick: () => {
|
|
11452
|
-
x && (M(x), Y(x),
|
|
11452
|
+
x && (M(x), Y(x), ae(!1));
|
|
11453
11453
|
},
|
|
11454
11454
|
children: E("START TRY-ON")
|
|
11455
11455
|
}
|
|
@@ -11468,7 +11468,7 @@ function Cr({
|
|
|
11468
11468
|
type: "button",
|
|
11469
11469
|
className: "ps-pm-secondary-btn",
|
|
11470
11470
|
onClick: () => {
|
|
11471
|
-
|
|
11471
|
+
ae(!1), q(null);
|
|
11472
11472
|
},
|
|
11473
11473
|
children: E("BACK")
|
|
11474
11474
|
}
|
|
@@ -11595,7 +11595,7 @@ function Cr({
|
|
|
11595
11595
|
] }),
|
|
11596
11596
|
/* @__PURE__ */ e("div", { style: { background: "rgba(59,130,246,0.08)", border: "1px solid rgba(59,130,246,0.2)", borderRadius: "0.5vw", padding: "0.5vw 0.8vw" }, children: [
|
|
11597
11597
|
/* @__PURE__ */ e("div", { style: { display: "flex", alignItems: "center", gap: "0.3vw", marginBottom: "0.2vw" }, children: [
|
|
11598
|
-
/* @__PURE__ */ A(
|
|
11598
|
+
/* @__PURE__ */ A(Pg, { size: 12 }),
|
|
11599
11599
|
/* @__PURE__ */ A("span", { style: { color: "var(--ps-accent)", fontSize: "0.65vw", fontWeight: 700 }, children: E("Pro Tip") })
|
|
11600
11600
|
] }),
|
|
11601
11601
|
/* @__PURE__ */ A("div", { style: { fontSize: "0.55vw", color: "var(--ps-text-secondary)", lineHeight: 1.7 }, children: E(i === "face" ? "A clear, well-lit face photo gives the most accurate eyewear try-on." : i === "head" ? "A clear head-and-shoulders photo with space above your head gives the most accurate headwear try-on." : "Our AI works best with front-facing, full-body photos in fitted clothing. Better photos = more accurate virtual try-on!") })
|
|
@@ -11603,15 +11603,15 @@ function Cr({
|
|
|
11603
11603
|
] })
|
|
11604
11604
|
] }),
|
|
11605
11605
|
/* @__PURE__ */ e("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginTop: "0.8vw", gap: "0.5vw", flexShrink: 0 }, children: [
|
|
11606
|
-
/* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick: () =>
|
|
11606
|
+
/* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick: () => ae(!1), type: "button", children: [
|
|
11607
11607
|
/* @__PURE__ */ A("span", { className: "ps-bp-back-arrow", children: "←" }),
|
|
11608
11608
|
" ",
|
|
11609
11609
|
E("Back")
|
|
11610
11610
|
] }),
|
|
11611
11611
|
/* @__PURE__ */ e("button", { className: "ps-tryon-v2-cta", style: { marginTop: 0 }, disabled: !x, onClick: () => {
|
|
11612
|
-
x && (M(x), Y(x),
|
|
11612
|
+
x && (M(x), Y(x), ae(!1));
|
|
11613
11613
|
}, children: [
|
|
11614
|
-
/* @__PURE__ */ A(
|
|
11614
|
+
/* @__PURE__ */ A(oo, { size: 14 }),
|
|
11615
11615
|
" ",
|
|
11616
11616
|
E("Start Try-On")
|
|
11617
11617
|
] })
|
|
@@ -11623,7 +11623,7 @@ function Cr({
|
|
|
11623
11623
|
/* @__PURE__ */ A("button", { className: "ps-tryon-sr-chart-close", onClick: () => ue(!1), children: "✕" })
|
|
11624
11624
|
] }),
|
|
11625
11625
|
/* @__PURE__ */ A("div", { className: "ps-tryon-sr-chart-scroll", children: t.sections && Object.keys(t.sections).length > 1 ? Object.entries(t.sections).map(([P, H]) => {
|
|
11626
|
-
const J = g?.sections?.[P]?.recommendedSize || "", _ = H.headers.findIndex((EA) => /size|taglia|größe|taille|fit|length/i.test(EA.trim())),
|
|
11626
|
+
const J = g?.sections?.[P]?.recommendedSize || "", _ = H.headers.findIndex((EA) => /size|taglia|größe|taille|fit|length/i.test(EA.trim())), tA = _ >= 0 ? _ : 0, ee = H.headers[tA] || "Size";
|
|
11627
11627
|
return /* @__PURE__ */ e("div", { className: "ps-tryon-chart-section", children: [
|
|
11628
11628
|
/* @__PURE__ */ e("div", { className: "ps-tryon-chart-section-title", children: [
|
|
11629
11629
|
/* @__PURE__ */ A("span", { children: P }),
|
|
@@ -11634,20 +11634,20 @@ function Cr({
|
|
|
11634
11634
|
] })
|
|
11635
11635
|
] }),
|
|
11636
11636
|
/* @__PURE__ */ A("div", { className: "ps-tryon-sr-chart-table-wrap", children: /* @__PURE__ */ e("table", { className: "ps-tryon-sr-chart-table", children: [
|
|
11637
|
-
/* @__PURE__ */ A("thead", { children: /* @__PURE__ */ A("tr", { children: H.headers.map((EA,
|
|
11638
|
-
/* @__PURE__ */ A("tbody", { children: H.rows.map((EA,
|
|
11639
|
-
const
|
|
11640
|
-
return /* @__PURE__ */ A("tr", { className:
|
|
11637
|
+
/* @__PURE__ */ A("thead", { children: /* @__PURE__ */ A("tr", { children: H.headers.map((EA, ce) => /* @__PURE__ */ A("th", { className: ce === tA ? "ps-size-col" : "", children: EA }, ce)) }) }),
|
|
11638
|
+
/* @__PURE__ */ A("tbody", { children: H.rows.map((EA, ce) => {
|
|
11639
|
+
const YA = Te(EA, tA, ee) === J;
|
|
11640
|
+
return /* @__PURE__ */ A("tr", { className: YA ? "ps-active-row" : "", children: H.headers.map((f, j) => /* @__PURE__ */ A("td", { className: j === tA ? "ps-size-col" : "", children: Te(EA, j, f) }, j)) }, ce);
|
|
11641
11641
|
}) })
|
|
11642
11642
|
] }) })
|
|
11643
11643
|
] }, P);
|
|
11644
11644
|
}) : t.headers && t.rows ? (
|
|
11645
11645
|
/* Single section fallback */
|
|
11646
11646
|
/* @__PURE__ */ A("div", { className: "ps-tryon-sr-chart-table-wrap", children: /* @__PURE__ */ e("table", { className: "ps-tryon-sr-chart-table", children: [
|
|
11647
|
-
/* @__PURE__ */ A("thead", { children: /* @__PURE__ */ A("tr", { children: t.headers.map((P, H) => /* @__PURE__ */ A("th", { className: H ===
|
|
11647
|
+
/* @__PURE__ */ A("thead", { children: /* @__PURE__ */ A("tr", { children: t.headers.map((P, H) => /* @__PURE__ */ A("th", { className: H === yA ? "ps-size-col" : "", children: P }, H)) }) }),
|
|
11648
11648
|
/* @__PURE__ */ A("tbody", { children: t.rows.map((P, H) => {
|
|
11649
|
-
const J =
|
|
11650
|
-
return /* @__PURE__ */ A("tr", { className: J ? "ps-active-row" : "", children: t.headers.map((_,
|
|
11649
|
+
const J = iA(P, yA, RA) === LA;
|
|
11650
|
+
return /* @__PURE__ */ A("tr", { className: J ? "ps-active-row" : "", children: t.headers.map((_, tA) => /* @__PURE__ */ A("td", { className: tA === yA ? "ps-size-col" : "", children: iA(P, tA, _) }, tA)) }, H);
|
|
11651
11651
|
}) })
|
|
11652
11652
|
] }) })
|
|
11653
11653
|
) : null })
|
|
@@ -11713,7 +11713,7 @@ function dr({
|
|
|
11713
11713
|
}
|
|
11714
11714
|
) });
|
|
11715
11715
|
}
|
|
11716
|
-
function
|
|
11716
|
+
function Kg({
|
|
11717
11717
|
apiUrl: o,
|
|
11718
11718
|
apiKey: g,
|
|
11719
11719
|
previewUrl: t,
|
|
@@ -11728,7 +11728,7 @@ function Jg({
|
|
|
11728
11728
|
t: d
|
|
11729
11729
|
}) {
|
|
11730
11730
|
const u = QA(null), m = QA(0), [M, L] = Q(!1), [Y, h] = Q(!1), [C, W] = Q(""), [Z, i] = Q(null), [b, v] = Q(null);
|
|
11731
|
-
|
|
11731
|
+
HA(() => {
|
|
11732
11732
|
t || (i(null), v(null));
|
|
11733
11733
|
}, [t]);
|
|
11734
11734
|
const F = async (O) => {
|
|
@@ -11777,7 +11777,7 @@ function Jg({
|
|
|
11777
11777
|
if (O.preventDefault(), O.stopPropagation(), m.current = 0, L(!1), c || Y) return;
|
|
11778
11778
|
const fA = O.dataTransfer?.files?.[0];
|
|
11779
11779
|
fA && F(fA);
|
|
11780
|
-
},
|
|
11780
|
+
}, MA = (O) => {
|
|
11781
11781
|
const fA = O.target.files?.[0];
|
|
11782
11782
|
fA && F(fA), u.current && (u.current.value = "");
|
|
11783
11783
|
}, E = () => {
|
|
@@ -11800,7 +11800,7 @@ function Jg({
|
|
|
11800
11800
|
type: "file",
|
|
11801
11801
|
accept: "image/jpeg,image/png,image/webp",
|
|
11802
11802
|
style: { display: "none" },
|
|
11803
|
-
onChange:
|
|
11803
|
+
onChange: MA
|
|
11804
11804
|
}
|
|
11805
11805
|
),
|
|
11806
11806
|
t && !Z && /* @__PURE__ */ e(eA, { children: [
|
|
@@ -11862,7 +11862,7 @@ function Dr({
|
|
|
11862
11862
|
t: c
|
|
11863
11863
|
}) {
|
|
11864
11864
|
const n = Oo(), [w, s] = Q(null), [l, D] = Q(null);
|
|
11865
|
-
|
|
11865
|
+
HA(() => {
|
|
11866
11866
|
if (!w) {
|
|
11867
11867
|
D(null);
|
|
11868
11868
|
return;
|
|
@@ -11879,7 +11879,7 @@ function Dr({
|
|
|
11879
11879
|
/* @__PURE__ */ A("p", { className: "ps-pm-subtitle", children: c(o === "face" ? "A clear, front-facing face photo — no glasses on — gives us the most accurate try-on." : o === "head" ? "Face the camera with your head and shoulders in frame, leaving space above your head." : "Ensure your full body is visible for the most accurate virtual try-on.") })
|
|
11880
11880
|
] }),
|
|
11881
11881
|
/* @__PURE__ */ A("div", { className: "ps-pm-preview", children: /* @__PURE__ */ A(
|
|
11882
|
-
|
|
11882
|
+
Kg,
|
|
11883
11883
|
{
|
|
11884
11884
|
apiUrl: g,
|
|
11885
11885
|
apiKey: t,
|
|
@@ -11943,7 +11943,7 @@ function Dr({
|
|
|
11943
11943
|
] }) }) : /* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", padding: "1.5vw", width: "100%", height: "100%", background: "var(--ps-bg-primary)", borderRadius: "0.8vw", overflow: "hidden" }, children: [
|
|
11944
11944
|
/* @__PURE__ */ e("div", { style: { display: "flex", gap: "1.2vw", flex: 1, alignItems: "stretch", minHeight: 0, overflow: "hidden" }, children: [
|
|
11945
11945
|
/* @__PURE__ */ A("div", { style: { flex: 1, display: "flex", minHeight: 0 }, children: /* @__PURE__ */ A(
|
|
11946
|
-
|
|
11946
|
+
Kg,
|
|
11947
11947
|
{
|
|
11948
11948
|
apiUrl: g,
|
|
11949
11949
|
apiKey: t,
|
|
@@ -12022,7 +12022,7 @@ function Dr({
|
|
|
12022
12022
|
] }),
|
|
12023
12023
|
/* @__PURE__ */ e("div", { style: { background: "rgba(59,130,246,0.08)", border: "1px solid rgba(59,130,246,0.2)", borderRadius: "0.5vw", padding: "0.5vw 0.8vw" }, children: [
|
|
12024
12024
|
/* @__PURE__ */ e("div", { style: { display: "flex", alignItems: "center", gap: "0.3vw", marginBottom: "0.2vw" }, children: [
|
|
12025
|
-
/* @__PURE__ */ A(
|
|
12025
|
+
/* @__PURE__ */ A(Pg, { size: 12 }),
|
|
12026
12026
|
/* @__PURE__ */ A("span", { style: { color: "var(--ps-accent)", fontSize: "0.65vw", fontWeight: 700 }, children: c("Pro Tip") })
|
|
12027
12027
|
] }),
|
|
12028
12028
|
/* @__PURE__ */ A("div", { style: { fontSize: "0.55vw", color: "var(--ps-text-secondary)", lineHeight: 1.7 }, children: c(o === "face" ? "A clear, well-lit face photo gives the most accurate eyewear try-on." : o === "head" ? "A clear head-and-shoulders photo with space above your head gives the most accurate headwear try-on." : "Our AI works best with front-facing, full-body photos in fitted clothing. Better photos = more accurate virtual try-on!") })
|
|
@@ -12036,7 +12036,7 @@ function Dr({
|
|
|
12036
12036
|
c("Back")
|
|
12037
12037
|
] }),
|
|
12038
12038
|
/* @__PURE__ */ e("button", { className: "ps-tryon-v2-cta", style: { marginTop: 0 }, disabled: !w, onClick: d, children: [
|
|
12039
|
-
/* @__PURE__ */ A(
|
|
12039
|
+
/* @__PURE__ */ A(oo, { size: 14 }),
|
|
12040
12040
|
" ",
|
|
12041
12041
|
c("Start Try-On")
|
|
12042
12042
|
] })
|
|
@@ -12081,7 +12081,7 @@ function Qr({
|
|
|
12081
12081
|
const z = u("Pair this with neutral tones for a balanced look"), K = u("Layer with a fitted base for sharper silhouette"), wA = u("Cuff once for a relaxed everyday feel");
|
|
12082
12082
|
return [z, K, wA];
|
|
12083
12083
|
})(), [Z, i] = Q(0), [b, v] = Q(0);
|
|
12084
|
-
|
|
12084
|
+
HA(() => {
|
|
12085
12085
|
const z = setInterval(() => i((wA) => (wA + 1) % C.length), 4e3), K = setInterval(() => v((wA) => (wA + 1) % W.length), 5e3);
|
|
12086
12086
|
return () => {
|
|
12087
12087
|
clearInterval(z), clearInterval(K);
|
|
@@ -12250,7 +12250,7 @@ const vr = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAMAAABIw9uxAA
|
|
|
12250
12250
|
FR: ["80", "85", "90", "95", "100", "105", "110", "115", "120"],
|
|
12251
12251
|
IT: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
|
|
12252
12252
|
JP: ["60", "65", "70", "75", "80", "85", "90", "95", "100"]
|
|
12253
|
-
},
|
|
12253
|
+
}, Sg = {
|
|
12254
12254
|
US: ["AA", "A", "B", "C", "D", "DD/E", "DDD/F", "G", "H", "I", "J"],
|
|
12255
12255
|
UK: ["AA", "A", "B", "C", "D", "DD", "E", "F", "FF", "G", "GG", "H"],
|
|
12256
12256
|
EU: ["AA", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"],
|
|
@@ -12329,26 +12329,26 @@ function Zo({
|
|
|
12329
12329
|
}
|
|
12330
12330
|
function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, onEstimate: c, t: n }) {
|
|
12331
12331
|
const [w, s] = Q(null), [l, D] = Q("identity"), [d, u] = Q("name-photo"), [m, M] = Q(!1), [L, Y] = Q(null), h = QA(null);
|
|
12332
|
-
|
|
12332
|
+
HA(() => {
|
|
12333
12333
|
h.current && (h.current.scrollTop = 0);
|
|
12334
12334
|
}, [w, l]);
|
|
12335
|
-
const [C, W] = Q(""), [Z, i] = Q("male"), [b, v] = Q("cm"), [F, z] = Q(""), [K, wA] = Q(""), [T, zA] = Q(""), [
|
|
12336
|
-
|
|
12337
|
-
if (d !== "calculating" || !
|
|
12335
|
+
const [C, W] = Q(""), [Z, i] = Q("male"), [b, v] = Q("cm"), [F, z] = Q(""), [K, wA] = Q(""), [T, zA] = Q(""), [MA, E] = Q(""), [gA, O] = Q(""), [fA, X] = Q(""), [rA, uA] = Q(null), [iA, yA] = Q(!1), [RA, mA] = Q(""), [we, $A] = Q(null), [PA, te] = Q(null), [qA, fe] = Q({ w: 800, h: 1200 }), [vA, ue] = Q(0), [$, Pe] = Q(!1), [ve, Fe] = Q(!1);
|
|
12336
|
+
HA(() => {
|
|
12337
|
+
if (d !== "calculating" || !rA) return;
|
|
12338
12338
|
let f = !1;
|
|
12339
|
-
return Bo(
|
|
12340
|
-
!f && j &&
|
|
12339
|
+
return Bo(rA).then((j) => {
|
|
12340
|
+
!f && j && te(j);
|
|
12341
12341
|
}).catch(() => {
|
|
12342
12342
|
}), () => {
|
|
12343
12343
|
f = !0;
|
|
12344
12344
|
};
|
|
12345
|
-
}, [d,
|
|
12345
|
+
}, [d, rA]), HA(() => {
|
|
12346
12346
|
if (d !== "calculating" || !m) return;
|
|
12347
12347
|
const f = setInterval(() => ue((j) => j + 1), 1500);
|
|
12348
12348
|
return () => clearInterval(f);
|
|
12349
12349
|
}, [d, m]);
|
|
12350
|
-
const
|
|
12351
|
-
TA === !0 &&
|
|
12350
|
+
const ne = QA(null), le = QA(null), [CA, _A] = Q(!1), [TA, y] = Q(null), GA = () => {
|
|
12351
|
+
TA === !0 && ne.current?.click();
|
|
12352
12352
|
}, Ee = async (f) => {
|
|
12353
12353
|
const j = f.target.files?.[0];
|
|
12354
12354
|
if (j) {
|
|
@@ -12364,34 +12364,34 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12364
12364
|
X(n("Image must be under 10MB"));
|
|
12365
12365
|
return;
|
|
12366
12366
|
}
|
|
12367
|
-
X(""),
|
|
12367
|
+
X(""), yA(!0), mA(n("Analyzing photo…"));
|
|
12368
12368
|
try {
|
|
12369
|
-
const
|
|
12370
|
-
if (!
|
|
12371
|
-
const Le =
|
|
12369
|
+
const dA = t && r ? eg(j, t, r) : Promise.resolve({ isAdult: !0, confidence: "low" }), bA = Do(j), oe = await dA;
|
|
12370
|
+
if (!oe.isAdult) {
|
|
12371
|
+
const Le = oe.reasoning?.trim() || n("This photo appears to be of a minor. Please upload a photo of someone 18 or older.");
|
|
12372
12372
|
$A(Le);
|
|
12373
12373
|
return;
|
|
12374
12374
|
}
|
|
12375
|
-
const be = await
|
|
12375
|
+
const be = await bA;
|
|
12376
12376
|
uA(be), $A(null), a?.(be);
|
|
12377
12377
|
} catch {
|
|
12378
12378
|
X(n("Failed to process image"));
|
|
12379
12379
|
} finally {
|
|
12380
|
-
|
|
12380
|
+
yA(!1), mA("");
|
|
12381
12381
|
}
|
|
12382
12382
|
}
|
|
12383
12383
|
}, Ge = () => {
|
|
12384
|
-
uA(null), a?.(null),
|
|
12385
|
-
}, [NA, He] = Q(null), [
|
|
12386
|
-
|
|
12384
|
+
uA(null), a?.(null), ne.current && (ne.current.value = "");
|
|
12385
|
+
}, [NA, He] = Q(null), [re, V] = Q(null), [ae, x] = Q(null), [q, XA] = Q(null), [S, pA] = Q(null), [UA, Be] = Q(null), [Ae, pe] = Q("US"), [LA, Ce] = Q(null), FA = QA(null);
|
|
12386
|
+
HA(() => {
|
|
12387
12387
|
if (!LA) return;
|
|
12388
12388
|
const f = (j) => {
|
|
12389
|
-
const
|
|
12390
|
-
|
|
12389
|
+
const dA = FA.current;
|
|
12390
|
+
dA && !dA.contains(j.target) && Ce(null);
|
|
12391
12391
|
};
|
|
12392
12392
|
return document.addEventListener("mousedown", f), () => document.removeEventListener("mousedown", f);
|
|
12393
12393
|
}, [LA]);
|
|
12394
|
-
const lA = ["28", "30", "32", "34", "36", "38", "40", "42", "44", "46", "48", "50", "52", "54", "56"], I = ["AA", "A", "B", "C", "D", "DD/E", "DDD/F", "G", "H", "I", "J"],
|
|
12394
|
+
const lA = ["28", "30", "32", "34", "36", "38", "40", "42", "44", "46", "48", "50", "52", "54", "56"], I = ["AA", "A", "B", "C", "D", "DD/E", "DDD/F", "G", "H", "I", "J"], kA = Z === "female", oA = kA ? jA.female : jA.male, KA = kA ? ["identity", "stomach", "seat", "hips", "bra"] : ["identity", "chest", "stomach", "seat"], me = KA.indexOf(l), ZA = KA.length, Me = me === ZA - 1, de = () => {
|
|
12395
12395
|
if (b === "in") {
|
|
12396
12396
|
const f = parseInt(K, 10), j = parseInt(T, 10);
|
|
12397
12397
|
!isNaN(f) && f >= 0 && !isNaN(j) && j >= 0 && z(String(Math.round((f * 12 + j) * 2.54)));
|
|
@@ -12408,18 +12408,21 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12408
12408
|
return X(n("Please enter a profile name")), !1;
|
|
12409
12409
|
let f;
|
|
12410
12410
|
if (b === "in") {
|
|
12411
|
-
const
|
|
12412
|
-
f = !isNaN(
|
|
12411
|
+
const bA = parseInt(K, 10), oe = parseInt(T, 10);
|
|
12412
|
+
f = !isNaN(bA) && bA > 0 && !isNaN(oe) && oe >= 0 && oe <= 11;
|
|
12413
12413
|
} else {
|
|
12414
|
-
const
|
|
12415
|
-
f = !isNaN(
|
|
12414
|
+
const bA = parseFloat(F);
|
|
12415
|
+
f = !isNaN(bA) && bA > 0;
|
|
12416
12416
|
}
|
|
12417
12417
|
if (!f)
|
|
12418
12418
|
return X(n("Please enter a valid height")), !1;
|
|
12419
|
-
const j = parseFloat(
|
|
12420
|
-
|
|
12419
|
+
const j = parseFloat(MA);
|
|
12420
|
+
if (!j || j <= 0)
|
|
12421
|
+
return X(n("Please enter a valid weight")), !1;
|
|
12422
|
+
const dA = parseFloat(gA);
|
|
12423
|
+
return !dA || dA <= 0 ? (X(n("Please enter a valid age")), !1) : (X(""), !0);
|
|
12421
12424
|
}, Qe = () => C.trim() ? (X(""), !0) : (X(n("Please enter a profile name")), !1), SA = () => {
|
|
12422
|
-
const f = b === "in" ? (parseInt(K, 10) || 0) * 12 + (parseInt(T, 10) || 0) : parseFloat(F), j = parseFloat(
|
|
12425
|
+
const f = b === "in" ? (parseInt(K, 10) || 0) * 12 + (parseInt(T, 10) || 0) : parseFloat(F), j = parseFloat(gA);
|
|
12423
12426
|
return {
|
|
12424
12427
|
name: C.trim(),
|
|
12425
12428
|
gender: Z,
|
|
@@ -12427,18 +12430,18 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12427
12430
|
heightUnit: b,
|
|
12428
12431
|
weightUnit: b === "in" ? "lbs" : "kg",
|
|
12429
12432
|
heightCm: f,
|
|
12430
|
-
weightKg: parseFloat(
|
|
12433
|
+
weightKg: parseFloat(MA),
|
|
12431
12434
|
height: f,
|
|
12432
|
-
weight: parseFloat(
|
|
12435
|
+
weight: parseFloat(MA),
|
|
12433
12436
|
...j > 0 ? { age: j } : {},
|
|
12434
12437
|
chestProfile: NA || void 0,
|
|
12435
|
-
midsectionProfile:
|
|
12436
|
-
hipProfile:
|
|
12437
|
-
bandSize:
|
|
12438
|
-
cupSize:
|
|
12438
|
+
midsectionProfile: re || void 0,
|
|
12439
|
+
hipProfile: kA ? q || void 0 : ae || void 0,
|
|
12440
|
+
bandSize: kA && S || void 0,
|
|
12441
|
+
cupSize: kA && UA || void 0
|
|
12439
12442
|
};
|
|
12440
12443
|
}, P = () => {
|
|
12441
|
-
const f = b === "in" ? (parseInt(K, 10) || 0) * 12 + (parseInt(T, 10) || 0) : parseFloat(F), j = parseFloat(
|
|
12444
|
+
const f = b === "in" ? (parseInt(K, 10) || 0) * 12 + (parseInt(T, 10) || 0) : parseFloat(F), j = parseFloat(MA), dA = parseFloat(gA);
|
|
12442
12445
|
return {
|
|
12443
12446
|
name: C.trim(),
|
|
12444
12447
|
gender: Z,
|
|
@@ -12447,11 +12450,11 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12447
12450
|
weightUnit: b === "in" ? "lbs" : "kg",
|
|
12448
12451
|
...f > 0 ? { heightCm: f, height: f } : {},
|
|
12449
12452
|
...j > 0 ? { weightKg: j, weight: j } : {},
|
|
12450
|
-
...
|
|
12451
|
-
...
|
|
12452
|
-
...
|
|
12453
|
-
...
|
|
12454
|
-
photoBase64:
|
|
12453
|
+
...dA > 0 ? { age: dA } : {},
|
|
12454
|
+
...kA && S ? { bandSize: S } : {},
|
|
12455
|
+
...kA && UA ? { cupSize: UA } : {},
|
|
12456
|
+
...kA && S && UA ? { braSizeRegion: Ae } : {},
|
|
12457
|
+
photoBase64: rA || void 0
|
|
12455
12458
|
};
|
|
12456
12459
|
}, H = () => {
|
|
12457
12460
|
if (!(l === "identity" && !JA())) {
|
|
@@ -12459,11 +12462,11 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12459
12462
|
X(n("Please pick an option"));
|
|
12460
12463
|
return;
|
|
12461
12464
|
}
|
|
12462
|
-
if (l === "stomach" && !
|
|
12465
|
+
if (l === "stomach" && !re) {
|
|
12463
12466
|
X(n("Please pick an option"));
|
|
12464
12467
|
return;
|
|
12465
12468
|
}
|
|
12466
|
-
if (l === "seat" && !
|
|
12469
|
+
if (l === "seat" && !ae) {
|
|
12467
12470
|
X(n("Please pick an option"));
|
|
12468
12471
|
return;
|
|
12469
12472
|
}
|
|
@@ -12483,13 +12486,13 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12483
12486
|
}
|
|
12484
12487
|
}, N = (f, j) => {
|
|
12485
12488
|
X(""), f === "chest" ? He(j) : f === "stomach" ? V(j) : f === "seat" ? x(j) : f === "hips" && XA(j);
|
|
12486
|
-
const
|
|
12489
|
+
const dA = KA.indexOf(f), bA = dA === ZA - 1;
|
|
12487
12490
|
setTimeout(() => {
|
|
12488
|
-
if (
|
|
12489
|
-
const
|
|
12490
|
-
f === "chest" ?
|
|
12491
|
+
if (bA) {
|
|
12492
|
+
const oe = SA();
|
|
12493
|
+
f === "chest" ? oe.chestProfile = j : f === "stomach" ? oe.midsectionProfile = j : (f === "seat" || f === "hips") && (oe.hipProfile = j), o(oe);
|
|
12491
12494
|
} else
|
|
12492
|
-
D(KA[
|
|
12495
|
+
D(KA[dA + 1]);
|
|
12493
12496
|
}, 220);
|
|
12494
12497
|
}, J = () => {
|
|
12495
12498
|
if (X(""), l === "identity") {
|
|
@@ -12497,48 +12500,48 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12497
12500
|
return;
|
|
12498
12501
|
}
|
|
12499
12502
|
D(KA[Math.max(0, me - 1)]);
|
|
12500
|
-
}, _ = w === "manual" && (l === "chest" || l === "stomach" || l === "seat" || l === "hips"),
|
|
12503
|
+
}, _ = w === "manual" && (l === "chest" || l === "stomach" || l === "seat" || l === "hips"), tA = async () => {
|
|
12501
12504
|
if (d === "name-photo") {
|
|
12502
12505
|
if (!Qe()) return;
|
|
12503
|
-
if (!
|
|
12506
|
+
if (!rA) {
|
|
12504
12507
|
X(n("Please upload a photo"));
|
|
12505
12508
|
return;
|
|
12506
12509
|
}
|
|
12507
12510
|
if (b === "in") {
|
|
12508
|
-
const
|
|
12509
|
-
if (!
|
|
12511
|
+
const dA = parseFloat(K);
|
|
12512
|
+
if (!dA || dA < 3 || dA > 8) {
|
|
12510
12513
|
X(n("Please enter a valid height"));
|
|
12511
12514
|
return;
|
|
12512
12515
|
}
|
|
12513
12516
|
} else {
|
|
12514
|
-
const
|
|
12515
|
-
if (!
|
|
12517
|
+
const dA = parseFloat(F);
|
|
12518
|
+
if (!dA || dA < 100 || dA > 250) {
|
|
12516
12519
|
X(n("Please enter a valid height"));
|
|
12517
12520
|
return;
|
|
12518
12521
|
}
|
|
12519
12522
|
}
|
|
12520
|
-
const j = parseFloat(
|
|
12523
|
+
const j = parseFloat(MA);
|
|
12521
12524
|
if (!j || j <= 0) {
|
|
12522
12525
|
X(n("Please enter a valid weight"));
|
|
12523
12526
|
return;
|
|
12524
12527
|
}
|
|
12525
|
-
if (
|
|
12528
|
+
if (kA && (!S || !UA)) {
|
|
12526
12529
|
X(n("Please select your bra band and cup size"));
|
|
12527
12530
|
return;
|
|
12528
12531
|
}
|
|
12529
|
-
if (X(""), u("calculating"), M(!0), c &&
|
|
12530
|
-
const
|
|
12532
|
+
if (X(""), u("calculating"), M(!0), c && rA) {
|
|
12533
|
+
const dA = b === "in" ? (parseInt(K, 10) || 0) * 12 + (parseInt(T, 10) || 0) : parseFloat(F), bA = parseFloat(gA);
|
|
12531
12534
|
try {
|
|
12532
|
-
const
|
|
12533
|
-
photoBase64:
|
|
12534
|
-
height:
|
|
12535
|
+
const oe = await c({
|
|
12536
|
+
photoBase64: rA,
|
|
12537
|
+
height: dA || 0,
|
|
12535
12538
|
weight: j || 0,
|
|
12536
12539
|
heightUnit: b,
|
|
12537
12540
|
weightUnit: b === "in" ? "lbs" : "kg",
|
|
12538
12541
|
gender: Z,
|
|
12539
|
-
...
|
|
12542
|
+
...bA > 0 ? { age: bA } : {}
|
|
12540
12543
|
});
|
|
12541
|
-
|
|
12544
|
+
oe?.estimates && Y(oe.estimates);
|
|
12542
12545
|
} catch {
|
|
12543
12546
|
}
|
|
12544
12547
|
}
|
|
@@ -12565,7 +12568,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12565
12568
|
if (w === "manual") return J();
|
|
12566
12569
|
if (w === "image") return ee();
|
|
12567
12570
|
g();
|
|
12568
|
-
},
|
|
12571
|
+
}, ce = (() => {
|
|
12569
12572
|
if (w == null) return n("Choose a method");
|
|
12570
12573
|
if (w === "manual") {
|
|
12571
12574
|
const f = {
|
|
@@ -12583,11 +12586,11 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12583
12586
|
if (w == null) return 0;
|
|
12584
12587
|
if (w === "manual") return Math.round((me + 1) / ZA * 100);
|
|
12585
12588
|
let f = 0;
|
|
12586
|
-
return C.trim() && (f += 50),
|
|
12589
|
+
return C.trim() && (f += 50), rA && (f += 50), f;
|
|
12587
12590
|
})();
|
|
12588
12591
|
return /* @__PURE__ */ e("div", { className: `ps-cpw-root${w === "image" && d === "name-photo" ? " ps-cpw-hide-global-back" : ""}`, children: [
|
|
12589
12592
|
!(w === "image" && d === "name-photo") && /* @__PURE__ */ e("div", { className: "ps-cpw-step-head", children: [
|
|
12590
|
-
/* @__PURE__ */ A("h2", { className: "ps-cpw-step-title", children:
|
|
12593
|
+
/* @__PURE__ */ A("h2", { className: "ps-cpw-step-title", children: ce }),
|
|
12591
12594
|
w != null && /* @__PURE__ */ A("div", { className: "ps-cpw-progress", children: /* @__PURE__ */ A("div", { className: "ps-cpw-progress-track", children: /* @__PURE__ */ A("div", { className: "ps-cpw-progress-fill", style: { width: `${he}%` } }) }) })
|
|
12592
12595
|
] }),
|
|
12593
12596
|
/* @__PURE__ */ e("div", { className: "ps-cpw-body", ref: h, children: [
|
|
@@ -12721,7 +12724,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12721
12724
|
type: "number",
|
|
12722
12725
|
inputMode: "numeric",
|
|
12723
12726
|
className: "ps-bp-inline-input",
|
|
12724
|
-
value:
|
|
12727
|
+
value: MA,
|
|
12725
12728
|
placeholder: n(b === "in" ? "e.g. 154" : "e.g. 70"),
|
|
12726
12729
|
onChange: (f) => {
|
|
12727
12730
|
E(f.target.value), X("");
|
|
@@ -12730,11 +12733,30 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12730
12733
|
),
|
|
12731
12734
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: b === "in" ? "lbs" : "kg" })
|
|
12732
12735
|
] })
|
|
12736
|
+
] }),
|
|
12737
|
+
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
12738
|
+
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("AGE") }),
|
|
12739
|
+
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
12740
|
+
/* @__PURE__ */ A(
|
|
12741
|
+
"input",
|
|
12742
|
+
{
|
|
12743
|
+
type: "number",
|
|
12744
|
+
inputMode: "numeric",
|
|
12745
|
+
className: "ps-bp-inline-input",
|
|
12746
|
+
value: gA,
|
|
12747
|
+
placeholder: n("e.g. 30"),
|
|
12748
|
+
onChange: (f) => {
|
|
12749
|
+
O(f.target.value), X("");
|
|
12750
|
+
}
|
|
12751
|
+
}
|
|
12752
|
+
),
|
|
12753
|
+
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: n("years") })
|
|
12754
|
+
] })
|
|
12733
12755
|
] })
|
|
12734
12756
|
] }),
|
|
12735
12757
|
fA && /* @__PURE__ */ A("div", { className: "ps-cpw-error", children: fA })
|
|
12736
12758
|
] }, "manual-identity"),
|
|
12737
|
-
w === "manual" && l === "chest" && !
|
|
12759
|
+
w === "manual" && l === "chest" && !kA && /* @__PURE__ */ e(
|
|
12738
12760
|
Zo,
|
|
12739
12761
|
{
|
|
12740
12762
|
stepKey: "chest",
|
|
@@ -12754,9 +12776,9 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12754
12776
|
title: n("STOMACH PROFILE"),
|
|
12755
12777
|
subtitle: n("Describe your mid-section silhouette"),
|
|
12756
12778
|
children: [
|
|
12757
|
-
/* @__PURE__ */ A(Se, { img: oA.stomach?.flat ?? null, label: n("FLAT"), selected:
|
|
12758
|
-
/* @__PURE__ */ A(Se, { img: oA.stomach?.average ?? null, label: n("AVERAGE"), selected:
|
|
12759
|
-
/* @__PURE__ */ A(Se, { img: oA.stomach?.round ?? null, label: n("ROUND"), selected:
|
|
12779
|
+
/* @__PURE__ */ A(Se, { img: oA.stomach?.flat ?? null, label: n("FLAT"), selected: re === "flat", onSelect: () => N("stomach", "flat") }),
|
|
12780
|
+
/* @__PURE__ */ A(Se, { img: oA.stomach?.average ?? null, label: n("AVERAGE"), selected: re === "average", onSelect: () => N("stomach", "average") }),
|
|
12781
|
+
/* @__PURE__ */ A(Se, { img: oA.stomach?.round ?? null, label: n("ROUND"), selected: re === "round", onSelect: () => N("stomach", "round") })
|
|
12760
12782
|
]
|
|
12761
12783
|
}
|
|
12762
12784
|
),
|
|
@@ -12767,13 +12789,13 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12767
12789
|
title: n("BACK & SEAT"),
|
|
12768
12790
|
subtitle: n("The curvature of your lower spine and seat profile"),
|
|
12769
12791
|
children: [
|
|
12770
|
-
/* @__PURE__ */ A(Se, { img: oA.seat?.narrow ?? null, label: n("STRAIGHT"), selected:
|
|
12771
|
-
/* @__PURE__ */ A(Se, { img: oA.seat?.average ?? null, label: n("CURVED"), selected:
|
|
12772
|
-
/* @__PURE__ */ A(Se, { img: oA.seat?.full ?? null, label: n("DEEP"), selected:
|
|
12792
|
+
/* @__PURE__ */ A(Se, { img: oA.seat?.narrow ?? null, label: n("STRAIGHT"), selected: ae === "narrow", onSelect: () => N("seat", "narrow") }),
|
|
12793
|
+
/* @__PURE__ */ A(Se, { img: oA.seat?.average ?? null, label: n("CURVED"), selected: ae === "average", onSelect: () => N("seat", "average") }),
|
|
12794
|
+
/* @__PURE__ */ A(Se, { img: oA.seat?.full ?? null, label: n("DEEP"), selected: ae === "full", onSelect: () => N("seat", "full") })
|
|
12773
12795
|
]
|
|
12774
12796
|
}
|
|
12775
12797
|
),
|
|
12776
|
-
w === "manual" && l === "hips" &&
|
|
12798
|
+
w === "manual" && l === "hips" && kA && oA.hips && /* @__PURE__ */ e(
|
|
12777
12799
|
Zo,
|
|
12778
12800
|
{
|
|
12779
12801
|
stepKey: "hips",
|
|
@@ -12786,7 +12808,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12786
12808
|
]
|
|
12787
12809
|
}
|
|
12788
12810
|
),
|
|
12789
|
-
w === "manual" && l === "bra" &&
|
|
12811
|
+
w === "manual" && l === "bra" && kA && /* @__PURE__ */ e("div", { className: "ps-cpw-progressive ps-cpw-fade-in", children: [
|
|
12790
12812
|
/* @__PURE__ */ e("div", { className: "ps-cpw-section-head", children: [
|
|
12791
12813
|
/* @__PURE__ */ A("div", { className: "ps-cpw-section-title", children: n("BRA SIZE") }),
|
|
12792
12814
|
/* @__PURE__ */ A("div", { className: "ps-cpw-section-sub", children: n("Helps us refine bust measurements for tops and dresses") })
|
|
@@ -12817,7 +12839,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12817
12839
|
className: "ps-cpw-input",
|
|
12818
12840
|
value: UA ?? "",
|
|
12819
12841
|
onChange: (f) => {
|
|
12820
|
-
|
|
12842
|
+
Be(f.target.value || null), X("");
|
|
12821
12843
|
},
|
|
12822
12844
|
children: [
|
|
12823
12845
|
/* @__PURE__ */ A("option", { value: "", children: n("Select") }),
|
|
@@ -12833,7 +12855,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12833
12855
|
/* @__PURE__ */ A(
|
|
12834
12856
|
"input",
|
|
12835
12857
|
{
|
|
12836
|
-
ref:
|
|
12858
|
+
ref: ne,
|
|
12837
12859
|
type: "file",
|
|
12838
12860
|
accept: "image/jpeg,image/png,image/webp,image/avif",
|
|
12839
12861
|
style: { display: "none" },
|
|
@@ -12844,10 +12866,10 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12844
12866
|
"div",
|
|
12845
12867
|
{
|
|
12846
12868
|
onClick: () => {
|
|
12847
|
-
!
|
|
12869
|
+
!rA && TA === !0 && GA();
|
|
12848
12870
|
},
|
|
12849
12871
|
onMouseEnter: () => {
|
|
12850
|
-
!
|
|
12872
|
+
!rA && TA === !0 && Fe(!0);
|
|
12851
12873
|
},
|
|
12852
12874
|
onMouseLeave: () => Fe(!1),
|
|
12853
12875
|
onDragEnter: (f) => {
|
|
@@ -12860,11 +12882,11 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12860
12882
|
f.preventDefault(), f.stopPropagation();
|
|
12861
12883
|
},
|
|
12862
12884
|
onDrop: (f) => {
|
|
12863
|
-
if (f.preventDefault(), f.stopPropagation(),
|
|
12885
|
+
if (f.preventDefault(), f.stopPropagation(), rA || TA !== !0) return;
|
|
12864
12886
|
const j = f.dataTransfer?.files?.[0];
|
|
12865
|
-
if (!j || !
|
|
12866
|
-
const
|
|
12867
|
-
|
|
12887
|
+
if (!j || !ne.current) return;
|
|
12888
|
+
const dA = new DataTransfer();
|
|
12889
|
+
dA.items.add(j), ne.current.files = dA.files, ne.current.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
12868
12890
|
},
|
|
12869
12891
|
style: {
|
|
12870
12892
|
flex: 1,
|
|
@@ -12872,21 +12894,21 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12872
12894
|
flexDirection: "column",
|
|
12873
12895
|
alignItems: "center",
|
|
12874
12896
|
justifyContent: "center",
|
|
12875
|
-
border:
|
|
12897
|
+
border: rA ? "2px solid var(--ps-accent)" : TA === !0 && ve ? "2px dashed var(--ps-accent)" : "2px dashed var(--ps-border-color)",
|
|
12876
12898
|
borderRadius: "0.5vw",
|
|
12877
|
-
cursor:
|
|
12899
|
+
cursor: rA ? "default" : TA === !0 ? "pointer" : "default",
|
|
12878
12900
|
position: "relative",
|
|
12879
|
-
background:
|
|
12901
|
+
background: rA ? "var(--ps-bg-secondary)" : TA === !0 && ve ? "rgba(33,84,239,0.04)" : TA === null ? "rgba(0,0,0,0.025)" : "var(--ps-bg-secondary)",
|
|
12880
12902
|
transition: "border-color 0.18s, background 0.18s",
|
|
12881
12903
|
overflow: "hidden"
|
|
12882
12904
|
},
|
|
12883
12905
|
children: [
|
|
12884
|
-
|
|
12906
|
+
iA && /* @__PURE__ */ e("div", { className: "ps-bp-photo-overlay", onClick: (f) => f.stopPropagation(), children: [
|
|
12885
12907
|
/* @__PURE__ */ A("div", { className: "ps-bp-photo-overlay-spinner", "aria-hidden": "true" }),
|
|
12886
12908
|
/* @__PURE__ */ A("span", { className: "ps-bp-photo-overlay-label", children: RA || n("Analyzing photo…") })
|
|
12887
12909
|
] }),
|
|
12888
|
-
|
|
12889
|
-
/* @__PURE__ */ A("img", { src:
|
|
12910
|
+
rA ? /* @__PURE__ */ e(eA, { children: [
|
|
12911
|
+
/* @__PURE__ */ A("img", { src: rA, alt: "preview", style: { width: "100%", height: "100%", objectFit: "contain" } }),
|
|
12890
12912
|
/* @__PURE__ */ A("button", { onClick: (f) => {
|
|
12891
12913
|
f.stopPropagation(), Ge();
|
|
12892
12914
|
}, style: { position: "absolute", top: "0.5vw", right: "0.5vw", width: "1.4vw", height: "1.4vw", borderRadius: "50%", background: "rgba(0,0,0,0.6)", border: "none", color: "#fff", fontSize: "0.7vw", cursor: "pointer", display: "flex", alignItems: "center", justifyContent: "center" }, children: "×" })
|
|
@@ -12933,7 +12955,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
12933
12955
|
{
|
|
12934
12956
|
type: "button",
|
|
12935
12957
|
onClick: (f) => {
|
|
12936
|
-
f.stopPropagation(), $A(null),
|
|
12958
|
+
f.stopPropagation(), $A(null), ne.current?.click();
|
|
12937
12959
|
},
|
|
12938
12960
|
style: {
|
|
12939
12961
|
padding: "0.35vw 0.8vw",
|
|
@@ -13154,7 +13176,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13154
13176
|
/* @__PURE__ */ A("div", { style: { marginTop: "auto", marginBottom: "auto" }, children: /* @__PURE__ */ e("div", { className: "ps-bp-inline-fields ps-cpw-inline-fields", children: [
|
|
13155
13177
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
13156
13178
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("NAME") }),
|
|
13157
|
-
/* @__PURE__ */ A("div", { className: "ps-bp-inline-input-group", children: /* @__PURE__ */ A("input", { ref: le, type: "text", className: `ps-bp-inline-input${
|
|
13179
|
+
/* @__PURE__ */ A("div", { className: "ps-bp-inline-input-group", children: /* @__PURE__ */ A("input", { ref: le, type: "text", className: `ps-bp-inline-input${CA ? " ps-cpw-shake" : ""}`, value: C, placeholder: n("e.g. My Photo Profile"), onChange: (f) => {
|
|
13158
13180
|
W(f.target.value), X("");
|
|
13159
13181
|
}, onAnimationEnd: () => _A(!1) }) })
|
|
13160
13182
|
] }),
|
|
@@ -13166,7 +13188,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13166
13188
|
{
|
|
13167
13189
|
type: "button",
|
|
13168
13190
|
onClick: () => {
|
|
13169
|
-
i("male"), pA(null),
|
|
13191
|
+
i("male"), pA(null), Be(null), X("");
|
|
13170
13192
|
},
|
|
13171
13193
|
className: "ps-cpw-gender-pill",
|
|
13172
13194
|
"data-active": Z === "male" ? "true" : "false",
|
|
@@ -13208,13 +13230,13 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13208
13230
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
13209
13231
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("WEIGHT") }),
|
|
13210
13232
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
13211
|
-
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value:
|
|
13233
|
+
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value: MA, placeholder: n(b === "in" ? "e.g. 154" : "e.g. 70"), onChange: (f) => {
|
|
13212
13234
|
E(f.target.value), X("");
|
|
13213
13235
|
} }),
|
|
13214
13236
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: b === "in" ? "lbs" : "kg" })
|
|
13215
13237
|
] })
|
|
13216
13238
|
] }),
|
|
13217
|
-
|
|
13239
|
+
kA && /* @__PURE__ */ e("div", { ref: FA, children: [
|
|
13218
13240
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
13219
13241
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("BRA REGION") }),
|
|
13220
13242
|
/* @__PURE__ */ A("div", { className: "ps-bp-inline-input-group", children: /* @__PURE__ */ A(
|
|
@@ -13225,7 +13247,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13225
13247
|
isOpen: LA === "region",
|
|
13226
13248
|
onToggle: () => Ce(LA === "region" ? null : "region"),
|
|
13227
13249
|
onSelect: (f) => {
|
|
13228
|
-
pe(f), pA(null),
|
|
13250
|
+
pe(f), pA(null), Be(null), Ce(null);
|
|
13229
13251
|
}
|
|
13230
13252
|
}
|
|
13231
13253
|
) })
|
|
@@ -13252,13 +13274,13 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13252
13274
|
pg,
|
|
13253
13275
|
{
|
|
13254
13276
|
value: UA,
|
|
13255
|
-
options:
|
|
13277
|
+
options: Sg[Ae] || Sg.US,
|
|
13256
13278
|
placeholder: "—",
|
|
13257
13279
|
direction: "up",
|
|
13258
13280
|
isOpen: LA === "cup",
|
|
13259
13281
|
onToggle: () => Ce(LA === "cup" ? null : "cup"),
|
|
13260
13282
|
onSelect: (f) => {
|
|
13261
|
-
|
|
13283
|
+
Be(f), Ce(null);
|
|
13262
13284
|
}
|
|
13263
13285
|
}
|
|
13264
13286
|
) })
|
|
@@ -13379,7 +13401,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13379
13401
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
13380
13402
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("WEIGHT") }),
|
|
13381
13403
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
13382
|
-
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value:
|
|
13404
|
+
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value: MA, placeholder: n(b === "in" ? "e.g. 154" : "e.g. 70"), onChange: (f) => {
|
|
13383
13405
|
E(f.target.value), X("");
|
|
13384
13406
|
} }),
|
|
13385
13407
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: b === "in" ? "lbs" : "kg" })
|
|
@@ -13388,7 +13410,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13388
13410
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
13389
13411
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: n("AGE") }),
|
|
13390
13412
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
13391
|
-
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value:
|
|
13413
|
+
/* @__PURE__ */ A("input", { type: "number", inputMode: "numeric", className: "ps-bp-inline-input", value: gA, placeholder: n("e.g. 30"), onChange: (f) => {
|
|
13392
13414
|
O(f.target.value), X("");
|
|
13393
13415
|
} }),
|
|
13394
13416
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: n("years") })
|
|
@@ -13404,7 +13426,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13404
13426
|
{ title: n("ANALYZING BODY"), desc: n("Measuring shoulders, chest, waist and hips.") },
|
|
13405
13427
|
{ title: n("COMPUTING DEPTH"), desc: n("Using your height and weight to compute true circumferences.") },
|
|
13406
13428
|
{ title: n("FINALIZING"), desc: n("Almost done — preparing your body profile.") }
|
|
13407
|
-
], j = f[vA % f.length] ?? f[0],
|
|
13429
|
+
], j = f[vA % f.length] ?? f[0], dA = [
|
|
13408
13430
|
["leftShoulder", "rightShoulder"],
|
|
13409
13431
|
["leftShoulder", "leftElbow"],
|
|
13410
13432
|
["leftElbow", "leftWrist"],
|
|
@@ -13431,17 +13453,17 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13431
13453
|
overflow: "hidden",
|
|
13432
13454
|
minHeight: "20vw"
|
|
13433
13455
|
}, children: [
|
|
13434
|
-
|
|
13456
|
+
rA && /* @__PURE__ */ A(
|
|
13435
13457
|
"img",
|
|
13436
13458
|
{
|
|
13437
|
-
src:
|
|
13459
|
+
src: rA,
|
|
13438
13460
|
alt: "",
|
|
13439
13461
|
style: { maxWidth: "100%", maxHeight: "100%", objectFit: "contain", display: "block" },
|
|
13440
|
-
onLoad: (
|
|
13441
|
-
const
|
|
13462
|
+
onLoad: (bA) => {
|
|
13463
|
+
const oe = bA.currentTarget;
|
|
13442
13464
|
fe({
|
|
13443
|
-
w:
|
|
13444
|
-
h:
|
|
13465
|
+
w: oe.naturalWidth || oe.offsetWidth || 800,
|
|
13466
|
+
h: oe.naturalHeight || oe.offsetHeight || 1200
|
|
13445
13467
|
});
|
|
13446
13468
|
}
|
|
13447
13469
|
}
|
|
@@ -13454,8 +13476,8 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13454
13476
|
style: { position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none" },
|
|
13455
13477
|
"aria-hidden": "true",
|
|
13456
13478
|
children: [
|
|
13457
|
-
|
|
13458
|
-
const Le = PA[
|
|
13479
|
+
dA.map(([bA, oe], be) => {
|
|
13480
|
+
const Le = PA[bA], $e = PA[oe];
|
|
13459
13481
|
return !Le || !$e ? null : /* @__PURE__ */ A(
|
|
13460
13482
|
"line",
|
|
13461
13483
|
{
|
|
@@ -13470,12 +13492,12 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13470
13492
|
`l-${be}`
|
|
13471
13493
|
);
|
|
13472
13494
|
}),
|
|
13473
|
-
Object.entries(PA).map(([
|
|
13474
|
-
const be =
|
|
13495
|
+
Object.entries(PA).map(([bA, oe]) => {
|
|
13496
|
+
const be = oe;
|
|
13475
13497
|
return /* @__PURE__ */ e("g", { children: [
|
|
13476
13498
|
/* @__PURE__ */ A("circle", { cx: be.x * qA.w, cy: be.y * qA.h, r: Math.max(7, qA.w / 75), fill: "rgba(100,210,255,0.25)" }),
|
|
13477
13499
|
/* @__PURE__ */ A("circle", { cx: be.x * qA.w, cy: be.y * qA.h, r: Math.max(4, qA.w / 120), fill: "rgba(100,210,255,0.95)" })
|
|
13478
|
-
] },
|
|
13500
|
+
] }, bA);
|
|
13479
13501
|
})
|
|
13480
13502
|
]
|
|
13481
13503
|
}
|
|
@@ -13498,7 +13520,7 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13498
13520
|
] })
|
|
13499
13521
|
] }),
|
|
13500
13522
|
/* @__PURE__ */ A("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(120px, 1fr))", gap: "0.6vw", marginTop: "0.6vw" }, children: [
|
|
13501
|
-
|
|
13523
|
+
kA ? { key: "bust", label: n("BUST") } : { key: "chest", label: n("CHEST") },
|
|
13502
13524
|
{ key: "waist", label: n("WAIST") },
|
|
13503
13525
|
{ key: "hips", label: n("HIPS") },
|
|
13504
13526
|
{ key: "shoulderWidth", label: n("SHOULDER") },
|
|
@@ -13507,18 +13529,18 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13507
13529
|
{ key: "inseam", label: n("INSEAM") },
|
|
13508
13530
|
{ key: "thighCircumference", label: n("THIGH") },
|
|
13509
13531
|
{ key: "footLengthCm", label: n("FOOT") }
|
|
13510
|
-
].map(({ key:
|
|
13511
|
-
const be = L[
|
|
13532
|
+
].map(({ key: bA, label: oe }) => {
|
|
13533
|
+
const be = L[bA] ?? (bA === "bust" ? L.chest : bA === "chest" ? L.bust : void 0);
|
|
13512
13534
|
if (!be || be === 0) return null;
|
|
13513
13535
|
const Le = b === "in" ? Math.round(be / 2.54 * 10) / 10 : be;
|
|
13514
13536
|
return /* @__PURE__ */ e("div", { style: { background: "rgba(33,84,239,0.04)", border: "1px solid rgba(33,84,239,0.12)", borderRadius: "0.4vw", padding: "0.6vw 0.8vw" }, children: [
|
|
13515
|
-
/* @__PURE__ */ A("div", { style: { fontSize: "0.6vw", fontWeight: 700, color: "var(--ps-text-secondary)", textTransform: "uppercase", letterSpacing: "0.08em", marginBottom: "0.2vw" }, children:
|
|
13537
|
+
/* @__PURE__ */ A("div", { style: { fontSize: "0.6vw", fontWeight: 700, color: "var(--ps-text-secondary)", textTransform: "uppercase", letterSpacing: "0.08em", marginBottom: "0.2vw" }, children: oe }),
|
|
13516
13538
|
/* @__PURE__ */ e("div", { style: { fontSize: "1vw", fontWeight: 600, color: "var(--ps-text-primary)" }, children: [
|
|
13517
13539
|
Le,
|
|
13518
13540
|
" ",
|
|
13519
13541
|
/* @__PURE__ */ A("span", { style: { fontSize: "0.7vw", color: "var(--ps-text-muted)", fontWeight: 400 }, children: b })
|
|
13520
13542
|
] })
|
|
13521
|
-
] },
|
|
13543
|
+
] }, bA);
|
|
13522
13544
|
}) })
|
|
13523
13545
|
] }) : /* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", flex: 1, gap: "0.8vw" }, children: [
|
|
13524
13546
|
/* @__PURE__ */ A("p", { style: { color: "var(--ps-text-primary)", fontSize: "1vw", fontWeight: 600 }, children: n("Estimation could not complete") }),
|
|
@@ -13530,18 +13552,18 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13530
13552
|
/* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-back-btn", onClick: EA, children: w == null ? n("Cancel") : `← ${n("Back")}` }),
|
|
13531
13553
|
w === "manual" && !_ && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick: H, children: n(Me ? "CALCULATE MY FIT" : "Continue") }),
|
|
13532
13554
|
w === "image" && d === "name-photo" && (() => {
|
|
13533
|
-
const f = b === "in" ? parseFloat(K) > 0 || parseFloat(T) > 0 : parseFloat(F) > 0, j = parseFloat(
|
|
13555
|
+
const f = b === "in" ? parseFloat(K) > 0 || parseFloat(T) > 0 : parseFloat(F) > 0, j = parseFloat(MA) > 0, dA = !!C.trim(), bA = !!rA, oe = iA, be = n(oe ? "Analyzing photo…" : bA ? dA ? f ? j ? "Calculate My Body Parts" : "Enter your weight" : "Enter your height" : "Add a name for this profile" : "Upload a photo"), Le = oe || !bA || !dA || !f || !j;
|
|
13534
13556
|
return /* @__PURE__ */ A(
|
|
13535
13557
|
"button",
|
|
13536
13558
|
{
|
|
13537
13559
|
type: "button",
|
|
13538
13560
|
className: "ps-cpw-next-btn",
|
|
13539
13561
|
onClick: () => {
|
|
13540
|
-
if (!
|
|
13562
|
+
if (!dA) {
|
|
13541
13563
|
_A(!0), le.current?.focus();
|
|
13542
13564
|
return;
|
|
13543
13565
|
}
|
|
13544
|
-
|
|
13566
|
+
tA();
|
|
13545
13567
|
},
|
|
13546
13568
|
disabled: Le,
|
|
13547
13569
|
title: Le ? be : void 0,
|
|
@@ -13549,8 +13571,8 @@ function Jr({ onSave: o, onCancel: g, apiUrl: t, apiKey: r, onPhotoPreview: a, o
|
|
|
13549
13571
|
}
|
|
13550
13572
|
);
|
|
13551
13573
|
})(),
|
|
13552
|
-
w === "image" && d === "details" && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick:
|
|
13553
|
-
w === "image" && d === "calculating" && !m && L && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick:
|
|
13574
|
+
w === "image" && d === "details" && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick: tA, children: n("Calculate My Body Parts") }),
|
|
13575
|
+
w === "image" && d === "calculating" && !m && L && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick: tA, children: n("Save Profile") }),
|
|
13554
13576
|
w === "image" && d === "calculating" && !m && !L && /* @__PURE__ */ A("button", { type: "button", className: "ps-cpw-next-btn", onClick: () => {
|
|
13555
13577
|
u("details"), X("");
|
|
13556
13578
|
}, children: n("Try Again") })
|
|
@@ -13595,7 +13617,7 @@ function Wr({
|
|
|
13595
13617
|
v[F.key] = z != null ? String(Math.round(z * 10) / 10) : "";
|
|
13596
13618
|
}), v;
|
|
13597
13619
|
});
|
|
13598
|
-
|
|
13620
|
+
HA(() => {
|
|
13599
13621
|
Y((v) => {
|
|
13600
13622
|
const F = { ...v };
|
|
13601
13623
|
let z = !1;
|
|
@@ -13788,7 +13810,7 @@ function qr({
|
|
|
13788
13810
|
tabIndex: 0,
|
|
13789
13811
|
children: [
|
|
13790
13812
|
/* @__PURE__ */ A("div", { className: "ps-msp-card-header", children: /* @__PURE__ */ A("span", { className: "ps-msp-card-tag", children: g ? n("DEFAULT PROFILE") : o.gender === "female" ? n("WOMEN'S FIT") : n("MEN'S FIT") }) }),
|
|
13791
|
-
/* @__PURE__ */ A("div", { className: "ps-msp-card-circle", children: o.photoBase64 ? /* @__PURE__ */ A("img", { src: o.photoBase64, alt: o.name }) : /* @__PURE__ */ A(
|
|
13813
|
+
/* @__PURE__ */ A("div", { className: "ps-msp-card-circle", children: o.photoBase64 ? /* @__PURE__ */ A("img", { src: o.photoBase64, alt: o.name }) : /* @__PURE__ */ A(mg, { size: 32 }) }),
|
|
13792
13814
|
/* @__PURE__ */ A("div", { className: "ps-msp-card-name", children: o.name }),
|
|
13793
13815
|
/* @__PURE__ */ e("div", { className: "ps-msp-card-meta", children: [
|
|
13794
13816
|
w && /* @__PURE__ */ e("div", { className: "ps-msp-meta-row", children: [
|
|
@@ -13867,9 +13889,9 @@ function $r({
|
|
|
13867
13889
|
onRegisterBackInterceptor: L
|
|
13868
13890
|
}) {
|
|
13869
13891
|
const [Y, h] = Q(!1), [C, W] = Q(null), Z = C && o.find((i) => i.id === C) || null;
|
|
13870
|
-
return
|
|
13892
|
+
return HA(() => {
|
|
13871
13893
|
C && !o.find((i) => i.id === C) && W(null);
|
|
13872
|
-
}, [o, C]),
|
|
13894
|
+
}, [o, C]), HA(() => {
|
|
13873
13895
|
if (!L) return;
|
|
13874
13896
|
L(() => Y || C !== null, () => {
|
|
13875
13897
|
if (Y) {
|
|
@@ -13945,7 +13967,7 @@ function $r({
|
|
|
13945
13967
|
] }) }) });
|
|
13946
13968
|
}
|
|
13947
13969
|
function _r({ setView: o }) {
|
|
13948
|
-
return
|
|
13970
|
+
return HA(() => {
|
|
13949
13971
|
o("size-result");
|
|
13950
13972
|
}, []), null;
|
|
13951
13973
|
}
|
|
@@ -13994,14 +14016,14 @@ function oi({
|
|
|
13994
14016
|
error: v,
|
|
13995
14017
|
t: F
|
|
13996
14018
|
}) {
|
|
13997
|
-
const z = parseFloat(r) || 173, K = (parseFloat(c) || 5) * 12 + (parseFloat(w) || 8), wA = Math.floor(K / 12), T = K % 12, zA = parseFloat(l) || (g === "kg" ? 70 : 154),
|
|
13998
|
-
const Pe = Math.max(X, Math.min(
|
|
14019
|
+
const z = parseFloat(r) || 173, K = (parseFloat(c) || 5) * 12 + (parseFloat(w) || 8), wA = Math.floor(K / 12), T = K % 12, zA = parseFloat(l) || (g === "kg" ? 70 : 154), MA = parseFloat(d) || 30, E = g === "kg" ? 30 : 66, gA = g === "kg" ? 200 : 440, O = 120, fA = 220, X = 48, rA = 84, uA = 13, iA = 100, yA = (z - O) / (fA - O) * 100, RA = (K - X) / (rA - X) * 100, mA = (zA - E) / (gA - E) * 100, we = (MA - uA) / (iA - uA) * 100, $A = ($) => {
|
|
14020
|
+
const Pe = Math.max(X, Math.min(rA, $));
|
|
13999
14021
|
n(String(Math.floor(Pe / 12))), s(String(Pe % 12));
|
|
14000
14022
|
}, PA = () => {
|
|
14001
14023
|
o === "in" ? $A(K + 1) : a(String(Math.min(fA, z + 1)));
|
|
14002
|
-
},
|
|
14024
|
+
}, te = () => {
|
|
14003
14025
|
o === "in" ? $A(K - 1) : a(String(Math.max(O, z - 1)));
|
|
14004
|
-
}, qA = () => D(String(Math.min(
|
|
14026
|
+
}, qA = () => D(String(Math.min(gA, zA + 1))), fe = () => D(String(Math.max(E, zA - 1))), vA = () => u(String(Math.min(iA, MA + 1))), ue = () => u(String(Math.max(uA, MA - 1)));
|
|
14005
14027
|
return /* @__PURE__ */ e("div", { className: "ps-bpm-root", children: [
|
|
14006
14028
|
/* @__PURE__ */ e("div", { className: "ps-bpm-header", children: [
|
|
14007
14029
|
/* @__PURE__ */ A("h2", { className: "ps-bpm-title", children: F("Body Measurements") }),
|
|
@@ -14043,14 +14065,14 @@ function oi({
|
|
|
14043
14065
|
/* @__PURE__ */ A("span", { className: "ps-bpm-value-display", children: o === "in" ? `${wA}ft ${T}in` : `${Math.round(z)} cm` })
|
|
14044
14066
|
] }),
|
|
14045
14067
|
/* @__PURE__ */ e("div", { className: "ps-bpm-slider-row", children: [
|
|
14046
|
-
/* @__PURE__ */ A("button", { type: "button", className: "ps-bpm-step-btn", onClick:
|
|
14068
|
+
/* @__PURE__ */ A("button", { type: "button", className: "ps-bpm-step-btn", onClick: te, "aria-label": F("Decrease"), children: /* @__PURE__ */ A(Cg, {}) }),
|
|
14047
14069
|
o === "in" ? /* @__PURE__ */ A(
|
|
14048
14070
|
"input",
|
|
14049
14071
|
{
|
|
14050
14072
|
type: "range",
|
|
14051
14073
|
className: "ps-bpm-slider",
|
|
14052
14074
|
min: X,
|
|
14053
|
-
max:
|
|
14075
|
+
max: rA,
|
|
14054
14076
|
step: 1,
|
|
14055
14077
|
value: K,
|
|
14056
14078
|
onChange: ($) => $A(parseInt($.target.value, 10)),
|
|
@@ -14066,7 +14088,7 @@ function oi({
|
|
|
14066
14088
|
step: 1,
|
|
14067
14089
|
value: z,
|
|
14068
14090
|
onChange: ($) => a($.target.value),
|
|
14069
|
-
style: { "--ps-pct": `${
|
|
14091
|
+
style: { "--ps-pct": `${yA}%` }
|
|
14070
14092
|
}
|
|
14071
14093
|
),
|
|
14072
14094
|
/* @__PURE__ */ A("button", { type: "button", className: "ps-bpm-step-btn", onClick: PA, "aria-label": F("Increase"), children: /* @__PURE__ */ A(dg, {}) })
|
|
@@ -14089,7 +14111,7 @@ function oi({
|
|
|
14089
14111
|
type: "range",
|
|
14090
14112
|
className: "ps-bpm-slider",
|
|
14091
14113
|
min: E,
|
|
14092
|
-
max:
|
|
14114
|
+
max: gA,
|
|
14093
14115
|
step: 1,
|
|
14094
14116
|
value: zA,
|
|
14095
14117
|
onChange: ($) => D($.target.value),
|
|
@@ -14103,7 +14125,7 @@ function oi({
|
|
|
14103
14125
|
/* @__PURE__ */ e("div", { className: "ps-bpm-row-top", children: [
|
|
14104
14126
|
/* @__PURE__ */ A("span", { className: "ps-bpm-label", children: F("AGE") }),
|
|
14105
14127
|
/* @__PURE__ */ e("span", { className: "ps-bpm-value-display", children: [
|
|
14106
|
-
Math.round(
|
|
14128
|
+
Math.round(MA),
|
|
14107
14129
|
" ",
|
|
14108
14130
|
F("YEARS")
|
|
14109
14131
|
] })
|
|
@@ -14116,9 +14138,9 @@ function oi({
|
|
|
14116
14138
|
type: "range",
|
|
14117
14139
|
className: "ps-bpm-slider",
|
|
14118
14140
|
min: uA,
|
|
14119
|
-
max:
|
|
14141
|
+
max: iA,
|
|
14120
14142
|
step: 1,
|
|
14121
|
-
value:
|
|
14143
|
+
value: MA,
|
|
14122
14144
|
onChange: ($) => u($.target.value),
|
|
14123
14145
|
style: { "--ps-pct": `${we}%` }
|
|
14124
14146
|
}
|
|
@@ -14612,20 +14634,20 @@ function li({
|
|
|
14612
14634
|
}) {
|
|
14613
14635
|
const b = t ? Bi : ai, [v, F] = Q("photo");
|
|
14614
14636
|
v === "photo" || b.indexOf(v);
|
|
14615
|
-
const z = Oo(), K = st(a), wA = W?.height, T = W?.weight, zA = W?.age,
|
|
14616
|
-
|
|
14637
|
+
const z = Oo(), K = st(a), wA = W?.height, T = W?.weight, zA = W?.age, MA = W?.heightUnit === "ft" ? "in" : W?.heightUnit, E = W?.weightUnit, gA = wA != null && MA === "cm" ? String(Math.round(wA)) : wA != null && (MA === "in" || MA === "ft") ? String(Math.round(wA * 2.54)) : r.current.height || "", O = wA != null && (MA === "in" || MA === "ft") ? Math.round(wA) : wA != null && MA === "cm" ? Math.round(wA / 2.54) : null, fA = O != null ? String(Math.floor(O / 12)) : r.current.heightFeet || "", X = O != null ? String(O % 12) : r.current.heightInches || "", rA = T != null ? String(Math.round(T)) : r.current.weight || "", uA = zA != null ? String(zA) : r.current.age || "", [iA, yA] = Q(gA), [RA, mA] = Q(fA), [we, $A] = Q(X), [PA, te] = Q(rA), [qA, fe] = Q(uA), [vA, ue] = Q(
|
|
14638
|
+
MA || (c === "ft" ? "in" : c || (K ? "in" : "cm"))
|
|
14617
14639
|
), [$, Pe] = Q(
|
|
14618
14640
|
E || w || (K ? "lbs" : "kg")
|
|
14619
|
-
), ve = vA === "in" || $ === "lbs", [Fe,
|
|
14620
|
-
|
|
14641
|
+
), ve = vA === "in" || $ === "lbs", [Fe, ne] = Q(null), [le, CA] = Q(null), [_A, TA] = Q(null), [y, GA] = Q(!1), [Ee, Ge] = Q(""), [NA, He] = Q(null), re = QA(null), [V, ae] = Q(null), [x, q] = Q(!1), [XA, S] = Q(!1), [pA, UA] = Q(() => O != null ? String(Math.round(O * 2.54)) : gA), [Be, Ae] = Q(null), [pe, LA] = Q(null), [Ce, FA] = Q(null), [lA, I] = Q(null), [kA, oA] = Q(""), [KA, me] = Q(null), [ZA, Me] = Q(null), [de, De] = Q(() => ["US", "UK", "AU"].includes(a) ? a === "AU" ? "UK" : a : ["FR", "ES"].includes(a) ? "FR" : ["IT"].includes(a) ? "IT" : ["JP", "CN", "KR"].includes(a) ? "JP" : "EU"), [JA, Qe] = Q(!1), [SA, P] = Q(null), H = QA(null);
|
|
14642
|
+
HA(() => {
|
|
14621
14643
|
if (!SA) return;
|
|
14622
14644
|
const U = (hA) => {
|
|
14623
|
-
const
|
|
14624
|
-
|
|
14645
|
+
const xA = H.current;
|
|
14646
|
+
xA && !xA.contains(hA.target) && P(null);
|
|
14625
14647
|
};
|
|
14626
14648
|
return document.addEventListener("mousedown", U), () => document.removeEventListener("mousedown", U);
|
|
14627
14649
|
}, [SA]);
|
|
14628
|
-
const N = eo[de] || eo.US, [J, _] = Q(""),
|
|
14650
|
+
const N = eo[de] || eo.US, [J, _] = Q(""), tA = IA(async (U) => {
|
|
14629
14651
|
const hA = U.target.files?.[0];
|
|
14630
14652
|
if (!hA) return;
|
|
14631
14653
|
if (V !== !0) {
|
|
@@ -14640,32 +14662,32 @@ function li({
|
|
|
14640
14662
|
_(i("Image must be under 10MB"));
|
|
14641
14663
|
return;
|
|
14642
14664
|
}
|
|
14643
|
-
_(""), GA(!0), Ge(i("Analyzing photo…")),
|
|
14644
|
-
const
|
|
14645
|
-
|
|
14665
|
+
_(""), GA(!0), Ge(i("Analyzing photo…")), ne(hA);
|
|
14666
|
+
const xA = URL.createObjectURL(hA);
|
|
14667
|
+
CA(xA);
|
|
14646
14668
|
try {
|
|
14647
14669
|
const Ie = d && u ? eg(hA, d, u) : Promise.resolve({ isAdult: !0, confidence: "low" }), _e = Do(hA, { maxDimension: 1024, quality: 0.85 }), Ue = await Ie;
|
|
14648
14670
|
if (!Ue.isAdult) {
|
|
14649
14671
|
const Ke = Ue.reasoning?.trim() || i("This photo appears to be of a minor. Please upload a photo of someone 18 or older.");
|
|
14650
|
-
He(Ke),
|
|
14672
|
+
He(Ke), CA(null), ne(null);
|
|
14651
14673
|
return;
|
|
14652
14674
|
}
|
|
14653
14675
|
const BA = await _e;
|
|
14654
14676
|
TA(BA), He(null);
|
|
14655
14677
|
} catch {
|
|
14656
|
-
_(i("Failed to process image")),
|
|
14678
|
+
_(i("Failed to process image")), CA(null);
|
|
14657
14679
|
} finally {
|
|
14658
14680
|
GA(!1), Ge("");
|
|
14659
14681
|
}
|
|
14660
14682
|
}, [i, V]), ee = IA(() => {
|
|
14661
|
-
le && URL.revokeObjectURL(le),
|
|
14683
|
+
le && URL.revokeObjectURL(le), ne(null), CA(null), TA(null), re.current && (re.current.value = "");
|
|
14662
14684
|
}, [le]), EA = IA(() => {
|
|
14663
14685
|
if (vA === "in") {
|
|
14664
14686
|
const hA = parseFloat(RA);
|
|
14665
14687
|
if (!hA || hA < 3 || hA > 8)
|
|
14666
14688
|
return _(i("Please enter a valid height")), !1;
|
|
14667
14689
|
} else {
|
|
14668
|
-
const hA = parseFloat(
|
|
14690
|
+
const hA = parseFloat(iA);
|
|
14669
14691
|
if (!hA || hA < 100 || hA > 250)
|
|
14670
14692
|
return _(i("Please enter a valid height (100-250 cm)")), !1;
|
|
14671
14693
|
}
|
|
@@ -14676,19 +14698,19 @@ function li({
|
|
|
14676
14698
|
} else if (!U || U < 30 || U > 300)
|
|
14677
14699
|
return _(i("Please enter a valid weight (30-300 kg)")), !1;
|
|
14678
14700
|
return _(""), !0;
|
|
14679
|
-
}, [vA, $,
|
|
14701
|
+
}, [vA, $, iA, RA, PA, i]), ce = () => {
|
|
14680
14702
|
let U;
|
|
14681
14703
|
if (vA === "in") {
|
|
14682
|
-
const hA = parseFloat(RA) || 0,
|
|
14683
|
-
U = hA * 12 +
|
|
14704
|
+
const hA = parseFloat(RA) || 0, xA = parseFloat(we) || 0;
|
|
14705
|
+
U = hA * 12 + xA;
|
|
14684
14706
|
} else
|
|
14685
|
-
U = parseFloat(
|
|
14707
|
+
U = parseFloat(iA);
|
|
14686
14708
|
return { heightVal: U, weightVal: parseFloat(PA) };
|
|
14687
|
-
}, he = t ? "female" : "male",
|
|
14709
|
+
}, he = t ? "female" : "male", YA = (U) => {
|
|
14688
14710
|
const hA = b.indexOf(U);
|
|
14689
14711
|
return hA < b.length - 1 ? b[hA + 1] : "submit";
|
|
14690
14712
|
}, f = () => {
|
|
14691
|
-
const { heightVal: U, weightVal: hA } =
|
|
14713
|
+
const { heightVal: U, weightVal: hA } = ce();
|
|
14692
14714
|
r.current.height = String(U), r.current.weight = String(hA), r.current.gender = he, qA && (r.current.age = qA), n(vA), s($), m({
|
|
14693
14715
|
height: U,
|
|
14694
14716
|
weight: hA,
|
|
@@ -14696,7 +14718,7 @@ function li({
|
|
|
14696
14718
|
weightUnit: $,
|
|
14697
14719
|
gender: he,
|
|
14698
14720
|
age: qA ? parseInt(qA, 10) : void 0,
|
|
14699
|
-
chestProfile:
|
|
14721
|
+
chestProfile: Be || void 0,
|
|
14700
14722
|
midsectionProfile: pe,
|
|
14701
14723
|
hipProfile: Ce,
|
|
14702
14724
|
bodyImage: _A || void 0,
|
|
@@ -14705,7 +14727,7 @@ function li({
|
|
|
14705
14727
|
});
|
|
14706
14728
|
}, j = IA(() => {
|
|
14707
14729
|
if (!_A || !Fe) return;
|
|
14708
|
-
const U = vA === "in" ? (parseFloat(RA) || 0) * 12 + (parseFloat(we) || 0) : parseFloat(
|
|
14730
|
+
const U = vA === "in" ? (parseFloat(RA) || 0) * 12 + (parseFloat(we) || 0) : parseFloat(iA) || 0, hA = parseFloat(PA) || 0, xA = parseFloat(qA) || void 0;
|
|
14709
14731
|
M({
|
|
14710
14732
|
photoFile: Fe,
|
|
14711
14733
|
photoBase64: _A,
|
|
@@ -14714,7 +14736,7 @@ function li({
|
|
|
14714
14736
|
heightUnit: vA,
|
|
14715
14737
|
weightUnit: $,
|
|
14716
14738
|
gender: he,
|
|
14717
|
-
...
|
|
14739
|
+
...xA ? { age: xA } : {},
|
|
14718
14740
|
...t && KA && ZA ? {
|
|
14719
14741
|
braSize: {
|
|
14720
14742
|
band: parseFloat(KA),
|
|
@@ -14723,23 +14745,23 @@ function li({
|
|
|
14723
14745
|
}
|
|
14724
14746
|
} : {}
|
|
14725
14747
|
});
|
|
14726
|
-
}, [_A, Fe, vA, $, RA, we,
|
|
14748
|
+
}, [_A, Fe, vA, $, RA, we, iA, PA, qA, he, t, KA, ZA, de, M]), dA = IA(() => {
|
|
14727
14749
|
if (v === "basics") {
|
|
14728
14750
|
if (!EA()) return;
|
|
14729
|
-
F(
|
|
14751
|
+
F(YA("basics"));
|
|
14730
14752
|
} else if (v === "chest") {
|
|
14731
|
-
if (!
|
|
14732
|
-
F(
|
|
14753
|
+
if (!Be) return;
|
|
14754
|
+
F(YA("chest"));
|
|
14733
14755
|
} else if (v === "midsection") {
|
|
14734
14756
|
if (!pe) return;
|
|
14735
|
-
F(
|
|
14757
|
+
F(YA("midsection"));
|
|
14736
14758
|
} else if (v === "seat") {
|
|
14737
14759
|
if (!lA) return;
|
|
14738
|
-
const U =
|
|
14760
|
+
const U = YA("seat");
|
|
14739
14761
|
U === "submit" ? f() : F(U);
|
|
14740
14762
|
} else if (v === "hips") {
|
|
14741
14763
|
if (!Ce) return;
|
|
14742
|
-
const U =
|
|
14764
|
+
const U = YA("hips");
|
|
14743
14765
|
U === "submit" ? f() : F(U);
|
|
14744
14766
|
} else if (v === "bra") {
|
|
14745
14767
|
if (!KA || !ZA) {
|
|
@@ -14766,7 +14788,7 @@ function li({
|
|
|
14766
14788
|
}
|
|
14767
14789
|
j();
|
|
14768
14790
|
} else if (v === "scan-details") {
|
|
14769
|
-
const U = vA === "in" ? parseFloat(RA) > 0 || parseFloat(we) > 0 : parseFloat(
|
|
14791
|
+
const U = vA === "in" ? parseFloat(RA) > 0 || parseFloat(we) > 0 : parseFloat(iA) > 0, hA = parseFloat(PA) > 0;
|
|
14770
14792
|
if (!U) {
|
|
14771
14793
|
_(i("Please enter your height"));
|
|
14772
14794
|
return;
|
|
@@ -14785,10 +14807,10 @@ function li({
|
|
|
14785
14807
|
}
|
|
14786
14808
|
_(""), j();
|
|
14787
14809
|
}
|
|
14788
|
-
}, [v, b, EA,
|
|
14810
|
+
}, [v, b, EA, Be, pe, Ce, lA, KA, ZA, vA, $, iA, RA, we, PA, qA, _A, Fe, V, z, t, he, L, Y, j]), bA = (U) => {
|
|
14789
14811
|
const hA = b.indexOf(U);
|
|
14790
14812
|
return hA > 0 ? b[hA - 1] : null;
|
|
14791
|
-
},
|
|
14813
|
+
}, oe = IA(() => {
|
|
14792
14814
|
if (_(""), v === "basics")
|
|
14793
14815
|
Z();
|
|
14794
14816
|
else if (v === "photo")
|
|
@@ -14796,24 +14818,24 @@ function li({
|
|
|
14796
14818
|
else if (v === "scan-details")
|
|
14797
14819
|
F("photo");
|
|
14798
14820
|
else {
|
|
14799
|
-
const U =
|
|
14821
|
+
const U = bA(v);
|
|
14800
14822
|
U ? F(U) : Z();
|
|
14801
14823
|
}
|
|
14802
|
-
}, [v, b, Z]), be = v === "basics" || v === "scan-details" ? !0 : v === "chest" ? !!
|
|
14824
|
+
}, [v, b, Z]), be = v === "basics" || v === "scan-details" ? !0 : v === "chest" ? !!Be : v === "midsection" ? !!pe : v === "seat" ? !!lA : v === "hips" ? !!Ce : v === "bra" ? !!(KA && ZA) : v === "photo", Le = v === b[b.length - 1], $e = () => {
|
|
14803
14825
|
if (vA === "in") {
|
|
14804
14826
|
const U = (parseFloat(RA) || 0) * 12 + (parseFloat(we) || 0);
|
|
14805
|
-
U > 0 &&
|
|
14827
|
+
U > 0 && yA(String(Math.round(U * 2.54)));
|
|
14806
14828
|
}
|
|
14807
|
-
$ === "lbs" && PA &&
|
|
14829
|
+
$ === "lbs" && PA && te(String(Math.round(parseFloat(PA) / 2.205))), ue("cm"), Pe("kg"), n("cm"), s("kg"), D?.("cm");
|
|
14808
14830
|
}, Oe = () => {
|
|
14809
14831
|
if (vA === "cm") {
|
|
14810
|
-
const U = parseFloat(
|
|
14832
|
+
const U = parseFloat(iA);
|
|
14811
14833
|
if (U > 0) {
|
|
14812
14834
|
const hA = Math.round(U / 2.54);
|
|
14813
14835
|
mA(String(Math.floor(hA / 12))), $A(String(hA % 12));
|
|
14814
14836
|
}
|
|
14815
14837
|
}
|
|
14816
|
-
$ === "kg" && PA &&
|
|
14838
|
+
$ === "kg" && PA && te(String(Math.round(parseFloat(PA) * 2.205))), ue("in"), Pe("lbs"), n("in"), s("lbs"), D?.("in");
|
|
14817
14839
|
};
|
|
14818
14840
|
if (v === "scan-details" && z)
|
|
14819
14841
|
return /* @__PURE__ */ e("div", { className: "ps-bp-wrapper", children: [
|
|
@@ -14857,14 +14879,14 @@ function li({
|
|
|
14857
14879
|
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "10", value: we, onChange: (U) => $A(U.target.value), min: 0, max: 11 }),
|
|
14858
14880
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "in" })
|
|
14859
14881
|
] }) : /* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
14860
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value:
|
|
14882
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value: iA, onChange: (U) => yA(U.target.value), min: 100, max: 250 }),
|
|
14861
14883
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "cm" })
|
|
14862
14884
|
] })
|
|
14863
14885
|
] }),
|
|
14864
14886
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
14865
14887
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: i("WEIGHT") }),
|
|
14866
14888
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
14867
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (U) =>
|
|
14889
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (U) => te(U.target.value), min: $ === "kg" ? 30 : 66, max: $ === "kg" ? 300 : 660 }),
|
|
14868
14890
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: $ })
|
|
14869
14891
|
] })
|
|
14870
14892
|
] }),
|
|
@@ -14922,7 +14944,7 @@ function li({
|
|
|
14922
14944
|
J && /* @__PURE__ */ A("p", { className: "ps-bpm-error", children: J })
|
|
14923
14945
|
] }),
|
|
14924
14946
|
/* @__PURE__ */ e("div", { className: "ps-bpm-bottom", children: [
|
|
14925
|
-
/* @__PURE__ */ A("button", { type: "button", className: "ps-bpm-next-btn", onClick:
|
|
14947
|
+
/* @__PURE__ */ A("button", { type: "button", className: "ps-bpm-next-btn", onClick: dA, children: i("Analyze My Size") }),
|
|
14926
14948
|
/* @__PURE__ */ A(
|
|
14927
14949
|
Qo,
|
|
14928
14950
|
{
|
|
@@ -14936,8 +14958,8 @@ function li({
|
|
|
14936
14958
|
] })
|
|
14937
14959
|
] });
|
|
14938
14960
|
if (v === "photo" || v === "scan-details") {
|
|
14939
|
-
const U = vA === "in" ? parseFloat(RA) > 0 || parseFloat(we) > 0 : parseFloat(
|
|
14940
|
-
y && Ie.push(i("Analyzing photo…")), !
|
|
14961
|
+
const U = vA === "in" ? parseFloat(RA) > 0 || parseFloat(we) > 0 : parseFloat(iA) > 0, hA = parseFloat(PA) > 0, xA = !!le, Ie = [];
|
|
14962
|
+
y && Ie.push(i("Analyzing photo…")), !xA && !y && Ie.push(i("Upload a photo")), U || Ie.push(i("Enter your height")), hA || Ie.push(i("Enter your weight")), t && (!KA || !ZA) && Ie.push(i("Enter your bra size"));
|
|
14941
14963
|
const _e = Ie.length > 0, Ue = _e ? Ie[0] ?? i("Analyze My Size") : i("Analyze My Size");
|
|
14942
14964
|
return z ? /* @__PURE__ */ e("div", { className: "ps-bp-wrapper", children: [
|
|
14943
14965
|
/* @__PURE__ */ e("div", { className: "ps-bp-scan-progress", children: [
|
|
@@ -14972,16 +14994,16 @@ function li({
|
|
|
14972
14994
|
It,
|
|
14973
14995
|
{
|
|
14974
14996
|
photoPreview: le,
|
|
14975
|
-
handlePhotoSelect:
|
|
14997
|
+
handlePhotoSelect: tA,
|
|
14976
14998
|
handleRemovePhoto: ee,
|
|
14977
|
-
onAnalyze:
|
|
14999
|
+
onAnalyze: dA,
|
|
14978
15000
|
onSwitchToManual: () => F("basics"),
|
|
14979
15001
|
error: J,
|
|
14980
15002
|
photoStepHeight: pA,
|
|
14981
15003
|
onPhotoStepHeightChange: UA,
|
|
14982
15004
|
ageConfirmed: V,
|
|
14983
15005
|
onAgeConfirmedChange: (BA) => {
|
|
14984
|
-
|
|
15006
|
+
ae(BA), BA === !0 && _("");
|
|
14985
15007
|
},
|
|
14986
15008
|
primaryLabel: i("Continue"),
|
|
14987
15009
|
compactAgeGate: !0,
|
|
@@ -15055,7 +15077,7 @@ function li({
|
|
|
15055
15077
|
"div",
|
|
15056
15078
|
{
|
|
15057
15079
|
onClick: () => {
|
|
15058
|
-
!le && V === !0 &&
|
|
15080
|
+
!le && V === !0 && re.current?.click();
|
|
15059
15081
|
},
|
|
15060
15082
|
onMouseEnter: () => {
|
|
15061
15083
|
!le && V === !0 && S(!0);
|
|
@@ -15073,9 +15095,9 @@ function li({
|
|
|
15073
15095
|
onDrop: (BA) => {
|
|
15074
15096
|
if (BA.preventDefault(), BA.stopPropagation(), le || V !== !0) return;
|
|
15075
15097
|
const Ke = BA.dataTransfer?.files?.[0];
|
|
15076
|
-
if (!Ke || !
|
|
15098
|
+
if (!Ke || !re.current) return;
|
|
15077
15099
|
const zo = new DataTransfer();
|
|
15078
|
-
zo.items.add(Ke),
|
|
15100
|
+
zo.items.add(Ke), re.current.files = zo.files, re.current.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
15079
15101
|
},
|
|
15080
15102
|
style: {
|
|
15081
15103
|
flex: 1,
|
|
@@ -15148,7 +15170,7 @@ function li({
|
|
|
15148
15170
|
{
|
|
15149
15171
|
type: "button",
|
|
15150
15172
|
onClick: (BA) => {
|
|
15151
|
-
BA.stopPropagation(), He(null),
|
|
15173
|
+
BA.stopPropagation(), He(null), re.current?.click();
|
|
15152
15174
|
},
|
|
15153
15175
|
style: {
|
|
15154
15176
|
padding: "0.35vw 0.8vw",
|
|
@@ -15193,7 +15215,7 @@ function li({
|
|
|
15193
15215
|
{
|
|
15194
15216
|
type: "button",
|
|
15195
15217
|
onClick: (BA) => {
|
|
15196
|
-
BA.stopPropagation(),
|
|
15218
|
+
BA.stopPropagation(), ae(!0), _("");
|
|
15197
15219
|
},
|
|
15198
15220
|
style: {
|
|
15199
15221
|
padding: "0.4vw 1vw",
|
|
@@ -15214,7 +15236,7 @@ function li({
|
|
|
15214
15236
|
{
|
|
15215
15237
|
type: "button",
|
|
15216
15238
|
onClick: (BA) => {
|
|
15217
|
-
BA.stopPropagation(),
|
|
15239
|
+
BA.stopPropagation(), ae(!1);
|
|
15218
15240
|
},
|
|
15219
15241
|
style: {
|
|
15220
15242
|
padding: "0.4vw 1vw",
|
|
@@ -15257,7 +15279,7 @@ function li({
|
|
|
15257
15279
|
{
|
|
15258
15280
|
type: "button",
|
|
15259
15281
|
onClick: (BA) => {
|
|
15260
|
-
BA.stopPropagation(),
|
|
15282
|
+
BA.stopPropagation(), ae(null);
|
|
15261
15283
|
},
|
|
15262
15284
|
style: {
|
|
15263
15285
|
padding: "0.4vw 1vw",
|
|
@@ -15376,14 +15398,14 @@ function li({
|
|
|
15376
15398
|
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "10", value: we, onChange: (BA) => $A(BA.target.value), min: 0, max: 11 }),
|
|
15377
15399
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "in" })
|
|
15378
15400
|
] }) : /* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15379
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value:
|
|
15401
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value: iA, onChange: (BA) => yA(BA.target.value), min: 100, max: 250 }),
|
|
15380
15402
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "cm" })
|
|
15381
15403
|
] })
|
|
15382
15404
|
] }),
|
|
15383
15405
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
15384
15406
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: i("WEIGHT") }),
|
|
15385
15407
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15386
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (BA) =>
|
|
15408
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (BA) => te(BA.target.value), min: $ === "kg" ? 30 : 66, max: $ === "kg" ? 300 : 660 }),
|
|
15387
15409
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: $ })
|
|
15388
15410
|
] })
|
|
15389
15411
|
] }),
|
|
@@ -15521,7 +15543,7 @@ function li({
|
|
|
15521
15543
|
] })
|
|
15522
15544
|
] })
|
|
15523
15545
|
] }),
|
|
15524
|
-
/* @__PURE__ */ A("input", { ref:
|
|
15546
|
+
/* @__PURE__ */ A("input", { ref: re, type: "file", accept: "image/*", onChange: tA, style: { display: "none" } }),
|
|
15525
15547
|
z ? /* @__PURE__ */ e(eA, { children: [
|
|
15526
15548
|
/* @__PURE__ */ A("div", { className: "ps-bpm-spacer" }),
|
|
15527
15549
|
/* @__PURE__ */ e("div", { className: "ps-bpm-bottom", children: [
|
|
@@ -15530,7 +15552,7 @@ function li({
|
|
|
15530
15552
|
{
|
|
15531
15553
|
type: "button",
|
|
15532
15554
|
className: "ps-bpm-next-btn",
|
|
15533
|
-
onClick:
|
|
15555
|
+
onClick: dA,
|
|
15534
15556
|
disabled: !le,
|
|
15535
15557
|
children: i("Analyze My Size")
|
|
15536
15558
|
}
|
|
@@ -15561,7 +15583,7 @@ function li({
|
|
|
15561
15583
|
)
|
|
15562
15584
|
] }),
|
|
15563
15585
|
/* @__PURE__ */ e("div", { className: "ps-bp-nav", children: [
|
|
15564
|
-
/* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick:
|
|
15586
|
+
/* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick: oe, type: "button", children: [
|
|
15565
15587
|
/* @__PURE__ */ A("span", { className: "ps-bp-back-arrow", children: "←" }),
|
|
15566
15588
|
" ",
|
|
15567
15589
|
i("Back")
|
|
@@ -15570,7 +15592,7 @@ function li({
|
|
|
15570
15592
|
"button",
|
|
15571
15593
|
{
|
|
15572
15594
|
className: `ps-bp-next-btn${_e ? " ps-bp-btn-disabled" : ""}`,
|
|
15573
|
-
onClick:
|
|
15595
|
+
onClick: dA,
|
|
15574
15596
|
disabled: _e,
|
|
15575
15597
|
type: "button",
|
|
15576
15598
|
title: _e ? Ie.join(" · ") : void 0,
|
|
@@ -15586,10 +15608,10 @@ function li({
|
|
|
15586
15608
|
/* @__PURE__ */ A(
|
|
15587
15609
|
"input",
|
|
15588
15610
|
{
|
|
15589
|
-
ref:
|
|
15611
|
+
ref: re,
|
|
15590
15612
|
type: "file",
|
|
15591
15613
|
accept: "image/*",
|
|
15592
|
-
onChange:
|
|
15614
|
+
onChange: tA,
|
|
15593
15615
|
style: { display: "none" }
|
|
15594
15616
|
}
|
|
15595
15617
|
),
|
|
@@ -15597,16 +15619,16 @@ function li({
|
|
|
15597
15619
|
v === "basics" && (() => {
|
|
15598
15620
|
const U = () => {
|
|
15599
15621
|
if (vA === "in") {
|
|
15600
|
-
const
|
|
15601
|
-
|
|
15622
|
+
const xA = (parseFloat(RA) || 5) * 12 + (parseFloat(we) || 8);
|
|
15623
|
+
yA(String(Math.round(xA * 2.54)));
|
|
15602
15624
|
}
|
|
15603
|
-
$ === "lbs" && PA &&
|
|
15625
|
+
$ === "lbs" && PA && te(String(Math.round(parseFloat(PA) / 2.205))), ue("cm"), Pe("kg"), n("cm"), s("kg"), D?.("cm");
|
|
15604
15626
|
}, hA = () => {
|
|
15605
15627
|
if (vA === "cm") {
|
|
15606
|
-
const
|
|
15628
|
+
const xA = parseFloat(iA) || 173, Ie = Math.round(xA / 2.54);
|
|
15607
15629
|
mA(String(Math.floor(Ie / 12))), $A(String(Ie % 12));
|
|
15608
15630
|
}
|
|
15609
|
-
$ === "kg" && PA &&
|
|
15631
|
+
$ === "kg" && PA && te(String(Math.round(parseFloat(PA) * 2.205))), ue("in"), Pe("lbs"), n("in"), s("lbs"), D?.("in");
|
|
15610
15632
|
};
|
|
15611
15633
|
return z ? /* @__PURE__ */ A(
|
|
15612
15634
|
oi,
|
|
@@ -15614,14 +15636,14 @@ function li({
|
|
|
15614
15636
|
hUnit: vA,
|
|
15615
15637
|
wUnit: $,
|
|
15616
15638
|
isImperialMode: ve,
|
|
15617
|
-
height:
|
|
15618
|
-
setHeight:
|
|
15639
|
+
height: iA,
|
|
15640
|
+
setHeight: yA,
|
|
15619
15641
|
heightFeet: RA,
|
|
15620
15642
|
setHeightFeet: mA,
|
|
15621
15643
|
heightInches: we,
|
|
15622
15644
|
setHeightInches: $A,
|
|
15623
15645
|
weight: PA,
|
|
15624
|
-
setWeight:
|
|
15646
|
+
setWeight: te,
|
|
15625
15647
|
age: qA,
|
|
15626
15648
|
setAge: fe,
|
|
15627
15649
|
switchToMetric: U,
|
|
@@ -15629,7 +15651,7 @@ function li({
|
|
|
15629
15651
|
onUploadPhoto: () => F("photo"),
|
|
15630
15652
|
onSwitchToScan: () => F("photo"),
|
|
15631
15653
|
hidePhotoOptions: L,
|
|
15632
|
-
onNext: L && Y ? Y :
|
|
15654
|
+
onNext: L && Y ? Y : dA,
|
|
15633
15655
|
canProceed: !0,
|
|
15634
15656
|
fastPathLabel: L ? i("Find My Best Fit") + (Xe(vA) ? ` (${Xe(vA)})` : "") : void 0,
|
|
15635
15657
|
activeProfileName: L ? h : null,
|
|
@@ -15657,26 +15679,26 @@ function li({
|
|
|
15657
15679
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
15658
15680
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: i("HEIGHT") }),
|
|
15659
15681
|
vA === "in" ? /* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15660
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "5", value: RA, onChange: (
|
|
15682
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "5", value: RA, onChange: (xA) => mA(xA.target.value), min: 3, max: 8 }),
|
|
15661
15683
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "ft" }),
|
|
15662
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "10", value: we, onChange: (
|
|
15684
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "10", value: we, onChange: (xA) => $A(xA.target.value), min: 0, max: 11 }),
|
|
15663
15685
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "in" })
|
|
15664
15686
|
] }) : /* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15665
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value:
|
|
15687
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "173", value: iA, onChange: (xA) => yA(xA.target.value), min: 100, max: 250 }),
|
|
15666
15688
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: "cm" })
|
|
15667
15689
|
] })
|
|
15668
15690
|
] }),
|
|
15669
15691
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
15670
15692
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: i("WEIGHT") }),
|
|
15671
15693
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15672
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (
|
|
15694
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: $ === "kg" ? "75" : "165", value: PA, onChange: (xA) => te(xA.target.value), min: $ === "kg" ? 30 : 66, max: $ === "kg" ? 300 : 660 }),
|
|
15673
15695
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: $ })
|
|
15674
15696
|
] })
|
|
15675
15697
|
] }),
|
|
15676
15698
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-row", children: [
|
|
15677
15699
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-label", children: i("AGE") }),
|
|
15678
15700
|
/* @__PURE__ */ e("div", { className: "ps-bp-inline-input-group", children: [
|
|
15679
|
-
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "30", value: qA, onChange: (
|
|
15701
|
+
/* @__PURE__ */ A("input", { type: "number", className: "ps-bp-inline-input", placeholder: "30", value: qA, onChange: (xA) => fe(xA.target.value), min: 13, max: 100 }),
|
|
15680
15702
|
/* @__PURE__ */ A("span", { className: "ps-bp-inline-unit", children: i("years") })
|
|
15681
15703
|
] })
|
|
15682
15704
|
] })
|
|
@@ -15708,7 +15730,7 @@ function li({
|
|
|
15708
15730
|
{ value: "average", label: i("Average"), img: jA.male.chest.average },
|
|
15709
15731
|
{ value: "broad", label: i("Broad"), img: jA.male.chest.broad }
|
|
15710
15732
|
],
|
|
15711
|
-
selected:
|
|
15733
|
+
selected: Be,
|
|
15712
15734
|
onSelect: (U) => Ae(U),
|
|
15713
15735
|
t: i
|
|
15714
15736
|
},
|
|
@@ -15716,11 +15738,11 @@ function li({
|
|
|
15716
15738
|
) : /* @__PURE__ */ e("div", { className: "ps-bp-step ps-bp-step-enter ps-bp-single-q", children: [
|
|
15717
15739
|
/* @__PURE__ */ A("h2", { className: "ps-bp-title", children: i("Which best describes your chest?") }),
|
|
15718
15740
|
/* @__PURE__ */ e("div", { className: "ps-bp-shape-row ps-bp-shape-row-full", children: [
|
|
15719
|
-
/* @__PURE__ */ A(ye, { img: jA.male.chest.narrow, label: i("Narrow"), selected:
|
|
15720
|
-
/* @__PURE__ */ A(ye, { img: jA.male.chest.average, label: i("Average"), selected:
|
|
15721
|
-
/* @__PURE__ */ A(ye, { img: jA.male.chest.broad, label: i("Broad"), selected:
|
|
15741
|
+
/* @__PURE__ */ A(ye, { img: jA.male.chest.narrow, label: i("Narrow"), selected: Be === "narrow", onSelect: () => Ae("narrow"), onHover: () => oA(i("A slimmer, narrower chest build")), onLeave: () => oA("") }),
|
|
15742
|
+
/* @__PURE__ */ A(ye, { img: jA.male.chest.average, label: i("Average"), selected: Be === "average", onSelect: () => Ae("average"), onHover: () => oA(i("A moderate, proportionate chest")), onLeave: () => oA("") }),
|
|
15743
|
+
/* @__PURE__ */ A(ye, { img: jA.male.chest.broad, label: i("Broad"), selected: Be === "broad", onSelect: () => Ae("broad"), onHover: () => oA(i("A wider, more muscular chest")), onLeave: () => oA("") })
|
|
15722
15744
|
] }),
|
|
15723
|
-
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children:
|
|
15745
|
+
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children: kA || " " })
|
|
15724
15746
|
] }, "step-chest")),
|
|
15725
15747
|
v === "midsection" && (z ? /* @__PURE__ */ A(
|
|
15726
15748
|
$o,
|
|
@@ -15753,7 +15775,7 @@ function li({
|
|
|
15753
15775
|
/* @__PURE__ */ A(ye, { img: jA.male.stomach.average, label: i("Average"), selected: pe === "average", onSelect: () => LA("average"), onHover: () => oA(i("A moderate, natural midsection shape")), onLeave: () => oA("") }),
|
|
15754
15776
|
/* @__PURE__ */ A(ye, { img: jA.male.stomach.round, label: i("Full"), selected: pe === "round", onSelect: () => LA("round"), onHover: () => oA(i("A fuller, more rounded midsection")), onLeave: () => oA("") })
|
|
15755
15777
|
] }) }),
|
|
15756
|
-
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children:
|
|
15778
|
+
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children: kA || " " })
|
|
15757
15779
|
] }, "step-midsection")),
|
|
15758
15780
|
v === "seat" && (z ? /* @__PURE__ */ A(
|
|
15759
15781
|
$o,
|
|
@@ -15786,7 +15808,7 @@ function li({
|
|
|
15786
15808
|
/* @__PURE__ */ A(ye, { img: jA.male.seat.average, label: i("Average"), selected: lA === "average", onSelect: () => I("average"), onHover: () => oA(i("A moderate, natural backside shape")), onLeave: () => oA("") }),
|
|
15787
15809
|
/* @__PURE__ */ A(ye, { img: jA.male.seat.full, label: i("Full"), selected: lA === "full", onSelect: () => I("full"), onHover: () => oA(i("A fuller, more rounded backside")), onLeave: () => oA("") })
|
|
15788
15810
|
] }) }),
|
|
15789
|
-
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children:
|
|
15811
|
+
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children: kA || " " })
|
|
15790
15812
|
] }, "step-seat")),
|
|
15791
15813
|
v === "hips" && t && (z ? /* @__PURE__ */ A(
|
|
15792
15814
|
$o,
|
|
@@ -15800,18 +15822,18 @@ function li({
|
|
|
15800
15822
|
{ value: "full", label: i("Curvy"), img: jA.female.hips.full }
|
|
15801
15823
|
],
|
|
15802
15824
|
selected: Ce,
|
|
15803
|
-
onSelect: (U) =>
|
|
15825
|
+
onSelect: (U) => FA(U),
|
|
15804
15826
|
t: i
|
|
15805
15827
|
},
|
|
15806
15828
|
"step-hips-mobile"
|
|
15807
15829
|
) : /* @__PURE__ */ e("div", { className: "ps-bp-step ps-bp-step-enter ps-bp-single-q", children: [
|
|
15808
15830
|
/* @__PURE__ */ A("h2", { className: "ps-bp-title", children: i("Which best describes your hips?") }),
|
|
15809
15831
|
/* @__PURE__ */ e("div", { className: "ps-bp-shape-row ps-bp-shape-row-full", children: [
|
|
15810
|
-
/* @__PURE__ */ A(ye, { img: jA.female.hips.narrow, label: i("Narrow"), selected: Ce === "narrow", onSelect: () =>
|
|
15811
|
-
/* @__PURE__ */ A(ye, { img: jA.female.hips.average, label: i("Average"), selected: Ce === "average", onSelect: () =>
|
|
15812
|
-
/* @__PURE__ */ A(ye, { img: jA.female.hips.full, label: i("Curvy"), selected: Ce === "full", onSelect: () =>
|
|
15832
|
+
/* @__PURE__ */ A(ye, { img: jA.female.hips.narrow, label: i("Narrow"), selected: Ce === "narrow", onSelect: () => FA("narrow"), onHover: () => oA(i("Hips closer to shoulder width")), onLeave: () => oA("") }),
|
|
15833
|
+
/* @__PURE__ */ A(ye, { img: jA.female.hips.average, label: i("Average"), selected: Ce === "average", onSelect: () => FA("average"), onHover: () => oA(i("Hips proportionate to shoulders")), onLeave: () => oA("") }),
|
|
15834
|
+
/* @__PURE__ */ A(ye, { img: jA.female.hips.full, label: i("Curvy"), selected: Ce === "full", onSelect: () => FA("full"), onHover: () => oA(i("Hips wider than shoulders")), onLeave: () => oA("") })
|
|
15813
15835
|
] }),
|
|
15814
|
-
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children:
|
|
15836
|
+
/* @__PURE__ */ A("p", { className: "ps-bp-hover-hint", children: kA || " " })
|
|
15815
15837
|
] }, "step-hips")),
|
|
15816
15838
|
v === "bra" && t && /* @__PURE__ */ e("div", { className: "ps-bp-step ps-bp-step-enter ps-bp-bra-step", children: [
|
|
15817
15839
|
/* @__PURE__ */ A("h2", { className: "ps-bp-title", children: i("Select your bra size") }),
|
|
@@ -15887,9 +15909,9 @@ function li({
|
|
|
15887
15909
|
J && /* @__PURE__ */ A("p", { className: "ps-bp-error", children: J })
|
|
15888
15910
|
] }, "step-bra"),
|
|
15889
15911
|
!(z && v === "basics") && (() => {
|
|
15890
|
-
const U = v === "basics" && L && !!Y, hA = U ? Y :
|
|
15912
|
+
const U = v === "basics" && L && !!Y, hA = U ? Y : dA, xA = Xe(vA) ? ` (${Xe(vA)})` : "", Ie = U ? i("Find My Best Fit") + xA : Le ? i("Find My Size") + xA : i("Next");
|
|
15891
15913
|
return /* @__PURE__ */ e("div", { className: "ps-bp-nav", children: [
|
|
15892
|
-
v !== "basics" ? /* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick:
|
|
15914
|
+
v !== "basics" ? /* @__PURE__ */ e("button", { className: "ps-bp-back-btn", onClick: oe, type: "button", children: [
|
|
15893
15915
|
/* @__PURE__ */ A("span", { className: "ps-bp-back-arrow", children: "←" }),
|
|
15894
15916
|
" ",
|
|
15895
15917
|
i("Back")
|
|
@@ -15909,13 +15931,13 @@ function li({
|
|
|
15909
15931
|
] })
|
|
15910
15932
|
] }) });
|
|
15911
15933
|
}
|
|
15912
|
-
function
|
|
15934
|
+
function jg() {
|
|
15913
15935
|
return /* @__PURE__ */ e("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", width: "14", height: "14", children: [
|
|
15914
15936
|
/* @__PURE__ */ A("path", { d: "M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z" }),
|
|
15915
15937
|
/* @__PURE__ */ A("circle", { cx: "12", cy: "13", r: "4" })
|
|
15916
15938
|
] });
|
|
15917
15939
|
}
|
|
15918
|
-
function
|
|
15940
|
+
function bg({
|
|
15919
15941
|
title: o,
|
|
15920
15942
|
fields: g,
|
|
15921
15943
|
unitOptions: t,
|
|
@@ -15944,26 +15966,26 @@ function Pg({
|
|
|
15944
15966
|
}), z = t ?? [
|
|
15945
15967
|
{ label: C("Centimeters"), value: "cm" },
|
|
15946
15968
|
{ label: C("Inches"), value: "in" }
|
|
15947
|
-
], [K, wA] = Q(""), T = QA(null), [zA,
|
|
15969
|
+
], [K, wA] = Q(""), T = QA(null), [zA, MA] = Q(null), [E, gA] = Q(null), [O, fA] = Q(null), [X, rA] = Q(!1), [uA, iA] = Q(!1), [yA, RA] = Q(""), [mA, we] = Q(null), [$A, PA] = Q(null), [te, qA] = Q(!1), fe = IA(async (y) => {
|
|
15948
15970
|
const GA = y.target.files?.[0];
|
|
15949
15971
|
if (!GA) return;
|
|
15950
15972
|
const Ee = URL.createObjectURL(GA);
|
|
15951
|
-
|
|
15973
|
+
gA(GA), MA(Ee), iA(!0), RA("Analyzing photo…");
|
|
15952
15974
|
try {
|
|
15953
15975
|
const Ge = Y && h ? eg(GA, Y, h) : Promise.resolve({ isAdult: !0, confidence: "low" }), NA = Do(GA, W ? { maxDimension: 1536, quality: 0.85 } : {}), He = await Ge;
|
|
15954
15976
|
if (!He.isAdult) {
|
|
15955
15977
|
const V = He.reasoning?.trim() || C("This photo appears to be of a minor. Please upload a photo of someone 18 or older.");
|
|
15956
|
-
we(V),
|
|
15978
|
+
we(V), gA(null), MA(null);
|
|
15957
15979
|
return;
|
|
15958
15980
|
}
|
|
15959
|
-
const
|
|
15960
|
-
fA(
|
|
15981
|
+
const re = await NA;
|
|
15982
|
+
fA(re), we(null);
|
|
15961
15983
|
} catch {
|
|
15962
15984
|
} finally {
|
|
15963
|
-
|
|
15985
|
+
iA(!1), RA("");
|
|
15964
15986
|
}
|
|
15965
15987
|
}, [W, Y, h, C]), vA = IA(() => {
|
|
15966
|
-
zA && URL.revokeObjectURL(zA),
|
|
15988
|
+
zA && URL.revokeObjectURL(zA), gA(null), MA(null), fA(null);
|
|
15967
15989
|
}, [zA]), ue = (y, GA) => {
|
|
15968
15990
|
F((Ee) => ({ ...Ee, [y]: GA })), wA("");
|
|
15969
15991
|
}, $ = () => {
|
|
@@ -16054,7 +16076,7 @@ function Pg({
|
|
|
16054
16076
|
!a && /* @__PURE__ */ e(eA, { children: [
|
|
16055
16077
|
/* @__PURE__ */ A("div", { className: "ps-bpm-or", children: /* @__PURE__ */ A("span", { children: C("or") }) }),
|
|
16056
16078
|
/* @__PURE__ */ e("button", { type: "button", className: "ps-bpm-upload-link", onClick: () => b("photo"), children: [
|
|
16057
|
-
/* @__PURE__ */ A(
|
|
16079
|
+
/* @__PURE__ */ A(jg, {}),
|
|
16058
16080
|
/* @__PURE__ */ A("span", { children: C(W ? "Upload a close-up face photo or selfie" : "Upload a photo for AI sizing") }),
|
|
16059
16081
|
/* @__PURE__ */ A("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "14", height: "14", children: /* @__PURE__ */ A("polyline", { points: "9 18 15 12 9 6" }) })
|
|
16060
16082
|
] })
|
|
@@ -16078,7 +16100,7 @@ function Pg({
|
|
|
16078
16100
|
)
|
|
16079
16101
|
] })
|
|
16080
16102
|
] }) });
|
|
16081
|
-
const Fe = g.some((y) => (parseFloat(v[y.key] || "") || 0) > 0),
|
|
16103
|
+
const Fe = g.some((y) => (parseFloat(v[y.key] || "") || 0) > 0), ne = !!E && $A === !0 && !uA, CA = uA || !ne && !Fe, _A = uA ? C("Analyzing photo…") : ne ? C("Analyze") : `${C("Find My Size")}${Xe(s) ? ` (${Xe(s)})` : ""}`, TA = ne ? Pe : $;
|
|
16082
16104
|
return i !== "photo" || a ? /* @__PURE__ */ e("div", { className: "ps-bp-layout", children: [
|
|
16083
16105
|
/* @__PURE__ */ A("div", { className: "ps-bp-image", style: { position: "relative" }, children: /* @__PURE__ */ A("img", { src: c, alt: n, className: "ps-bp-image-img" }) }),
|
|
16084
16106
|
/* @__PURE__ */ A("div", { className: "ps-bp-root", children: /* @__PURE__ */ e("div", { className: "ps-bp-step ps-bp-step-enter", children: [
|
|
@@ -16114,7 +16136,7 @@ function Pg({
|
|
|
16114
16136
|
] }, y.key)) }),
|
|
16115
16137
|
K && /* @__PURE__ */ A("p", { className: "ps-bp-error", children: K }),
|
|
16116
16138
|
!a && /* @__PURE__ */ e("button", { className: "ps-bp-photo-cta", onClick: () => b("photo"), type: "button", children: [
|
|
16117
|
-
/* @__PURE__ */ A(
|
|
16139
|
+
/* @__PURE__ */ A(jg, {}),
|
|
16118
16140
|
/* @__PURE__ */ A("span", { children: C(W ? "Or upload a close-up face photo or selfie" : "Or upload a photo for AI sizing") }),
|
|
16119
16141
|
/* @__PURE__ */ A("span", { className: "ps-bp-photo-cta-arrow", children: "→" })
|
|
16120
16142
|
] }),
|
|
@@ -16142,9 +16164,9 @@ function Pg({
|
|
|
16142
16164
|
!zA && $A === !0 && T.current?.click();
|
|
16143
16165
|
},
|
|
16144
16166
|
onMouseEnter: () => {
|
|
16145
|
-
!zA && $A === !0 &&
|
|
16167
|
+
!zA && $A === !0 && rA(!0);
|
|
16146
16168
|
},
|
|
16147
|
-
onMouseLeave: () =>
|
|
16169
|
+
onMouseLeave: () => rA(!1),
|
|
16148
16170
|
style: {
|
|
16149
16171
|
flex: 1,
|
|
16150
16172
|
display: "flex",
|
|
@@ -16162,7 +16184,7 @@ function Pg({
|
|
|
16162
16184
|
children: [
|
|
16163
16185
|
uA && /* @__PURE__ */ e("div", { className: "ps-bp-photo-overlay", onClick: (y) => y.stopPropagation(), children: [
|
|
16164
16186
|
/* @__PURE__ */ A("div", { className: "ps-bp-photo-overlay-spinner", "aria-hidden": "true" }),
|
|
16165
|
-
/* @__PURE__ */ A("span", { className: "ps-bp-photo-overlay-label", children:
|
|
16187
|
+
/* @__PURE__ */ A("span", { className: "ps-bp-photo-overlay-label", children: yA || C("Analyzing photo…") })
|
|
16166
16188
|
] }),
|
|
16167
16189
|
zA ? /* @__PURE__ */ e(eA, { children: [
|
|
16168
16190
|
/* @__PURE__ */ A("img", { src: zA, alt: "preview", style: { width: "100%", height: "100%", objectFit: "contain" } }),
|
|
@@ -16404,8 +16426,8 @@ function Pg({
|
|
|
16404
16426
|
alignItems: "center",
|
|
16405
16427
|
gap: "0.35vw",
|
|
16406
16428
|
padding: "0.4vw 0.7vw",
|
|
16407
|
-
background:
|
|
16408
|
-
color:
|
|
16429
|
+
background: te ? "var(--ps-accent)" : "transparent",
|
|
16430
|
+
color: te ? "#FFFFFF" : "var(--ps-accent)",
|
|
16409
16431
|
border: "1.5px solid var(--ps-accent)",
|
|
16410
16432
|
borderRadius: "999px",
|
|
16411
16433
|
cursor: "pointer",
|
|
@@ -16427,8 +16449,8 @@ function Pg({
|
|
|
16427
16449
|
minWidth: "14px",
|
|
16428
16450
|
minHeight: "14px",
|
|
16429
16451
|
borderRadius: "50%",
|
|
16430
|
-
background:
|
|
16431
|
-
color:
|
|
16452
|
+
background: te ? "#FFFFFF" : "var(--ps-accent)",
|
|
16453
|
+
color: te ? "var(--ps-accent)" : "#FFFFFF",
|
|
16432
16454
|
fontSize: "0.65vw",
|
|
16433
16455
|
fontWeight: 700,
|
|
16434
16456
|
lineHeight: 1
|
|
@@ -16487,7 +16509,7 @@ function Pg({
|
|
|
16487
16509
|
] }),
|
|
16488
16510
|
/* @__PURE__ */ A("div", { style: { fontSize: "0.58vw", color: "var(--ps-text-secondary)", lineHeight: 1.55 }, children: C("Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.") })
|
|
16489
16511
|
] }),
|
|
16490
|
-
|
|
16512
|
+
te && /* @__PURE__ */ e(
|
|
16491
16513
|
"div",
|
|
16492
16514
|
{
|
|
16493
16515
|
role: "dialog",
|
|
@@ -16600,9 +16622,9 @@ function Pg({
|
|
|
16600
16622
|
/* @__PURE__ */ e(
|
|
16601
16623
|
"button",
|
|
16602
16624
|
{
|
|
16603
|
-
className: `ps-bp-next-btn${
|
|
16625
|
+
className: `ps-bp-next-btn${CA ? " ps-bp-btn-disabled" : ""}`,
|
|
16604
16626
|
onClick: TA,
|
|
16605
|
-
disabled:
|
|
16627
|
+
disabled: CA,
|
|
16606
16628
|
type: "button",
|
|
16607
16629
|
children: [
|
|
16608
16630
|
_A,
|
|
@@ -16651,7 +16673,7 @@ function Ci(o, g) {
|
|
|
16651
16673
|
function di(o) {
|
|
16652
16674
|
const { sizeGuide: g, t, ...r } = o, a = Ci(g, t);
|
|
16653
16675
|
return /* @__PURE__ */ A(
|
|
16654
|
-
|
|
16676
|
+
bg,
|
|
16655
16677
|
{
|
|
16656
16678
|
title: t("Shoe Size"),
|
|
16657
16679
|
fields: a,
|
|
@@ -16689,7 +16711,7 @@ function Qi(o, g) {
|
|
|
16689
16711
|
function fi(o) {
|
|
16690
16712
|
const { sizeGuide: g, t, ...r } = o, a = Qi(g, t);
|
|
16691
16713
|
return /* @__PURE__ */ A(
|
|
16692
|
-
|
|
16714
|
+
bg,
|
|
16693
16715
|
{
|
|
16694
16716
|
title: t("Headwear Measurements"),
|
|
16695
16717
|
fields: a,
|
|
@@ -16752,7 +16774,7 @@ function Ei(o, g) {
|
|
|
16752
16774
|
function Ii(o) {
|
|
16753
16775
|
const { sizeGuide: g, t, ...r } = o, a = Ei(g, t);
|
|
16754
16776
|
return /* @__PURE__ */ A(
|
|
16755
|
-
|
|
16777
|
+
bg,
|
|
16756
16778
|
{
|
|
16757
16779
|
title: t("Frame Measurements"),
|
|
16758
16780
|
fields: a,
|
|
@@ -16770,7 +16792,7 @@ if (typeof document < "u") {
|
|
|
16770
16792
|
g.id = o, g.textContent = Fn, document.head.appendChild(g);
|
|
16771
16793
|
}
|
|
16772
16794
|
}
|
|
16773
|
-
function
|
|
16795
|
+
function so(o) {
|
|
16774
16796
|
const g = o.toLowerCase();
|
|
16775
16797
|
return /\b(shoe|shoes|sneaker|sneakers|boot|boots|heel|heels|loafer|loafers|mule|mules|sandal|sandals|trainer|trainers|slipper|slippers|stiletto|stilettos|pump|pumps|oxford|derby|derbies|wedge|espadrille|clog)\b/.test(g) ? "foot" : /\b(hat|hats|cap|caps|beanie|beanies|bucket hat|fedora|snapback|baseball cap|trucker hat|beret|panama|headband|visor|bonnet)\b/.test(g) ? "head" : /\b(sunglass|sunglasses|eyewear|eyeglasses|glasses|spectacles|optical|goggles|frames|aviator|wayfarer|lens)\b/.test(g) ? "face" : "body";
|
|
16776
16798
|
}
|
|
@@ -16816,15 +16838,15 @@ function Pi({
|
|
|
16816
16838
|
sizeGuideData: F
|
|
16817
16839
|
}) {
|
|
16818
16840
|
const z = a || o, [K, wA] = Q(() => u || "");
|
|
16819
|
-
|
|
16841
|
+
HA(() => {
|
|
16820
16842
|
u !== void 0 && wA(u);
|
|
16821
16843
|
}, [u]);
|
|
16822
|
-
const T = xe(() => Jt(K || void 0), [K]), zA = w ?? T("Virtual Try-On"), [
|
|
16823
|
-
|
|
16844
|
+
const T = xe(() => Jt(K || void 0), [K]), zA = w ?? T("Virtual Try-On"), [MA, E] = Q(!1);
|
|
16845
|
+
HA(() => {
|
|
16824
16846
|
E(!0);
|
|
16825
16847
|
}, []);
|
|
16826
|
-
const [
|
|
16827
|
-
|
|
16848
|
+
const [gA, O] = Q("idle"), [fA, X] = Q(null), [rA, uA] = Q(null), [iA, yA] = Q(null), [RA, mA] = Q(null), [we, $A] = Q(!1), [PA, te] = Q(null), [qA, fe] = Q(null), [vA, ue] = Q({}), $ = QA({});
|
|
16849
|
+
HA(() => {
|
|
16828
16850
|
$.current = vA;
|
|
16829
16851
|
}, [vA]);
|
|
16830
16852
|
const Pe = QA(null), ve = QA(null), Fe = QA(null);
|
|
@@ -16834,41 +16856,41 @@ function Pi({
|
|
|
16834
16856
|
return p === null ? delete sA[B] : sA[B] = { ...p, sectionName: B }, $.current = sA, sA;
|
|
16835
16857
|
});
|
|
16836
16858
|
}, []);
|
|
16837
|
-
const [
|
|
16838
|
-
|
|
16839
|
-
|
|
16840
|
-
recommendedSize:
|
|
16859
|
+
const [ne, le] = Q(null), [CA, _A] = Q(null), [TA, y] = Q(!1), [GA, Ee] = Q(!1);
|
|
16860
|
+
HA(() => {
|
|
16861
|
+
CA?.recommendedSize && (console.log("[ps-sdk:reset] new sizingResult — clearing all section overrides", {
|
|
16862
|
+
recommendedSize: CA.recommendedSize
|
|
16841
16863
|
}), ue({}));
|
|
16842
|
-
}, [
|
|
16843
|
-
const [Ge, NA] = Q(!1), [He,
|
|
16844
|
-
|
|
16845
|
-
Pe.current =
|
|
16846
|
-
}, [
|
|
16864
|
+
}, [CA?.recommendedSize]);
|
|
16865
|
+
const [Ge, NA] = Q(!1), [He, re] = Q(!1), [V, ae] = Q(null), x = QA(!1);
|
|
16866
|
+
HA(() => {
|
|
16867
|
+
Pe.current = CA;
|
|
16868
|
+
}, [CA]), HA(() => {
|
|
16847
16869
|
ve.current = V;
|
|
16848
|
-
}, [V]),
|
|
16849
|
-
Fe.current =
|
|
16850
|
-
}, [
|
|
16851
|
-
const [q, XA] = Q(!1), S = QA(!1), [pA, UA] = Q(mn),
|
|
16852
|
-
|
|
16853
|
-
const B =
|
|
16870
|
+
}, [V]), HA(() => {
|
|
16871
|
+
Fe.current = iA;
|
|
16872
|
+
}, [iA]);
|
|
16873
|
+
const [q, XA] = Q(!1), S = QA(!1), [pA, UA] = Q(mn), Be = st(pA), [Ae, pe] = Q(Be ? "in" : "cm"), [LA, Ce] = Q(Be ? "in" : "cm"), [FA, lA] = Q(Be ? "lbs" : "kg");
|
|
16874
|
+
HA(() => {
|
|
16875
|
+
const B = so(r);
|
|
16854
16876
|
B === "foot" || B === "head" ? pe("cm") : B === "face" && pe("mm");
|
|
16855
16877
|
}, [r]);
|
|
16856
|
-
const I = QA({}), [
|
|
16878
|
+
const I = QA({}), [kA, oA] = Q("male"), [KA, me] = Q(0), [ZA, Me] = Q(null), [de, De] = Q(!1), [JA, Qe] = Q(() => Je("profiles", [])), [SA, P] = Q(() => Je("history", [])), [H, N] = Q(() => tt()), [J, _] = Q(() => /* @__PURE__ */ new Set()), [tA, ee] = Q(null), EA = IA((B) => {
|
|
16857
16879
|
N(B), En(B);
|
|
16858
|
-
}, []), [
|
|
16880
|
+
}, []), [ce, he] = Q(!1), [YA, f] = Q(null), [j, dA] = Q(null), bA = QA(null), oe = QA(() => !1), be = QA(() => {
|
|
16859
16881
|
}), Le = IA((B, p) => {
|
|
16860
|
-
|
|
16861
|
-
}, []), $e = QA(null), Oe = QA(null), U = QA(null), hA = QA(null),
|
|
16862
|
-
|
|
16882
|
+
oe.current = B, be.current = p;
|
|
16883
|
+
}, []), $e = QA(null), Oe = QA(null), U = QA(null), hA = QA(null), xA = QA(null), Ie = QA(!1), _e = QA(null), Ue = QA(null), [BA, Ke] = Q(null), [zo, No] = Q(null), We = QA(null), Uo = QA(null), Jo = QA(!1), fo = QA(null);
|
|
16884
|
+
HA(() => {
|
|
16863
16885
|
try {
|
|
16864
16886
|
const B = Re(), p = je(s);
|
|
16865
16887
|
Oe.current = new Kt(B, p), U.current = new St(Oe.current.getStreamUrl());
|
|
16866
16888
|
} catch {
|
|
16867
16889
|
}
|
|
16868
16890
|
return () => {
|
|
16869
|
-
hA.current?.(), U.current?.disconnect(),
|
|
16891
|
+
hA.current?.(), U.current?.disconnect(), xA.current && clearInterval(xA.current);
|
|
16870
16892
|
};
|
|
16871
|
-
}, [s]),
|
|
16893
|
+
}, [s]), HA(() => {
|
|
16872
16894
|
if (fo.current = null, t) {
|
|
16873
16895
|
fo.current = t;
|
|
16874
16896
|
return;
|
|
@@ -16885,10 +16907,10 @@ function Pi({
|
|
|
16885
16907
|
}).catch(() => {
|
|
16886
16908
|
}), () => p.abort();
|
|
16887
16909
|
}, [g, t, s, r]);
|
|
16888
|
-
const og = 22, Ko = QA(0), ho = QA(null), vo = QA(null), Eo = QA(null), Io = QA(null), uo = QA(null), gg = QA(null), tg = QA(""),
|
|
16889
|
-
|
|
16890
|
-
if (
|
|
16891
|
-
if (
|
|
16910
|
+
const og = 22, Ko = QA(0), ho = QA(null), vo = QA(null), Eo = QA(null), Io = QA(null), uo = QA(null), gg = QA(null), tg = QA(""), to = QA(null);
|
|
16911
|
+
HA(() => {
|
|
16912
|
+
if (gA === "processing") {
|
|
16913
|
+
if (to.current) return;
|
|
16892
16914
|
Ko.current = 0, gg.current = Date.now(), tg.current = "";
|
|
16893
16915
|
const B = [
|
|
16894
16916
|
{ at: 0, text: T("Preparing your image...") },
|
|
@@ -16898,13 +16920,13 @@ function Pi({
|
|
|
16898
16920
|
{ at: 75, text: T("Refining details...") },
|
|
16899
16921
|
{ at: 90, text: T("Almost there...") }
|
|
16900
16922
|
], p = 2 * Math.PI * 38;
|
|
16901
|
-
return
|
|
16923
|
+
return to.current = setInterval(() => {
|
|
16902
16924
|
if (Ie.current) return;
|
|
16903
|
-
const G = gg.current || Date.now(), sA = (Date.now() - G) / 1e3,
|
|
16904
|
-
Ko.current =
|
|
16905
|
-
const AA = Math.round(
|
|
16925
|
+
const G = gg.current || Date.now(), sA = (Date.now() - G) / 1e3, nA = Math.min(95, sA / og * 100);
|
|
16926
|
+
Ko.current = nA;
|
|
16927
|
+
const AA = Math.round(nA);
|
|
16906
16928
|
if (ho.current && (ho.current.style.width = `${AA}%`), vo.current && (vo.current.textContent = `${AA}%`), uo.current) {
|
|
16907
|
-
const k = p * (1 -
|
|
16929
|
+
const k = p * (1 - nA / 100);
|
|
16908
16930
|
uo.current.style.strokeDashoffset = String(k);
|
|
16909
16931
|
}
|
|
16910
16932
|
if (Io.current) {
|
|
@@ -16921,34 +16943,34 @@ function Pi({
|
|
|
16921
16943
|
}
|
|
16922
16944
|
}
|
|
16923
16945
|
}, 200), () => {
|
|
16924
|
-
clearInterval(
|
|
16946
|
+
clearInterval(to.current), to.current = null;
|
|
16925
16947
|
};
|
|
16926
16948
|
} else
|
|
16927
|
-
|
|
16928
|
-
}, [
|
|
16929
|
-
|
|
16930
|
-
}, [
|
|
16931
|
-
if (
|
|
16949
|
+
to.current && (clearInterval(to.current), to.current = null), gg.current = null;
|
|
16950
|
+
}, [gA, T]), HA(() => () => {
|
|
16951
|
+
rA && URL.revokeObjectURL(rA);
|
|
16952
|
+
}, [rA]), HA(() => {
|
|
16953
|
+
if (gA !== "idle") {
|
|
16932
16954
|
const B = window.scrollY, p = document.body.style.overflow, G = document.body.style.overscrollBehavior;
|
|
16933
16955
|
return document.body.style.overflow = "hidden", document.body.style.overscrollBehavior = "none", () => {
|
|
16934
16956
|
document.body.style.overflow = p, document.body.style.overscrollBehavior = G, window.scrollTo(0, B);
|
|
16935
16957
|
};
|
|
16936
16958
|
}
|
|
16937
|
-
}, [
|
|
16938
|
-
|
|
16939
|
-
}, [JA]),
|
|
16940
|
-
|
|
16941
|
-
}, [SA]),
|
|
16959
|
+
}, [gA]), HA(() => {
|
|
16960
|
+
ao("profiles", JA);
|
|
16961
|
+
}, [JA]), HA(() => {
|
|
16962
|
+
ao("history", SA);
|
|
16963
|
+
}, [SA]), HA(() => {
|
|
16942
16964
|
const B = () => Qe(Je("profiles", []));
|
|
16943
16965
|
return window.addEventListener(Go, B), () => window.removeEventListener(Go, B);
|
|
16944
|
-
}, []),
|
|
16966
|
+
}, []), HA(() => {
|
|
16945
16967
|
if (S.current) return;
|
|
16946
16968
|
if (S.current = !0, !F) {
|
|
16947
|
-
|
|
16969
|
+
ae({ found: !1 });
|
|
16948
16970
|
return;
|
|
16949
16971
|
}
|
|
16950
16972
|
if (!Oe.current) {
|
|
16951
|
-
|
|
16973
|
+
ae({ found: !1 });
|
|
16952
16974
|
return;
|
|
16953
16975
|
}
|
|
16954
16976
|
XA(!0);
|
|
@@ -16958,13 +16980,13 @@ function Pi({
|
|
|
16958
16980
|
headers: { "Content-Type": "application/json", Authorization: `Bearer ${p}` },
|
|
16959
16981
|
body: JSON.stringify({ product: { title: r, productId: z }, sizeGuideRaw: F })
|
|
16960
16982
|
}).then((G) => G.ok ? G.json() : null).then((G) => {
|
|
16961
|
-
|
|
16983
|
+
ae(G || { found: !1 });
|
|
16962
16984
|
}).catch(() => {
|
|
16963
|
-
|
|
16985
|
+
ae({ found: !1 });
|
|
16964
16986
|
}).finally(() => XA(!1));
|
|
16965
16987
|
}, [s, r, F]);
|
|
16966
16988
|
const ut = xe(() => {
|
|
16967
|
-
switch (
|
|
16989
|
+
switch (gA) {
|
|
16968
16990
|
case "welcome":
|
|
16969
16991
|
case "body-profile":
|
|
16970
16992
|
return 1;
|
|
@@ -16978,10 +17000,10 @@ function Pi({
|
|
|
16978
17000
|
default:
|
|
16979
17001
|
return 1;
|
|
16980
17002
|
}
|
|
16981
|
-
}, [
|
|
17003
|
+
}, [gA]), mo = IA(
|
|
16982
17004
|
(B, p, G) => {
|
|
16983
|
-
let sA = H,
|
|
16984
|
-
if (!
|
|
17005
|
+
let sA = H, nA = JA.find((AA) => AA.id === sA);
|
|
17006
|
+
if (!nA) {
|
|
16985
17007
|
const AA = {
|
|
16986
17008
|
id: Date.now().toString(36) + Math.random().toString(36).slice(2, 6),
|
|
16987
17009
|
name: (B.gender === "female", "My Profile"),
|
|
@@ -16999,7 +17021,7 @@ function Pi({
|
|
|
16999
17021
|
createdAt: Date.now(),
|
|
17000
17022
|
lastUsedAt: Date.now()
|
|
17001
17023
|
};
|
|
17002
|
-
Qe((k) => [AA, ...k]), EA(AA.id), sA = AA.id,
|
|
17024
|
+
Qe((k) => [AA, ...k]), EA(AA.id), sA = AA.id, nA = AA;
|
|
17003
17025
|
}
|
|
17004
17026
|
if (G?.skipBodyEstimate)
|
|
17005
17027
|
console.log("[ps-sdk:persist] skipping body estimates — face/head flow (no body context)");
|
|
@@ -17023,14 +17045,14 @@ function Pi({
|
|
|
17023
17045
|
}
|
|
17024
17046
|
},
|
|
17025
17047
|
[H, JA, s, o, r, z, EA]
|
|
17026
|
-
), ng = QA(null), [Po, rg] = Q(null),
|
|
17027
|
-
const p = B.height ?? B.heightCm ?? 0, G = B.weight ?? B.weightKg ?? 0, sA = !!B.measurements && Object.keys(B.measurements).length > 0,
|
|
17028
|
-
if (!sA &&
|
|
17048
|
+
), ng = QA(null), [Po, rg] = Q(null), xg = IA(async (B) => {
|
|
17049
|
+
const p = B.height ?? B.heightCm ?? 0, G = B.weight ?? B.weightKg ?? 0, sA = !!B.measurements && Object.keys(B.measurements).length > 0, nA = B.photoBase64;
|
|
17050
|
+
if (!sA && nA && p > 0 && ng.current) {
|
|
17029
17051
|
try {
|
|
17030
|
-
const k =
|
|
17052
|
+
const k = nA.startsWith("data:") ? nA : `data:image/jpeg;base64,${nA}`, R = await fetch(k).then((WA) => WA.blob()), aA = new File([R], "profile-photo.jpg", { type: R.type || "image/jpeg" });
|
|
17031
17053
|
await ng.current({
|
|
17032
17054
|
photoFile: aA,
|
|
17033
|
-
photoBase64:
|
|
17055
|
+
photoBase64: nA,
|
|
17034
17056
|
height: p,
|
|
17035
17057
|
weight: G,
|
|
17036
17058
|
heightUnit: B.heightUnit || "cm",
|
|
@@ -17049,7 +17071,7 @@ function Pi({
|
|
|
17049
17071
|
const k = AA.startsWith("data:") ? AA : `data:image/jpeg;base64,${AA}`;
|
|
17050
17072
|
fetch(k).then((R) => R.blob()).then((R) => {
|
|
17051
17073
|
const aA = new File([R], "profile-photo.jpg", { type: R.type || "image/jpeg" });
|
|
17052
|
-
X(aA), We.current = aA,
|
|
17074
|
+
X(aA), We.current = aA, rA && URL.revokeObjectURL(rA), uA(URL.createObjectURL(aA));
|
|
17053
17075
|
}).catch(() => {
|
|
17054
17076
|
});
|
|
17055
17077
|
} catch {
|
|
@@ -17066,30 +17088,30 @@ function Pi({
|
|
|
17066
17088
|
k?.raw && _A(k.raw), NA(!0);
|
|
17067
17089
|
}).catch(() => {
|
|
17068
17090
|
}).finally(() => y(!1));
|
|
17069
|
-
}, [z, r, o, F, s,
|
|
17070
|
-
const B = JA.find((
|
|
17091
|
+
}, [z, r, o, F, s, rA]), mt = IA(async () => {
|
|
17092
|
+
const B = JA.find((nA) => nA.id === H);
|
|
17071
17093
|
if (!B) return;
|
|
17072
17094
|
const p = B.height ?? B.heightCm ?? 0, G = B.weight ?? B.weightKg ?? 0;
|
|
17073
17095
|
p > 0 && G > 0 && rg(B);
|
|
17074
17096
|
}, [JA, H]), Pt = IA(() => {
|
|
17075
17097
|
if (!Po) return;
|
|
17076
17098
|
const B = Po;
|
|
17077
|
-
rg(null),
|
|
17078
|
-
}, [Po,
|
|
17099
|
+
rg(null), xg(B);
|
|
17100
|
+
}, [Po, xg]), bt = IA(() => {
|
|
17079
17101
|
rg(null), me((B) => B + 1), O("body-profile");
|
|
17080
17102
|
}, []), xt = QA(() => {
|
|
17081
17103
|
}), Ht = IA(() => {
|
|
17082
17104
|
console.log("[ps-sdk] handleOpen fired — opening modal"), O("body-profile"), C?.();
|
|
17083
|
-
}, [C]),
|
|
17084
|
-
O("idle"), X(null), f(null),
|
|
17085
|
-
}, [W,
|
|
17086
|
-
if (
|
|
17087
|
-
f(null),
|
|
17105
|
+
}, [C]), no = IA(() => {
|
|
17106
|
+
O("idle"), X(null), f(null), dA(null), rA && URL.revokeObjectURL(rA), uA(null), yA(null), mA(null), le(null), _A(null), y(!1), Me(null), De(!1), Ee(!1), he(!1), I.current = {}, oA("male"), ro.current = !1, hA.current?.(), hA.current = null, xA.current && (clearInterval(xA.current), xA.current = null), W?.();
|
|
17107
|
+
}, [W, rA]), Mt = IA(() => {
|
|
17108
|
+
if (YA) {
|
|
17109
|
+
f(null), bA.current && (O(bA.current), bA.current = null);
|
|
17088
17110
|
return;
|
|
17089
17111
|
}
|
|
17090
|
-
switch (
|
|
17112
|
+
switch (gA) {
|
|
17091
17113
|
case "body-profile":
|
|
17092
|
-
|
|
17114
|
+
no();
|
|
17093
17115
|
break;
|
|
17094
17116
|
case "estimation-review":
|
|
17095
17117
|
O("body-profile");
|
|
@@ -17111,17 +17133,17 @@ function Pi({
|
|
|
17111
17133
|
O("body-profile");
|
|
17112
17134
|
break;
|
|
17113
17135
|
case "profiles":
|
|
17114
|
-
if (
|
|
17136
|
+
if (oe.current()) {
|
|
17115
17137
|
be.current();
|
|
17116
17138
|
break;
|
|
17117
17139
|
}
|
|
17118
|
-
O(
|
|
17140
|
+
O(bA.current || "body-profile"), bA.current = null;
|
|
17119
17141
|
break;
|
|
17120
17142
|
default:
|
|
17121
|
-
|
|
17143
|
+
no();
|
|
17122
17144
|
break;
|
|
17123
17145
|
}
|
|
17124
|
-
}, [
|
|
17146
|
+
}, [gA, YA, qA, no]), yt = gA !== "idle" && gA !== "processing" && gA !== "result" && gA !== "welcome" && gA !== "body-profile" && gA !== "size-result", ig = IA((B) => {
|
|
17125
17147
|
if (!jt(B)) {
|
|
17126
17148
|
mA(T("Please upload a JPEG, PNG, or WebP image.")), O("error"), v?.({ message: "Invalid file type", code: "INVALID_FILE" });
|
|
17127
17149
|
return;
|
|
@@ -17136,42 +17158,42 @@ function Pi({
|
|
|
17136
17158
|
Ue.current = G;
|
|
17137
17159
|
}).catch(() => {
|
|
17138
17160
|
});
|
|
17139
|
-
}, [Z, v]),
|
|
17140
|
-
X(null),
|
|
17141
|
-
}, [
|
|
17142
|
-
|
|
17161
|
+
}, [Z, v]), Hg = IA(() => {
|
|
17162
|
+
X(null), rA && URL.revokeObjectURL(rA), uA(null);
|
|
17163
|
+
}, [rA]), co = IA(() => {
|
|
17164
|
+
xA.current && (clearInterval(xA.current), xA.current = null), hA.current?.(), hA.current = null;
|
|
17143
17165
|
}, []), sg = IA((B) => {
|
|
17144
17166
|
if (x.current) {
|
|
17145
|
-
(B.status === "completed" || B.status === "failed") && (Ie.current = !0, co(),
|
|
17167
|
+
(B.status === "completed" || B.status === "failed") && (Ie.current = !0, co(), re(!1), te(null));
|
|
17146
17168
|
return;
|
|
17147
17169
|
}
|
|
17148
17170
|
if (B.status === "completed" && B.imageUrl) {
|
|
17149
|
-
if (
|
|
17171
|
+
if (yA((p) => !p || p.startsWith("data:") || !B.imageUrl.startsWith("data:") ? B.imageUrl : p), !Ie.current) {
|
|
17150
17172
|
if (Ie.current = !0, Ko.current = 100, ho.current && (ho.current.style.width = "100%"), vo.current && (vo.current.textContent = "100%"), uo.current && (uo.current.style.strokeDashoffset = "0"), Io.current && (Io.current.textContent = T("Done")), Eo.current) {
|
|
17151
17173
|
const p = Eo.current;
|
|
17152
17174
|
p.style.opacity = "0", setTimeout(() => {
|
|
17153
17175
|
p.textContent = T("Complete!"), p.style.opacity = "1";
|
|
17154
17176
|
}, 180);
|
|
17155
17177
|
}
|
|
17156
|
-
co(),
|
|
17178
|
+
co(), re(!1), te(null), b?.({ jobId: B.galleryId, imageUrl: B.imageUrl });
|
|
17157
17179
|
}
|
|
17158
17180
|
} else if (B.status === "failed" && !Ie.current) {
|
|
17159
|
-
Ie.current = !0, co(),
|
|
17181
|
+
Ie.current = !0, co(), re(!1), te(null);
|
|
17160
17182
|
const p = B.error || T("Try-on generation failed");
|
|
17161
17183
|
mA(p), O("error"), v?.({ message: p });
|
|
17162
17184
|
}
|
|
17163
|
-
}, [b, v, co]), Ao = xe(() => V?.found && V.requiredFields && V.requiredFields.length > 0 ? V.requiredFields :
|
|
17185
|
+
}, [b, v, co]), Ao = xe(() => V?.found && V.requiredFields && V.requiredFields.length > 0 ? V.requiredFields : kA === "female" ? fn : hn, [V, kA]), bo = IA(async (B) => {
|
|
17164
17186
|
if (!Oe.current) return;
|
|
17165
|
-
const p = B ||
|
|
17166
|
-
if (
|
|
17187
|
+
const p = B || ne, G = je(s), sA = Re(), nA = so(r);
|
|
17188
|
+
if (nA === "face" || nA === "head") {
|
|
17167
17189
|
const k = I.current, R = (cA) => {
|
|
17168
17190
|
if (!cA) return;
|
|
17169
|
-
const
|
|
17170
|
-
return Number.isFinite(
|
|
17171
|
-
}, aA = k.sizingUnit || Ae || (
|
|
17191
|
+
const se = parseFloat(cA);
|
|
17192
|
+
return Number.isFinite(se) && se > 0 ? se : void 0;
|
|
17193
|
+
}, aA = k.sizingUnit || Ae || (nA === "head" ? "cm" : "mm"), WA = (cA) => {
|
|
17172
17194
|
if (cA != null)
|
|
17173
17195
|
return aA === "mm" ? cA : aA === "cm" ? cA * 10 : aA === "in" ? cA * 25.4 : cA;
|
|
17174
|
-
}, DA = {},
|
|
17196
|
+
}, DA = {}, ge = {
|
|
17175
17197
|
bridgeWidth: WA(R(k.bridgeWidth)),
|
|
17176
17198
|
templeLength: WA(R(k.templeLength) ?? R(k.armLength)),
|
|
17177
17199
|
lensWidth: WA(R(k.lensWidth)),
|
|
@@ -17182,14 +17204,14 @@ function Pi({
|
|
|
17182
17204
|
headCircumference: WA(R(k.headCircumference)),
|
|
17183
17205
|
headWidth: WA(R(k.headWidth))
|
|
17184
17206
|
};
|
|
17185
|
-
for (const [cA,
|
|
17207
|
+
for (const [cA, se] of Object.entries(ge)) typeof se == "number" && (DA[cA] = se);
|
|
17186
17208
|
const VA = {
|
|
17187
17209
|
product: { title: r, productId: a },
|
|
17188
17210
|
sizeGuide: V?.found ? V : { found: !1 },
|
|
17189
|
-
sizingUnit:
|
|
17190
|
-
category:
|
|
17211
|
+
sizingUnit: nA === "head" ? "cm" : "mm",
|
|
17212
|
+
category: nA,
|
|
17191
17213
|
...Object.keys(DA).length > 0 && { faceMeasurementsMm: DA, irisConfidence: 1 }
|
|
17192
|
-
},
|
|
17214
|
+
}, ie = new Promise((cA) => setTimeout(cA, 4500));
|
|
17193
17215
|
try {
|
|
17194
17216
|
const cA = await fetch(`${G}/api/v1/sizing/face-recommend`, {
|
|
17195
17217
|
method: "POST",
|
|
@@ -17197,14 +17219,14 @@ function Pi({
|
|
|
17197
17219
|
body: JSON.stringify(VA)
|
|
17198
17220
|
});
|
|
17199
17221
|
if (cA.ok) {
|
|
17200
|
-
const
|
|
17201
|
-
await
|
|
17222
|
+
const se = await cA.json();
|
|
17223
|
+
await ie, _A(se), b?.(se);
|
|
17202
17224
|
} else {
|
|
17203
|
-
const
|
|
17204
|
-
console.error("[PS-SDK] face-recommend failed:", cA.status,
|
|
17225
|
+
const se = await cA.text().catch(() => "");
|
|
17226
|
+
console.error("[PS-SDK] face-recommend failed:", cA.status, se), await ie, mA(T("Unable to get size recommendation. Please try again.")), O("error"), NA(!0);
|
|
17205
17227
|
}
|
|
17206
17228
|
} catch (cA) {
|
|
17207
|
-
console.error("[PS-SDK] face-recommend network error:", cA), await
|
|
17229
|
+
console.error("[PS-SDK] face-recommend network error:", cA), await ie, mA(T("Unable to connect to sizing service. Please try again.")), O("error"), NA(!0);
|
|
17208
17230
|
} finally {
|
|
17209
17231
|
y(!1);
|
|
17210
17232
|
}
|
|
@@ -17239,7 +17261,7 @@ function Pi({
|
|
|
17239
17261
|
height: k,
|
|
17240
17262
|
weight: R,
|
|
17241
17263
|
heightUnit: I.current.heightUnit || LA || "cm",
|
|
17242
|
-
weightUnit: I.current.weightUnit ||
|
|
17264
|
+
weightUnit: I.current.weightUnit || FA || "kg",
|
|
17243
17265
|
gender: I.current.gender || "male"
|
|
17244
17266
|
};
|
|
17245
17267
|
I.current.age && (aA.age = parseInt(I.current.age, 10)), I.current.bodyType && (aA.bodyType = I.current.bodyType), I.current.chestProfile && (aA.chestProfile = I.current.chestProfile), I.current.midsectionProfile && (aA.midsectionProfile = I.current.midsectionProfile), I.current.hipProfile && (aA.hipProfile = I.current.hipProfile), AA.quickEstimate = aA;
|
|
@@ -17260,7 +17282,7 @@ function Pi({
|
|
|
17260
17282
|
return;
|
|
17261
17283
|
}
|
|
17262
17284
|
_A(WA), b?.(WA);
|
|
17263
|
-
const DA = AA.measurements || {},
|
|
17285
|
+
const DA = AA.measurements || {}, ge = AA.quickEstimate || {}, VA = p === "exact" ? DA : ge;
|
|
17264
17286
|
mo(
|
|
17265
17287
|
{
|
|
17266
17288
|
gender: VA.gender || "male",
|
|
@@ -17284,29 +17306,29 @@ function Pi({
|
|
|
17284
17306
|
} finally {
|
|
17285
17307
|
y(!1);
|
|
17286
17308
|
}
|
|
17287
|
-
}, [s,
|
|
17309
|
+
}, [s, ne, pA, LA, FA, Ae, V, r, Ao, mo]), Ft = IA(async (B, p, G, sA, nA, AA, k, R, aA, WA, DA) => {
|
|
17288
17310
|
if (!Oe.current) {
|
|
17289
17311
|
const cA = T("SDK not configured. Please refresh and try again.");
|
|
17290
17312
|
console.warn("[ps-sdk] handleQuickEstimate BAILED — apiRef is null. API key not loaded."), mA(cA), O("error"), v?.({ message: cA, code: "SDK_NOT_CONFIGURED" });
|
|
17291
17313
|
return;
|
|
17292
17314
|
}
|
|
17293
17315
|
je(s), Re();
|
|
17294
|
-
const
|
|
17316
|
+
const ge = /* @__PURE__ */ new Set(["weight", "weightKg", "height", "heightCm"]), VA = /* @__PURE__ */ new Set();
|
|
17295
17317
|
if (V?.sections) {
|
|
17296
17318
|
for (const cA of Object.values(V.sections))
|
|
17297
17319
|
if (cA.requiredFields)
|
|
17298
|
-
for (const
|
|
17299
|
-
|
|
17320
|
+
for (const se of cA.requiredFields)
|
|
17321
|
+
se.required && se.unit === "cm" && !ge.has(se.key) && VA.add(se.key);
|
|
17300
17322
|
}
|
|
17301
17323
|
for (const cA of Ao)
|
|
17302
|
-
cA.required && cA.unit === "cm" && !
|
|
17303
|
-
const
|
|
17304
|
-
if (console.log("[PS-SDK] Quick estimate — dynamicFields:", Ao.map((cA) => `${cA.key}(${cA.unit},req=${cA.required})`)), console.log("[PS-SDK] Quick estimate — requiredFieldKeys:",
|
|
17305
|
-
console.warn("[PS-SDK] No body measurement fields found — skipping estimation review"),
|
|
17324
|
+
cA.required && cA.unit === "cm" && !ge.has(cA.key) && VA.add(cA.key);
|
|
17325
|
+
const ie = Array.from(VA);
|
|
17326
|
+
if (console.log("[PS-SDK] Quick estimate — dynamicFields:", Ao.map((cA) => `${cA.key}(${cA.unit},req=${cA.required})`)), console.log("[PS-SDK] Quick estimate — requiredFieldKeys:", ie), console.log("[PS-SDK] Quick estimate — profiles:", { chestProfile: R, midsectionProfile: aA, hipProfile: WA }), ie.length === 0) {
|
|
17327
|
+
console.warn("[PS-SDK] No body measurement fields found — skipping estimation review"), rA && URL.revokeObjectURL(rA), X(null), We.current = null, uA(null), Ke(null), No(null), le("quick"), y(!0), O("size-result"), bo("quick");
|
|
17306
17328
|
return;
|
|
17307
17329
|
}
|
|
17308
|
-
I.current.height = String(B), I.current.weight = String(p), I.current.heightUnit = G, I.current.weightUnit = sA, I.current.gender =
|
|
17309
|
-
}, [s, Ao, V, bo, Ae,
|
|
17330
|
+
I.current.height = String(B), I.current.weight = String(p), I.current.heightUnit = G, I.current.weightUnit = sA, I.current.gender = nA, AA && (I.current.age = String(AA)), k && (I.current.bodyType = k), R && (I.current.chestProfile = R), aA && (I.current.midsectionProfile = aA), WA && (I.current.hipProfile = WA), _A(null), yA(null), rA && URL.revokeObjectURL(rA), X(null), We.current = null, uA(null), Ke(null), No(null), le("quick"), y(!0), O("size-result"), bo("quick");
|
|
17331
|
+
}, [s, Ao, V, bo, Ae, FA, rA]), ag = IA(async (B) => {
|
|
17310
17332
|
if (console.log("[ps-sdk] handleSnapSubmit fired", {
|
|
17311
17333
|
hasApiRef: !!Oe.current,
|
|
17312
17334
|
hasSseRef: !!U.current,
|
|
@@ -17319,35 +17341,35 @@ function Pi({
|
|
|
17319
17341
|
const p = je(s), G = Re();
|
|
17320
17342
|
console.log("[ps-sdk] handleSnapSubmit calling backend", { baseUrl: p }), X(B.photoFile), We.current = B.photoFile;
|
|
17321
17343
|
const sA = B.photoFile ? URL.createObjectURL(B.photoFile) : B.photoBase64.startsWith("data:") ? B.photoBase64 : `data:image/jpeg;base64,${B.photoBase64}`;
|
|
17322
|
-
uA(sA), Ie.current = !1, Uo.current = null, x.current = !1,
|
|
17323
|
-
const
|
|
17324
|
-
if (
|
|
17344
|
+
uA(sA), Ie.current = !1, Uo.current = null, x.current = !1, re(!1), te(null), _A(null), yA(null), y(!0), NA(!1), O("size-result");
|
|
17345
|
+
const nA = so(r);
|
|
17346
|
+
if (nA === "face" || nA === "head") {
|
|
17325
17347
|
No(null);
|
|
17326
|
-
const DA = new Promise((
|
|
17348
|
+
const DA = new Promise((ge) => setTimeout(ge, 4500));
|
|
17327
17349
|
try {
|
|
17328
|
-
const
|
|
17329
|
-
if (!
|
|
17350
|
+
const ge = await cn(sA);
|
|
17351
|
+
if (!ge) {
|
|
17330
17352
|
console.warn("[ps-sdk] face detection returned no result — likely a full-body photo for a face/head product"), await DA;
|
|
17331
|
-
const cA = T(
|
|
17353
|
+
const cA = T(nA === "head" ? "We couldn't detect your head clearly. Please upload a close-up photo that shows your full head and ears." : "We couldn't detect your face clearly. Please upload a close-up selfie that shows both eyes.");
|
|
17332
17354
|
mA(cA), O("error"), v?.({ message: cA, code: "FACE_DETECTION_FAILED" }), y(!1);
|
|
17333
17355
|
return;
|
|
17334
17356
|
}
|
|
17335
|
-
|
|
17357
|
+
ge && No(ge.landmarks);
|
|
17336
17358
|
const VA = {
|
|
17337
17359
|
product: { title: r, productId: z },
|
|
17338
17360
|
sizeGuide: V ?? { found: !1 },
|
|
17339
|
-
sizingUnit:
|
|
17340
|
-
category:
|
|
17361
|
+
sizingUnit: nA === "head" ? "cm" : "mm",
|
|
17362
|
+
category: nA,
|
|
17341
17363
|
bodyImage: B.photoBase64
|
|
17342
17364
|
};
|
|
17343
|
-
|
|
17344
|
-
const
|
|
17365
|
+
ge && (VA.faceMeasurementsMm = ge.measurementsMm, VA.faceLandmarks = ge.landmarks, VA.irisConfidence = ge.irisConfidence);
|
|
17366
|
+
const ie = await fetch(`${p}/api/v1/sizing/face-recommend`, {
|
|
17345
17367
|
method: "POST",
|
|
17346
17368
|
headers: { "Content-Type": "application/json", Authorization: `Bearer ${G}` },
|
|
17347
17369
|
body: JSON.stringify(VA)
|
|
17348
17370
|
});
|
|
17349
|
-
if (
|
|
17350
|
-
const cA = await
|
|
17371
|
+
if (ie.ok) {
|
|
17372
|
+
const cA = await ie.json();
|
|
17351
17373
|
await DA, _A(cA), b?.(cA), mo(
|
|
17352
17374
|
{
|
|
17353
17375
|
gender: B.gender,
|
|
@@ -17363,8 +17385,8 @@ function Pi({
|
|
|
17363
17385
|
);
|
|
17364
17386
|
} else
|
|
17365
17387
|
await DA, NA(!0);
|
|
17366
|
-
} catch (
|
|
17367
|
-
console.error("[ps-sdk] face-recommend failed:",
|
|
17388
|
+
} catch (ge) {
|
|
17389
|
+
console.error("[ps-sdk] face-recommend failed:", ge), await DA, NA(!0);
|
|
17368
17390
|
}
|
|
17369
17391
|
y(!1);
|
|
17370
17392
|
return;
|
|
@@ -17418,26 +17440,26 @@ function Pi({
|
|
|
17418
17440
|
};
|
|
17419
17441
|
V?.found && (aA.sizeGuide = V);
|
|
17420
17442
|
{
|
|
17421
|
-
const DA = aA.bodyLandmarks,
|
|
17422
|
-
console.log(`[ps-sdk:debug] payload → bodyLandmarks=${!!DA}(${
|
|
17443
|
+
const DA = aA.bodyLandmarks, ge = DA ? Object.keys(DA).filter((VA) => VA !== "imageWidth" && VA !== "imageHeight" && DA[VA]).length : 0;
|
|
17444
|
+
console.log(`[ps-sdk:debug] payload → bodyLandmarks=${!!DA}(${ge} joints)`);
|
|
17423
17445
|
}
|
|
17424
17446
|
const WA = new Promise((DA) => setTimeout(DA, 6e3));
|
|
17425
17447
|
try {
|
|
17426
|
-
const DA = Date.now(),
|
|
17427
|
-
console.log(`[ps-sdk:T] ▶ POST /sizing/recommend payload=${Math.round(
|
|
17448
|
+
const DA = Date.now(), ge = JSON.stringify(aA).length;
|
|
17449
|
+
console.log(`[ps-sdk:T] ▶ POST /sizing/recommend payload=${Math.round(ge / 1024)}KB bodyImage=${!!aA.bodyImage} landmarks=${!!aA.bodyLandmarks}`);
|
|
17428
17450
|
const VA = await fetch(`${p}/api/v1/sizing/recommend`, {
|
|
17429
17451
|
method: "POST",
|
|
17430
17452
|
headers: { "Content-Type": "application/json", Authorization: `Bearer ${G}` },
|
|
17431
17453
|
body: JSON.stringify(aA)
|
|
17432
17454
|
});
|
|
17433
17455
|
if (console.log(`[ps-sdk:T] ◀ /sizing/recommend status=${VA.status} roundTrip=${Date.now() - DA}ms`), VA.ok) {
|
|
17434
|
-
const
|
|
17435
|
-
if (
|
|
17456
|
+
const ie = await VA.json();
|
|
17457
|
+
if (ie?.found === !1 && ie?.reasoning === "NO_SIZE_CHART") {
|
|
17436
17458
|
O("no-chart"), NA(!0), y(!1);
|
|
17437
17459
|
return;
|
|
17438
17460
|
}
|
|
17439
|
-
const cA = ui(
|
|
17440
|
-
|
|
17461
|
+
const cA = ui(ie);
|
|
17462
|
+
ie?.found === !1 || cA != null && cA < 50 ? (console.log(`[ps-sdk:gate] LOW FIT (match=${cA ?? "?"}%, found=${ie?.found}) — suppressing try-on`), x.current = !0, re(!1), te(null), _A({ ...ie, found: !1 }), b?.({ ...ie, found: !1 })) : (_A(ie), b?.(ie), mo(
|
|
17441
17463
|
{
|
|
17442
17464
|
gender: B.gender,
|
|
17443
17465
|
height: B.height,
|
|
@@ -17447,7 +17469,7 @@ function Pi({
|
|
|
17447
17469
|
age: B.age,
|
|
17448
17470
|
bodyImage: B.photoBase64
|
|
17449
17471
|
},
|
|
17450
|
-
|
|
17472
|
+
ie
|
|
17451
17473
|
));
|
|
17452
17474
|
} else
|
|
17453
17475
|
NA(!0);
|
|
@@ -17455,7 +17477,7 @@ function Pi({
|
|
|
17455
17477
|
NA(!0);
|
|
17456
17478
|
}
|
|
17457
17479
|
await WA, y(!1);
|
|
17458
|
-
}, [s, o, r, Ae,
|
|
17480
|
+
}, [s, o, r, Ae, FA, pA, V, Ao, mo]);
|
|
17459
17481
|
ng.current = ag;
|
|
17460
17482
|
const xo = IA(async (B) => {
|
|
17461
17483
|
const p = B || fA || We.current;
|
|
@@ -17464,27 +17486,27 @@ function Pi({
|
|
|
17464
17486
|
mA(AA), O("error"), v?.({ message: AA, code: "SDK_NOT_CONFIGURED" });
|
|
17465
17487
|
return;
|
|
17466
17488
|
}
|
|
17467
|
-
B && B !== fA && (X(B), We.current = B), Ie.current = !1,
|
|
17468
|
-
const G = mi(
|
|
17469
|
-
(B || !
|
|
17489
|
+
B && B !== fA && (X(B), We.current = B), Ie.current = !1, re(!0), te(Date.now());
|
|
17490
|
+
const G = mi(so(r)), sA = G === "apparel", nA = (B ? null : rA) || URL.createObjectURL(p);
|
|
17491
|
+
(B || !rA) && uA(nA), sA && (!Ue.current || !BA) && (Ue.current = null, Ke(null), _o(nA).then((AA) => {
|
|
17470
17492
|
Ue.current = AA;
|
|
17471
17493
|
}).catch(() => {
|
|
17472
|
-
}), Bo(
|
|
17494
|
+
}), Bo(nA).then((AA) => {
|
|
17473
17495
|
Ke(AA);
|
|
17474
17496
|
}).catch(() => {
|
|
17475
17497
|
}));
|
|
17476
17498
|
try {
|
|
17477
17499
|
const AA = await Do(p, sA ? { maxDimension: 1024, quality: 0.85 } : {}), k = $.current, R = Object.keys(k), aA = R.length > 0, WA = aA ? (() => {
|
|
17478
17500
|
const OA = /* @__PURE__ */ new Set(), ze = [];
|
|
17479
|
-
for (const
|
|
17480
|
-
const Ne = k[
|
|
17501
|
+
for (const io of R) {
|
|
17502
|
+
const Ne = k[io]?.matchDetails || [];
|
|
17481
17503
|
for (const lo of Ne) {
|
|
17482
17504
|
const So = lo.measurement.toLowerCase().trim();
|
|
17483
17505
|
OA.has(So) || (OA.add(So), ze.push(lo));
|
|
17484
17506
|
}
|
|
17485
17507
|
}
|
|
17486
17508
|
return ze;
|
|
17487
|
-
})() : null, DA = aA ? R.map((OA) => `${OA.replace(/\s*[—–-]\s*.*/g, "").trim()} ${k[OA].displayLabel}`).join(", ") : void 0,
|
|
17509
|
+
})() : null, DA = aA ? R.map((OA) => `${OA.replace(/\s*[—–-]\s*.*/g, "").trim()} ${k[OA].displayLabel}`).join(", ") : void 0, ge = aA ? {
|
|
17488
17510
|
selectedSize: DA ?? "",
|
|
17489
17511
|
displayLabel: DA ?? "",
|
|
17490
17512
|
matchDetails: WA ?? void 0
|
|
@@ -17498,39 +17520,39 @@ function Pi({
|
|
|
17498
17520
|
});
|
|
17499
17521
|
const VA = () => {
|
|
17500
17522
|
const OA = /* @__PURE__ */ new Set(), ze = [];
|
|
17501
|
-
console.log("[ps-sdk:flatten] sizingResult keys:", Object.keys(
|
|
17502
|
-
const
|
|
17523
|
+
console.log("[ps-sdk:flatten] sizingResult keys:", Object.keys(CA || {})), console.log("[ps-sdk:flatten] root matchDetails:", (CA?.matchDetails || []).map((Ne) => Ne.measurement)), console.log("[ps-sdk:flatten] sections:", CA?.sections ? Object.keys(CA.sections) : "none");
|
|
17524
|
+
const io = (Ne, lo, So) => {
|
|
17503
17525
|
if (Ne) {
|
|
17504
17526
|
console.log(`[ps-sdk:flatten] ${lo} →`, Ne.map((jo) => jo.measurement));
|
|
17505
17527
|
for (const jo of Ne) {
|
|
17506
|
-
const
|
|
17507
|
-
OA.has(
|
|
17528
|
+
const kg = jo.measurement.toLowerCase().replace(/\s*\(.*?\)\s*/g, "").trim();
|
|
17529
|
+
OA.has(kg) || (OA.add(kg), ze.push({ ...jo, section: So }));
|
|
17508
17530
|
}
|
|
17509
17531
|
}
|
|
17510
17532
|
};
|
|
17511
|
-
if (
|
|
17512
|
-
for (const [Ne, lo] of Object.entries(
|
|
17513
|
-
|
|
17533
|
+
if (io(CA?.matchDetails, "root", void 0), CA?.sections)
|
|
17534
|
+
for (const [Ne, lo] of Object.entries(CA.sections))
|
|
17535
|
+
io(lo?.matchDetails, `section:${Ne}`, Ne);
|
|
17514
17536
|
return console.log("[ps-sdk:flatten] final unique:", ze.map((Ne) => Ne.measurement)), ze;
|
|
17515
|
-
},
|
|
17537
|
+
}, ie = ge?.matchDetails && ge.matchDetails.length ? ge.matchDetails : VA();
|
|
17516
17538
|
let cA;
|
|
17517
|
-
if (sA &&
|
|
17518
|
-
const OA = (
|
|
17519
|
-
cA = Dn(
|
|
17539
|
+
if (sA && ie.length) {
|
|
17540
|
+
const OA = (CA?.unit || Ae || "in").toString().toLowerCase(), ze = OA === "cm" ? "cm" : OA === "mm" ? "mm" : "in";
|
|
17541
|
+
cA = Dn(ie, Ue.current, ze);
|
|
17520
17542
|
}
|
|
17521
17543
|
console.log("[ps-sdk:tryon] fitInfo built", { count: cA?.length || 0, areas: cA?.map((OA) => `${OA.area}(${OA.fit})`) });
|
|
17522
|
-
let
|
|
17544
|
+
let se = o;
|
|
17523
17545
|
if (t)
|
|
17524
|
-
|
|
17546
|
+
se = t;
|
|
17525
17547
|
else if (fo.current)
|
|
17526
|
-
|
|
17548
|
+
se = fo.current, console.log(`[ps-sdk:tryon] using pre-picked garment reference: ${se}`);
|
|
17527
17549
|
else if (g && g.length > 1) {
|
|
17528
17550
|
const OA = await yn(g);
|
|
17529
|
-
OA && OA !== o && (console.log(`[ps-sdk:tryon] auto-picked garment reference (mediapipe): ${OA}`),
|
|
17551
|
+
OA && OA !== o && (console.log(`[ps-sdk:tryon] auto-picked garment reference (mediapipe): ${OA}`), se = OA);
|
|
17530
17552
|
}
|
|
17531
17553
|
const wo = await Oe.current.submitTryOn(
|
|
17532
17554
|
AA,
|
|
17533
|
-
|
|
17555
|
+
se,
|
|
17534
17556
|
cA,
|
|
17535
17557
|
G ?? "apparel",
|
|
17536
17558
|
{
|
|
@@ -17539,23 +17561,23 @@ function Pi({
|
|
|
17539
17561
|
productDescription: c,
|
|
17540
17562
|
productMaterial: n,
|
|
17541
17563
|
silhouetteContext: Qn(
|
|
17542
|
-
|
|
17564
|
+
CA,
|
|
17543
17565
|
V,
|
|
17544
|
-
|
|
17566
|
+
ge?.displayLabel,
|
|
17545
17567
|
(() => {
|
|
17546
17568
|
const OA = parseFloat(I.current.height || "0");
|
|
17547
17569
|
if (!OA || OA <= 0) return;
|
|
17548
17570
|
const ze = I.current.heightUnit || LA || "cm";
|
|
17549
17571
|
if (ze === "ft") {
|
|
17550
|
-
const
|
|
17551
|
-
return `${
|
|
17572
|
+
const io = Math.floor(OA), Ne = Math.round((OA - io) * 12);
|
|
17573
|
+
return `${io}'${Ne}"`;
|
|
17552
17574
|
}
|
|
17553
17575
|
return ze === "in" ? `${OA}"` : `${OA} cm`;
|
|
17554
17576
|
})(),
|
|
17555
17577
|
(() => {
|
|
17556
17578
|
const OA = parseFloat(I.current.weight || "0");
|
|
17557
17579
|
if (!OA || OA <= 0) return;
|
|
17558
|
-
const ze = I.current.weightUnit ||
|
|
17580
|
+
const ze = I.current.weightUnit || FA || "kg";
|
|
17559
17581
|
return `${OA} ${ze}`;
|
|
17560
17582
|
})()
|
|
17561
17583
|
),
|
|
@@ -17563,14 +17585,14 @@ function Pi({
|
|
|
17563
17585
|
}
|
|
17564
17586
|
);
|
|
17565
17587
|
wo.modelImageId && (Uo.current = wo.modelImageId), i?.(wo.jobId), hA.current = U.current.onJob(wo.jobId, sg);
|
|
17566
|
-
let
|
|
17567
|
-
|
|
17588
|
+
let Fg = 0;
|
|
17589
|
+
xA.current = setInterval(async () => {
|
|
17568
17590
|
if (Ie.current) {
|
|
17569
|
-
|
|
17591
|
+
xA.current && clearInterval(xA.current), xA.current = null;
|
|
17570
17592
|
return;
|
|
17571
17593
|
}
|
|
17572
|
-
if (
|
|
17573
|
-
|
|
17594
|
+
if (Fg++, Fg > 60) {
|
|
17595
|
+
xA.current && clearInterval(xA.current), xA.current = null;
|
|
17574
17596
|
return;
|
|
17575
17597
|
}
|
|
17576
17598
|
try {
|
|
@@ -17580,37 +17602,37 @@ function Pi({
|
|
|
17580
17602
|
}
|
|
17581
17603
|
}, 3e3);
|
|
17582
17604
|
} catch (AA) {
|
|
17583
|
-
const k = AA instanceof Error ? AA.message : T("Failed to start try-on"), R = AA instanceof
|
|
17605
|
+
const k = AA instanceof Error ? AA.message : T("Failed to start try-on"), R = AA instanceof Rg ? AA.code : void 0;
|
|
17584
17606
|
mA(k), O("error"), v?.({ message: k, code: R });
|
|
17585
17607
|
}
|
|
17586
|
-
}, [fA, o, r,
|
|
17587
|
-
|
|
17588
|
-
if (!
|
|
17608
|
+
}, [fA, o, r, CA, i, v, sg]);
|
|
17609
|
+
HA(() => {
|
|
17610
|
+
if (!CA) {
|
|
17589
17611
|
Jo.current = !1;
|
|
17590
17612
|
return;
|
|
17591
17613
|
}
|
|
17592
|
-
|
|
17593
|
-
}, [
|
|
17614
|
+
CA.found !== !1 && (x.current || Jo.current || He || iA || !fA && !We.current || (Jo.current = !0, xo()));
|
|
17615
|
+
}, [CA, He, iA, fA, xo]);
|
|
17594
17616
|
const kt = IA(() => {
|
|
17595
|
-
if (
|
|
17596
|
-
if (
|
|
17617
|
+
if (iA)
|
|
17618
|
+
if (iA.startsWith("data:")) {
|
|
17597
17619
|
const B = document.createElement("a");
|
|
17598
|
-
B.href =
|
|
17620
|
+
B.href = iA, B.download = `primestyle-tryon-${Date.now()}.png`, B.click();
|
|
17599
17621
|
} else
|
|
17600
|
-
fetch(
|
|
17622
|
+
fetch(iA).then((B) => B.blob()).then((B) => {
|
|
17601
17623
|
const p = URL.createObjectURL(B), G = document.createElement("a");
|
|
17602
17624
|
G.href = p, G.download = `primestyle-tryon-${Date.now()}.png`, G.click(), setTimeout(() => URL.revokeObjectURL(p), 100);
|
|
17603
|
-
}).catch(() => window.open(
|
|
17604
|
-
}, [
|
|
17605
|
-
Ie.current = !1, co(), X(null),
|
|
17606
|
-
}, [
|
|
17625
|
+
}).catch(() => window.open(iA, "_blank"));
|
|
17626
|
+
}, [iA]), Yt = IA(() => {
|
|
17627
|
+
Ie.current = !1, co(), X(null), rA && URL.revokeObjectURL(rA), uA(null), yA(null), mA(null), le(null), _A(null), y(!1), he(!1), O("body-profile");
|
|
17628
|
+
}, [rA, co]), Gt = IA((B) => {
|
|
17607
17629
|
const p = JA.find((sA) => sA.id === B);
|
|
17608
17630
|
if (!p) return;
|
|
17609
|
-
EA(B), Qe((sA) => sA.map((
|
|
17631
|
+
EA(B), Qe((sA) => sA.map((nA) => nA.id === B ? { ...nA, lastUsedAt: Date.now() } : nA));
|
|
17610
17632
|
const G = { gender: p.gender || "male" };
|
|
17611
17633
|
if ((p.height ?? p.heightCm) && (G.height = String(p.height ?? p.heightCm)), (p.weight ?? p.weightKg) && (G.weight = String(p.weight ?? p.weightKg)), p.chest && (G.chest = String(p.chest)), p.bust && (G.bust = String(p.bust)), p.waist && (G.waist = String(p.waist)), p.hips && (G.hips = String(p.hips)), p.shoulderWidth && (G.shoulderWidth = String(p.shoulderWidth)), p.sleeveLength && (G.sleeveLength = String(p.sleeveLength)), p.inseam && (G.inseam = String(p.inseam)), p.neckCircumference && (G.neckCircumference = String(p.neckCircumference)), p.footLengthCm && (G.footLengthCm = String(p.footLengthCm)), p.shoeEU && (G.shoeEU = p.shoeEU), p.shoeUS && (G.shoeUS = p.shoeUS), p.shoeUK && (G.shoeUK = p.shoeUK), p.fitPreference && (G.fitPreference = p.fitPreference), p.customMeasurements)
|
|
17612
|
-
for (const [sA,
|
|
17613
|
-
G[sA] = String(
|
|
17634
|
+
for (const [sA, nA] of Object.entries(p.customMeasurements))
|
|
17635
|
+
G[sA] = String(nA);
|
|
17614
17636
|
I.current = G, oA(G.gender || "male"), p.country && UA(p.country), p.sizingUnit && pe(p.sizingUnit), p.heightUnit && Ce(p.heightUnit), p.weightUnit && lA(p.weightUnit), me((sA) => sA + 1);
|
|
17615
17637
|
}, [JA]);
|
|
17616
17638
|
xt.current = Gt, IA((B, p) => {
|
|
@@ -17636,9 +17658,9 @@ function Pi({
|
|
|
17636
17658
|
country: pA,
|
|
17637
17659
|
sizingUnit: Ae,
|
|
17638
17660
|
heightUnit: LA,
|
|
17639
|
-
weightUnit:
|
|
17661
|
+
weightUnit: FA,
|
|
17640
17662
|
createdAt: Date.now()
|
|
17641
|
-
},
|
|
17663
|
+
}, nA = /* @__PURE__ */ new Set([
|
|
17642
17664
|
"chest",
|
|
17643
17665
|
"bust",
|
|
17644
17666
|
"waist",
|
|
@@ -17659,7 +17681,7 @@ function Pi({
|
|
|
17659
17681
|
"heightInches"
|
|
17660
17682
|
]), AA = {};
|
|
17661
17683
|
for (const [k, R] of Object.entries(I.current))
|
|
17662
|
-
!
|
|
17684
|
+
!nA.has(k) && R && !isNaN(Number(R)) && (AA[k] = parseFloat(R));
|
|
17663
17685
|
Object.keys(AA).length > 0 && (sA.customMeasurements = AA), Qe((k) => {
|
|
17664
17686
|
const R = k.findIndex((aA) => aA.id === G);
|
|
17665
17687
|
if (R >= 0) {
|
|
@@ -17668,34 +17690,34 @@ function Pi({
|
|
|
17668
17690
|
}
|
|
17669
17691
|
return [...k, sA].slice(-50);
|
|
17670
17692
|
}), EA(G), he(!0);
|
|
17671
|
-
}, [H, pA, Ae, LA,
|
|
17672
|
-
const
|
|
17693
|
+
}, [H, pA, Ae, LA, FA]);
|
|
17694
|
+
const Mg = IA(async () => {
|
|
17673
17695
|
const B = `h_${Date.now()}`;
|
|
17674
17696
|
let p = !1;
|
|
17675
17697
|
const G = fA || We.current;
|
|
17676
17698
|
if (G)
|
|
17677
17699
|
try {
|
|
17678
17700
|
const R = await Do(G, { maxDimension: 768, quality: 0.7 }), aA = await (await fetch(R)).blob();
|
|
17679
|
-
p = await
|
|
17701
|
+
p = await Tg(B, aA);
|
|
17680
17702
|
} catch {
|
|
17681
17703
|
}
|
|
17682
|
-
const sA = $.current,
|
|
17704
|
+
const sA = $.current, nA = CA?.recommendedSize ?? "", AA = Object.values(sA).map((R) => ({
|
|
17683
17705
|
sectionName: R.sectionName,
|
|
17684
17706
|
selectedSize: R.selectedSize,
|
|
17685
17707
|
selectedLength: R.selectedLength,
|
|
17686
17708
|
displayLabel: R.displayLabel,
|
|
17687
|
-
isOverride: !!
|
|
17709
|
+
isOverride: !!nA && R.selectedSize !== nA
|
|
17688
17710
|
})), k = {
|
|
17689
17711
|
id: B,
|
|
17690
17712
|
productTitle: r,
|
|
17691
17713
|
productImage: o,
|
|
17692
|
-
resultImageUrl:
|
|
17693
|
-
recommendedSize:
|
|
17694
|
-
confidence:
|
|
17695
|
-
reasoning:
|
|
17696
|
-
internationalSizes:
|
|
17697
|
-
matchDetails:
|
|
17698
|
-
sizingResult:
|
|
17714
|
+
resultImageUrl: iA || void 0,
|
|
17715
|
+
recommendedSize: CA?.recommendedSize,
|
|
17716
|
+
confidence: CA?.confidence,
|
|
17717
|
+
reasoning: CA?.reasoning,
|
|
17718
|
+
internationalSizes: CA?.internationalSizes,
|
|
17719
|
+
matchDetails: CA?.matchDetails,
|
|
17720
|
+
sizingResult: CA || void 0,
|
|
17699
17721
|
sizeGuide: V ? {
|
|
17700
17722
|
found: V.found,
|
|
17701
17723
|
title: V.title,
|
|
@@ -17716,53 +17738,53 @@ function Pi({
|
|
|
17716
17738
|
const aA = [k, ...R].slice(0, 50), WA = new Set(aA.map((DA) => DA.id));
|
|
17717
17739
|
return Vt(WA), aA;
|
|
17718
17740
|
});
|
|
17719
|
-
}, [r, o,
|
|
17720
|
-
|
|
17721
|
-
if (
|
|
17722
|
-
|
|
17741
|
+
}, [r, o, iA, CA, V, H, JA, fA]), ro = QA(!1), Ho = QA(!1);
|
|
17742
|
+
HA(() => {
|
|
17743
|
+
if (gA === "size-result" && CA && !ro.current)
|
|
17744
|
+
ro.current = !0, Ho.current = !1, Mg().catch(() => {
|
|
17723
17745
|
});
|
|
17724
|
-
else if (
|
|
17746
|
+
else if (gA === "size-result" && CA && iA && !Ho.current) {
|
|
17725
17747
|
Ho.current = !0;
|
|
17726
|
-
const B = $.current, p =
|
|
17727
|
-
sectionName:
|
|
17728
|
-
selectedSize:
|
|
17729
|
-
selectedLength:
|
|
17730
|
-
displayLabel:
|
|
17731
|
-
isOverride: !!p &&
|
|
17748
|
+
const B = $.current, p = CA?.recommendedSize ?? "", G = Object.values(B).map((nA) => ({
|
|
17749
|
+
sectionName: nA.sectionName,
|
|
17750
|
+
selectedSize: nA.selectedSize,
|
|
17751
|
+
selectedLength: nA.selectedLength,
|
|
17752
|
+
displayLabel: nA.displayLabel,
|
|
17753
|
+
isOverride: !!p && nA.selectedSize !== p
|
|
17732
17754
|
}));
|
|
17733
17755
|
let sA = null;
|
|
17734
|
-
if (P((
|
|
17735
|
-
...
|
|
17736
|
-
resultImageUrl:
|
|
17756
|
+
if (P((nA) => nA.length === 0 ? nA : (sA = nA[0].id, [{
|
|
17757
|
+
...nA[0],
|
|
17758
|
+
resultImageUrl: iA,
|
|
17737
17759
|
hasResult: !0,
|
|
17738
17760
|
...G.length ? { selectedSizes: G } : {}
|
|
17739
|
-
}, ...
|
|
17740
|
-
const
|
|
17761
|
+
}, ...nA.slice(1)])), sA) {
|
|
17762
|
+
const nA = sA;
|
|
17741
17763
|
(async () => {
|
|
17742
17764
|
try {
|
|
17743
|
-
const AA = await fetch(
|
|
17765
|
+
const AA = await fetch(iA);
|
|
17744
17766
|
if (!AA.ok) return;
|
|
17745
17767
|
const k = await AA.blob();
|
|
17746
|
-
await Xt(
|
|
17768
|
+
await Xt(nA, k);
|
|
17747
17769
|
} catch {
|
|
17748
17770
|
}
|
|
17749
17771
|
})();
|
|
17750
17772
|
}
|
|
17751
|
-
} else
|
|
17752
|
-
})) : (
|
|
17753
|
-
}, [
|
|
17773
|
+
} else gA === "result" && iA && !ro.current ? (ro.current = !0, Mg().catch(() => {
|
|
17774
|
+
})) : (gA === "welcome" || gA === "body-profile") && (ro.current = !1, Ho.current = !1);
|
|
17775
|
+
}, [gA, CA, iA]);
|
|
17754
17776
|
const Lt = IA((B) => {
|
|
17755
|
-
if (
|
|
17777
|
+
if (ro.current = !0, Ho.current = !!B.resultImageUrl, Jo.current = !0, B.sizingResult ? _A(B.sizingResult) : B.recommendedSize && _A({
|
|
17756
17778
|
recommendedSize: B.recommendedSize,
|
|
17757
17779
|
confidence: B.confidence || "high",
|
|
17758
17780
|
reasoning: B.reasoning || "",
|
|
17759
17781
|
internationalSizes: B.internationalSizes,
|
|
17760
17782
|
matchDetails: B.matchDetails
|
|
17761
|
-
}), B.sizeGuide && (
|
|
17783
|
+
}), B.sizeGuide && (ae(B.sizeGuide), XA(!1)), yA(B.resultImageUrl || null), (B.hasResult || B.resultImageUrl) && Wt(B.id).then((p) => {
|
|
17762
17784
|
if (!p) return;
|
|
17763
17785
|
const G = URL.createObjectURL(p);
|
|
17764
|
-
|
|
17765
|
-
}), B.hasPhoto &&
|
|
17786
|
+
yA(G);
|
|
17787
|
+
}), B.hasPhoto && Xg(B.id).then((p) => {
|
|
17766
17788
|
if (!p) return;
|
|
17767
17789
|
const G = new File([p], `history-photo-${B.id}.jpg`, { type: p.type || "image/jpeg" });
|
|
17768
17790
|
X(G), We.current = G;
|
|
@@ -17777,7 +17799,7 @@ function Pi({
|
|
|
17777
17799
|
};
|
|
17778
17800
|
ue(p), $.current = p;
|
|
17779
17801
|
}
|
|
17780
|
-
y(!1),
|
|
17802
|
+
y(!1), re(!1), te(null), fe(null), f(null), O("size-result");
|
|
17781
17803
|
}, []), Ot = IA((B, p) => {
|
|
17782
17804
|
I.current[B] = p;
|
|
17783
17805
|
}, []);
|
|
@@ -17839,28 +17861,28 @@ function Pi({
|
|
|
17839
17861
|
"--ps-error-color": M.errorColor,
|
|
17840
17862
|
"--ps-success-color": M.successColor,
|
|
17841
17863
|
"--ps-logo-height": M.logoHeight
|
|
17842
|
-
},
|
|
17864
|
+
}, yg = Object.fromEntries(Object.entries(zt).filter(([, B]) => B !== void 0));
|
|
17843
17865
|
function Nt() {
|
|
17844
|
-
switch (
|
|
17866
|
+
switch (gA) {
|
|
17845
17867
|
case "welcome":
|
|
17846
17868
|
return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(Wn, { productImage: o, setView: O, t: T }) }, "v-welcome");
|
|
17847
17869
|
case "body-profile": {
|
|
17848
|
-
const B =
|
|
17870
|
+
const B = so(r), p = { productImage: o, productTitle: r, formRef: I, sizingUnit: Ae, setSizingUnit: pe, setSizingMethod: le, setSizingLoading: y, setView: O, submitSizing: bo, onSnapSubmit: ag, onBack: no, apiUrl: je(s), apiKey: Re(), sizeGuide: V, t: T };
|
|
17849
17871
|
if (B === "foot") return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(di, { ...p }) }, "v-foot");
|
|
17850
17872
|
if (B === "head") return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(fi, { ...p }) }, "v-head");
|
|
17851
17873
|
if (B === "face") return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(Ii, { ...p }) }, "v-face");
|
|
17852
|
-
const G = !!(V?.requiredFields?.some((k) => k.key === "bust") || V?.sections && Object.values(V.sections).some((k) => k.requiredFields?.some((R) => R.key === "bust"))), sA = r.toLowerCase(),
|
|
17874
|
+
const G = !!(V?.requiredFields?.some((k) => k.key === "bust") || V?.sections && Object.values(V.sections).some((k) => k.requiredFields?.some((R) => R.key === "bust"))), sA = r.toLowerCase(), nA = /\b(women|woman|ladies|female|dress|skirt|blouse|bra)\b/i.test(sA);
|
|
17853
17875
|
return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(
|
|
17854
17876
|
li,
|
|
17855
17877
|
{
|
|
17856
17878
|
productImage: o,
|
|
17857
17879
|
productTitle: r,
|
|
17858
|
-
isWomen: G ||
|
|
17880
|
+
isWomen: G || nA,
|
|
17859
17881
|
formRef: I,
|
|
17860
17882
|
sizingCountry: pA,
|
|
17861
17883
|
heightUnit: LA,
|
|
17862
17884
|
setHeightUnit: Ce,
|
|
17863
|
-
weightUnit:
|
|
17885
|
+
weightUnit: FA,
|
|
17864
17886
|
setWeightUnit: lA,
|
|
17865
17887
|
sizingUnit: Ae,
|
|
17866
17888
|
setSizingUnit: pe,
|
|
@@ -17896,7 +17918,7 @@ function Pi({
|
|
|
17896
17918
|
onSnapSubmit: (k) => {
|
|
17897
17919
|
Ee(!0), ag(k);
|
|
17898
17920
|
},
|
|
17899
|
-
onBack:
|
|
17921
|
+
onBack: no,
|
|
17900
17922
|
t: T
|
|
17901
17923
|
},
|
|
17902
17924
|
`bp-${H || "anon"}`
|
|
@@ -17912,7 +17934,7 @@ function Pi({
|
|
|
17912
17934
|
estimationLoading: de,
|
|
17913
17935
|
dynamicFields: Ao,
|
|
17914
17936
|
formRef: I,
|
|
17915
|
-
formGender:
|
|
17937
|
+
formGender: kA,
|
|
17916
17938
|
formKey: KA,
|
|
17917
17939
|
setFormKey: me,
|
|
17918
17940
|
sizingUnit: Ae,
|
|
@@ -17931,9 +17953,9 @@ function Pi({
|
|
|
17931
17953
|
{
|
|
17932
17954
|
estimationDone: Ge,
|
|
17933
17955
|
sizingLoading: TA,
|
|
17934
|
-
sizingResult:
|
|
17956
|
+
sizingResult: CA,
|
|
17935
17957
|
sizeGuide: V,
|
|
17936
|
-
resultImageUrl:
|
|
17958
|
+
resultImageUrl: iA,
|
|
17937
17959
|
productImage: o,
|
|
17938
17960
|
productImages: g,
|
|
17939
17961
|
productTitle: r,
|
|
@@ -17943,28 +17965,28 @@ function Pi({
|
|
|
17943
17965
|
setView: O,
|
|
17944
17966
|
handleDownload: kt,
|
|
17945
17967
|
selectedFile: fA,
|
|
17946
|
-
previewUrl:
|
|
17968
|
+
previewUrl: rA,
|
|
17947
17969
|
handleFileSelect: ig,
|
|
17948
|
-
handleRemovePreview:
|
|
17970
|
+
handleRemovePreview: Hg,
|
|
17949
17971
|
handleTryOnSubmit: xo,
|
|
17950
17972
|
tryOnProcessing: He,
|
|
17951
17973
|
tryOnStartedAt: PA,
|
|
17952
17974
|
tryOnAvailable: GA,
|
|
17953
17975
|
bodyLandmarks: BA,
|
|
17954
17976
|
faceLandmarks: zo,
|
|
17955
|
-
measurementType:
|
|
17977
|
+
measurementType: so(r),
|
|
17956
17978
|
activeSection: qA,
|
|
17957
17979
|
setActiveSection: fe,
|
|
17958
17980
|
onResetTryOn: () => {
|
|
17959
|
-
X(null),
|
|
17981
|
+
X(null), rA && URL.revokeObjectURL(rA), uA(null), yA(null);
|
|
17960
17982
|
},
|
|
17961
|
-
onClose:
|
|
17983
|
+
onClose: no,
|
|
17962
17984
|
userHeightCm: (() => {
|
|
17963
|
-
const B = JA.find((
|
|
17985
|
+
const B = JA.find((nA) => nA.id === H);
|
|
17964
17986
|
if (!B) return;
|
|
17965
17987
|
const p = B.height ?? B.heightCm;
|
|
17966
17988
|
if (!p || p <= 0) return;
|
|
17967
|
-
const G = B.heightUnit, sA =
|
|
17989
|
+
const G = B.heightUnit, sA = CA?.unit || Ae;
|
|
17968
17990
|
return (G === "in" || G === "ft") && sA !== "in" ? Math.round(p * 2.54) : (!G || G === "cm") && sA === "in" ? Math.round(p / 2.54 * 10) / 10 : p;
|
|
17969
17991
|
})(),
|
|
17970
17992
|
t: T
|
|
@@ -17975,12 +17997,12 @@ function Pi({
|
|
|
17975
17997
|
dr,
|
|
17976
17998
|
{
|
|
17977
17999
|
selectedFile: fA,
|
|
17978
|
-
previewUrl:
|
|
18000
|
+
previewUrl: rA,
|
|
17979
18001
|
dragOver: we,
|
|
17980
18002
|
setDragOver: $A,
|
|
17981
18003
|
fileInputRef: $e,
|
|
17982
18004
|
handleFileSelect: ig,
|
|
17983
|
-
handleRemovePreview:
|
|
18005
|
+
handleRemovePreview: Hg,
|
|
17984
18006
|
handleTryOnSubmit: xo,
|
|
17985
18007
|
cn: L,
|
|
17986
18008
|
t: T
|
|
@@ -17990,7 +18012,7 @@ function Pi({
|
|
|
17990
18012
|
return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(
|
|
17991
18013
|
Qr,
|
|
17992
18014
|
{
|
|
17993
|
-
previewUrl:
|
|
18015
|
+
previewUrl: rA,
|
|
17994
18016
|
progressRef: Ko,
|
|
17995
18017
|
progressBarRef: ho,
|
|
17996
18018
|
progressTextRef: vo,
|
|
@@ -18001,7 +18023,7 @@ function Pi({
|
|
|
18001
18023
|
productMaterial: n,
|
|
18002
18024
|
productDescription: c,
|
|
18003
18025
|
onCancel: () => {
|
|
18004
|
-
O("size-result"),
|
|
18026
|
+
O("size-result"), re(!1);
|
|
18005
18027
|
},
|
|
18006
18028
|
cn: L,
|
|
18007
18029
|
t: T
|
|
@@ -18028,7 +18050,7 @@ function Pi({
|
|
|
18028
18050
|
nt(B, { bandSize: p, cupSize: G }), Qe(Je("profiles", []));
|
|
18029
18051
|
},
|
|
18030
18052
|
onEditProfile: (B) => {
|
|
18031
|
-
|
|
18053
|
+
dA(B);
|
|
18032
18054
|
},
|
|
18033
18055
|
onPhotoPreview: (B) => {
|
|
18034
18056
|
if (B) {
|
|
@@ -18039,7 +18061,7 @@ function Pi({
|
|
|
18039
18061
|
},
|
|
18040
18062
|
onEstimateFromPhoto: async (B) => {
|
|
18041
18063
|
try {
|
|
18042
|
-
const p = await Bo(B.photoBase64).catch(() => null), G = await
|
|
18064
|
+
const p = await Bo(B.photoBase64).catch(() => null), G = await Og({
|
|
18043
18065
|
apiUrl: s,
|
|
18044
18066
|
height: B.height > 0 ? B.height : void 0,
|
|
18045
18067
|
weight: B.weight > 0 ? B.weight : void 0,
|
|
@@ -18062,12 +18084,12 @@ function Pi({
|
|
|
18062
18084
|
createdAt: Date.now(),
|
|
18063
18085
|
lastUsedAt: Date.now()
|
|
18064
18086
|
}, G = [p, ...JA];
|
|
18065
|
-
|
|
18066
|
-
const sA = p.heightCm || p.height || 0,
|
|
18067
|
-
!(!!p.measurements && Object.keys(p.measurements).length > 0) && (R || sA > 0 &&
|
|
18087
|
+
ug(G), Qe(G), EA(p.id);
|
|
18088
|
+
const sA = p.heightCm || p.height || 0, nA = p.weightKg || p.weight || 0, AA = p.sizingUnit === "in" ? "in" : "cm", k = p.sizingUnit === "in" ? "lbs" : "kg", R = p.photoBase64;
|
|
18089
|
+
!(!!p.measurements && Object.keys(p.measurements).length > 0) && (R || sA > 0 && nA > 0) && (_((DA) => new Set(DA).add(p.id)), (R ? Bo(R).catch(() => null) : Promise.resolve(null)).then((DA) => Og({
|
|
18068
18090
|
apiUrl: s,
|
|
18069
18091
|
height: sA > 0 ? sA : void 0,
|
|
18070
|
-
weight:
|
|
18092
|
+
weight: nA > 0 ? nA : void 0,
|
|
18071
18093
|
heightUnit: AA,
|
|
18072
18094
|
weightUnit: k,
|
|
18073
18095
|
gender: p.gender,
|
|
@@ -18080,10 +18102,10 @@ function Pi({
|
|
|
18080
18102
|
})).then((DA) => {
|
|
18081
18103
|
if (DA) {
|
|
18082
18104
|
if (Bg(p.id, DA.estimates, DA.unit), DA.userEstimates) {
|
|
18083
|
-
const
|
|
18105
|
+
const ge = Je("profiles", []), VA = ge.findIndex((ie) => ie.id === p.id);
|
|
18084
18106
|
if (VA >= 0) {
|
|
18085
|
-
const
|
|
18086
|
-
cA.height && !(
|
|
18107
|
+
const ie = ge[VA], cA = DA.userEstimates, se = { ...ie };
|
|
18108
|
+
cA.height && !(ie.height || ie.heightCm) && (se.height = cA.height, se.heightCm = cA.height, se.heightUnit = "cm"), cA.weight && !(ie.weight || ie.weightKg) && (se.weight = cA.weight, se.weightKg = cA.weight, se.weightUnit = "kg"), cA.age && !ie.age && (se.age = cA.age), ge[VA] = se, ao("profiles", ge);
|
|
18087
18109
|
}
|
|
18088
18110
|
}
|
|
18089
18111
|
Qe(Je("profiles", []));
|
|
@@ -18091,13 +18113,13 @@ function Pi({
|
|
|
18091
18113
|
}).catch(() => {
|
|
18092
18114
|
}).finally(() => {
|
|
18093
18115
|
_((DA) => {
|
|
18094
|
-
const
|
|
18095
|
-
return
|
|
18116
|
+
const ge = new Set(DA);
|
|
18117
|
+
return ge.delete(p.id), ge;
|
|
18096
18118
|
});
|
|
18097
18119
|
}));
|
|
18098
18120
|
},
|
|
18099
18121
|
onDeleteProfile: (B) => {
|
|
18100
|
-
Qe((p) => p.filter((G) => G.id !== B)), H === B && EA(null),
|
|
18122
|
+
Qe((p) => p.filter((G) => G.id !== B)), H === B && EA(null), ao("profiles", Je("profiles", []).filter((p) => p.id !== B));
|
|
18101
18123
|
},
|
|
18102
18124
|
onRequestDelete: (B) => ee(B),
|
|
18103
18125
|
onClose: () => O("body-profile"),
|
|
@@ -18131,7 +18153,7 @@ function Pi({
|
|
|
18131
18153
|
return /* @__PURE__ */ A("div", { className: "ps-tryon-view-enter", children: /* @__PURE__ */ A(
|
|
18132
18154
|
Dr,
|
|
18133
18155
|
{
|
|
18134
|
-
measurementType:
|
|
18156
|
+
measurementType: so(r),
|
|
18135
18157
|
apiUrl: je(s),
|
|
18136
18158
|
apiKey: Re(),
|
|
18137
18159
|
onBack: () => O("no-chart"),
|
|
@@ -18145,7 +18167,7 @@ function Pi({
|
|
|
18145
18167
|
return null;
|
|
18146
18168
|
}
|
|
18147
18169
|
}
|
|
18148
|
-
return /* @__PURE__ */ e("div", { className: Ye("ps-tryon-root", L.root || Y), style: { visibility:
|
|
18170
|
+
return /* @__PURE__ */ e("div", { className: Ye("ps-tryon-root", L.root || Y), style: { visibility: MA ? "visible" : "hidden", ...yg, ...h }, suppressHydrationWarning: !0, "data-ps-tryon": !0, children: [
|
|
18149
18171
|
/* @__PURE__ */ e(
|
|
18150
18172
|
"button",
|
|
18151
18173
|
{
|
|
@@ -18155,25 +18177,25 @@ function Pi({
|
|
|
18155
18177
|
className: Ye("ps-tryon-btn", L.button),
|
|
18156
18178
|
type: "button",
|
|
18157
18179
|
children: [
|
|
18158
|
-
D !== !1 && (d || /* @__PURE__ */ A(
|
|
18180
|
+
D !== !1 && (d || /* @__PURE__ */ A(oo, {})),
|
|
18159
18181
|
/* @__PURE__ */ A("span", { children: zA })
|
|
18160
18182
|
]
|
|
18161
18183
|
}
|
|
18162
18184
|
),
|
|
18163
|
-
|
|
18164
|
-
/* @__PURE__ */ A("div", { className: Ye("ps-tryon-overlay", L.overlay), style:
|
|
18185
|
+
gA !== "idle" && typeof document < "u" && hg(
|
|
18186
|
+
/* @__PURE__ */ A("div", { className: Ye("ps-tryon-overlay", L.overlay), style: yg, "data-ps-tryon-portal": !0, children: /* @__PURE__ */ e("div", { className: Ye(`ps-tryon-modal${gA === "result" && iA && CA || gA === "size-result" || gA === "estimation-review" || gA === "body-profile" || gA === "profiles" || gA === "no-chart" || gA === "photo-guide" ? " ps-tryon-modal-wide" : ""}`, L.modal), onClick: (B) => B.stopPropagation(), children: [
|
|
18165
18187
|
/* @__PURE__ */ e("div", { className: Ye("ps-tryon-header ps-tryon-header-minimal", L.header), children: [
|
|
18166
18188
|
/* @__PURE__ */ A(Kn, { activeLocale: K, onSelect: wA }),
|
|
18167
18189
|
/* @__PURE__ */ A("button", { className: "ps-tryon-header-icon", title: T("Profiles"), onClick: () => {
|
|
18168
|
-
|
|
18169
|
-
}, children: /* @__PURE__ */ A(
|
|
18190
|
+
YA && f(null), gA === "profiles" ? (O(bA.current || "body-profile"), bA.current = null) : (bA.current = gA, O("profiles"));
|
|
18191
|
+
}, children: /* @__PURE__ */ A(mg, {}) }),
|
|
18170
18192
|
/* @__PURE__ */ A("button", { className: "ps-tryon-header-icon", title: T("History"), onClick: () => {
|
|
18171
|
-
|
|
18193
|
+
gA === "profiles" && (O(bA.current || "body-profile"), bA.current = null), YA === "history" ? f(null) : (bA.current = bA.current || gA, f("history"));
|
|
18172
18194
|
}, children: /* @__PURE__ */ A(Gn, {}) }),
|
|
18173
|
-
/* @__PURE__ */ A("button", { onClick:
|
|
18195
|
+
/* @__PURE__ */ A("button", { onClick: no, className: Ye("ps-tryon-close", L.closeButton), children: /* @__PURE__ */ A(at, {}) })
|
|
18174
18196
|
] }),
|
|
18175
|
-
|
|
18176
|
-
/* @__PURE__ */ e("div", { ref: _e, className: Ye("ps-tryon-body", L.body), style: { position: "relative", overflow:
|
|
18197
|
+
gA !== "body-profile" && gA !== "processing" && !(gA === "size-result" && V?.sections && Object.keys(V.sections).length > 1) && /* @__PURE__ */ A(Jn, { view: gA, stepIndex: ut }),
|
|
18198
|
+
/* @__PURE__ */ e("div", { ref: _e, className: Ye("ps-tryon-body", L.body), style: { position: "relative", overflow: YA ? "hidden" : void 0 }, children: [
|
|
18177
18199
|
yt && /* @__PURE__ */ e("button", { className: "ps-tryon-back-btn", onClick: Mt, children: [
|
|
18178
18200
|
/* @__PURE__ */ e("svg", { width: "18", height: "12", viewBox: "0 0 18 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
18179
18201
|
/* @__PURE__ */ A("line", { x1: "17", y1: "6", x2: "1", y2: "6" }),
|
|
@@ -18185,24 +18207,24 @@ function Pi({
|
|
|
18185
18207
|
/* @__PURE__ */ A(
|
|
18186
18208
|
Rn,
|
|
18187
18209
|
{
|
|
18188
|
-
drawer:
|
|
18210
|
+
drawer: YA,
|
|
18189
18211
|
setDrawer: f,
|
|
18190
18212
|
profiles: JA,
|
|
18191
18213
|
setProfiles: Qe,
|
|
18192
18214
|
history: SA,
|
|
18193
18215
|
setHistory: P,
|
|
18194
|
-
setProfileDetail:
|
|
18216
|
+
setProfileDetail: dA,
|
|
18195
18217
|
restoreHistory: Lt,
|
|
18196
18218
|
t: T
|
|
18197
18219
|
}
|
|
18198
18220
|
)
|
|
18199
18221
|
] }),
|
|
18200
|
-
|
|
18222
|
+
tA && /* @__PURE__ */ A(
|
|
18201
18223
|
Vr,
|
|
18202
18224
|
{
|
|
18203
18225
|
onConfirm: () => {
|
|
18204
|
-
const B =
|
|
18205
|
-
|
|
18226
|
+
const B = tA, p = Je("profiles", []).filter((G) => G.id !== B);
|
|
18227
|
+
ao("profiles", p), Qe(p), H === B && EA(null), ee(null);
|
|
18206
18228
|
},
|
|
18207
18229
|
onCancel: () => ee(null),
|
|
18208
18230
|
t: T
|
|
@@ -18224,7 +18246,7 @@ function Pi({
|
|
|
18224
18246
|
Tn,
|
|
18225
18247
|
{
|
|
18226
18248
|
profileDetail: j,
|
|
18227
|
-
setProfileDetail:
|
|
18249
|
+
setProfileDetail: dA,
|
|
18228
18250
|
setProfiles: Qe,
|
|
18229
18251
|
activeProfileId: H,
|
|
18230
18252
|
setActiveProfileId: EA,
|
|
@@ -18238,7 +18260,7 @@ function yi(o) {
|
|
|
18238
18260
|
}
|
|
18239
18261
|
function Fi(o) {
|
|
18240
18262
|
const [g, t] = Q(null), [r, a] = Q(!0), [c, n] = Q(!1), [w, s] = Q(0);
|
|
18241
|
-
return
|
|
18263
|
+
return HA(() => {
|
|
18242
18264
|
let l = !1;
|
|
18243
18265
|
return a(!0), n(!1), console.log("[ps-sdk:hook] usePrimeStyleSize start", { productId: o.productId }), it(o).then((D) => {
|
|
18244
18266
|
l || (D === null ? (console.log("[ps-sdk:hook] usePrimeStyleSize → null (no profile or recommendation failed)"), n(!0), t(null)) : (console.log("[ps-sdk:hook] usePrimeStyleSize → result", { recommendedSize: D.recommendedSize, hasRaw: !!D.raw }), t(D)));
|
|
@@ -18249,7 +18271,7 @@ function Fi(o) {
|
|
|
18249
18271
|
}), () => {
|
|
18250
18272
|
l = !0;
|
|
18251
18273
|
};
|
|
18252
|
-
}, [o.productId, o.apiUrl, o.apiKey, w]),
|
|
18274
|
+
}, [o.productId, o.apiUrl, o.apiKey, w]), HA(() => {
|
|
18253
18275
|
if (typeof window > "u") return;
|
|
18254
18276
|
const l = () => s((D) => D + 1);
|
|
18255
18277
|
return window.addEventListener(Go, l), window.addEventListener("storage", l), () => {
|
|
@@ -18267,13 +18289,13 @@ function Fi(o) {
|
|
|
18267
18289
|
export {
|
|
18268
18290
|
yi as PrimeStyleTryon,
|
|
18269
18291
|
rt as addSizeToHistory,
|
|
18270
|
-
|
|
18292
|
+
Og as estimateFullMeasurements,
|
|
18271
18293
|
In as getActiveProfile,
|
|
18272
18294
|
tt as getActiveProfileId,
|
|
18273
18295
|
un as getCachedSize,
|
|
18274
18296
|
Ig as getProfiles,
|
|
18275
18297
|
it as recommendForProduct,
|
|
18276
|
-
|
|
18298
|
+
ug as saveProfiles,
|
|
18277
18299
|
En as setActiveProfileId,
|
|
18278
18300
|
nt as updateProfile,
|
|
18279
18301
|
Bg as updateProfileMeasurements,
|