@liforma/client 0.4.14 → 0.4.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/next/index.js +625 -602
- package/dist/next/index.js.map +1 -1
- package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
- package/dist/next/thumbnail/avatarPlate.d.ts +11 -0
- package/dist/next/thumbnail/avatarPlate.d.ts.map +1 -0
- package/dist/next/thumbnail/avatarPlate.test.d.ts +2 -0
- package/dist/next/thumbnail/avatarPlate.test.d.ts.map +1 -0
- package/dist/next/thumbnail/expandAssetUrl.d.ts +3 -2
- package/dist/next/thumbnail/expandAssetUrl.d.ts.map +1 -1
- package/dist/next/thumbnail/index.d.ts +2 -0
- package/dist/next/thumbnail/index.d.ts.map +1 -1
- package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +7 -3
- package/dist/next/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
- package/dist/next/thumbnail.js +211 -200
- package/dist/next/thumbnail.js.map +1 -1
- package/dist/next/v2/embed/protocol.d.ts +7 -7
- package/dist/next/v2/embed/protocol.d.ts.map +1 -1
- package/dist/next/v2/experience.d.ts +8 -5
- package/dist/next/v2/experience.d.ts.map +1 -1
- package/dist/next/v2/types/sessionLaunch.d.ts +6 -0
- package/dist/next/v2/types/sessionLaunch.d.ts.map +1 -1
- package/dist/npm/index.js +506 -490
- package/dist/npm/index.js.map +1 -1
- package/dist/npm/thumbnail/avatarPlate.d.ts +11 -0
- package/dist/npm/thumbnail/avatarPlate.d.ts.map +1 -0
- package/dist/npm/thumbnail/expandAssetUrl.d.ts +3 -2
- package/dist/npm/thumbnail/expandAssetUrl.d.ts.map +1 -1
- package/dist/npm/thumbnail/index.d.ts +2 -0
- package/dist/npm/thumbnail/index.d.ts.map +1 -1
- package/dist/npm/thumbnail/index.js +123 -110
- package/dist/npm/thumbnail/index.js.map +1 -1
- package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +7 -3
- package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
- package/dist/npm/v2/embed/protocol.d.ts +7 -7
- package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
- package/dist/npm/v2/experience.d.ts +8 -5
- package/dist/npm/v2/experience.d.ts.map +1 -1
- package/dist/npm/v2/index.d.ts +1 -1
- package/dist/npm/v2/index.d.ts.map +1 -1
- package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
- package/dist/npm/v2/npm.d.ts +1 -1
- package/dist/npm/v2/npm.d.ts.map +1 -1
- package/dist/npm/v2/types/index.d.ts +1 -1
- package/dist/npm/v2/types/index.d.ts.map +1 -1
- package/dist/npm/v2/types/sessionLaunch.d.ts +6 -0
- package/dist/npm/v2/types/sessionLaunch.d.ts.map +1 -1
- package/dist/react/component/experienceComponentRuntime.d.ts +3 -1
- package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -1
- package/dist/react/component/experienceComponentTypes.d.ts +6 -4
- package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
- package/dist/react/index.js +733 -704
- package/dist/react/index.js.map +1 -1
- package/dist/react/react/Experience.d.ts.map +1 -1
- package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
- package/dist/react/thumbnail/avatarPlate.d.ts +11 -0
- package/dist/react/thumbnail/avatarPlate.d.ts.map +1 -0
- package/dist/react/thumbnail/avatarPlate.test.d.ts +2 -0
- package/dist/react/thumbnail/avatarPlate.test.d.ts.map +1 -0
- package/dist/react/thumbnail/expandAssetUrl.d.ts +3 -2
- package/dist/react/thumbnail/expandAssetUrl.d.ts.map +1 -1
- package/dist/react/thumbnail/index.d.ts +2 -0
- package/dist/react/thumbnail/index.d.ts.map +1 -1
- package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +7 -3
- package/dist/react/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
- package/dist/react/thumbnail.js +211 -200
- package/dist/react/thumbnail.js.map +1 -1
- package/dist/react/v2/embed/protocol.d.ts +7 -7
- package/dist/react/v2/embed/protocol.d.ts.map +1 -1
- package/dist/react/v2/experience.d.ts +8 -5
- package/dist/react/v2/experience.d.ts.map +1 -1
- package/dist/react/v2/types/sessionLaunch.d.ts +6 -0
- package/dist/react/v2/types/sessionLaunch.d.ts.map +1 -1
- package/dist/sdk/v2/client.js +3 -3
- package/dist/sdk/v2/client.js.map +1 -1
- package/dist/sdk/v2/thumbnail.js +2 -2
- package/dist/sdk/v2/thumbnail.js.map +1 -1
- package/dist/svelte/Experience.svelte +4 -0
- package/dist/svelte/ExperienceThumbnail.svelte +3 -0
- package/package.json +1 -1
package/dist/react/thumbnail.js
CHANGED
|
@@ -7,16 +7,28 @@ function s(e) {
|
|
|
7
7
|
return e === "face" ? "liforma-et--fit-face" : e === "medium" ? "liforma-et--fit-medium" : "";
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
|
-
//#region src/thumbnail/
|
|
11
|
-
var c = /(
|
|
10
|
+
//#region src/thumbnail/avatarPlate.ts
|
|
11
|
+
var c = /(\/avatars\/[^/]+\/)(\d+)(\/)/i;
|
|
12
12
|
function l(e, t) {
|
|
13
|
-
|
|
13
|
+
if (!Number.isFinite(e) || !Number.isFinite(t) || e < 1 || t < 1) return "256";
|
|
14
|
+
let n = Math.max(e, t);
|
|
15
|
+
return n > 512 ? "1024" : n > 280 ? "512" : "256";
|
|
14
16
|
}
|
|
15
17
|
function u(e, t) {
|
|
16
18
|
let n = e.trim();
|
|
17
|
-
return n && n.replace(c, (e, n, r, i
|
|
19
|
+
return n && n.replace(c, (e, n, r, i) => `${n}${t}${i}`);
|
|
18
20
|
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/thumbnail/locationPlate.ts
|
|
23
|
+
var d = /(-)(\d+x\d+)(\.(?:webp|avif))(\?|$)/i;
|
|
19
24
|
function ee(e, t) {
|
|
25
|
+
return !Number.isFinite(e) || !Number.isFinite(t) || e < 1 || t < 1 || e <= t ? "256x256" : t <= 225 ? "400x225" : e > 800 || t > 450 ? "1672x941" : "800x450";
|
|
26
|
+
}
|
|
27
|
+
function f(e, t) {
|
|
28
|
+
let n = e.trim();
|
|
29
|
+
return n && n.replace(d, (e, n, r, i, a) => `${n}${t}${i}${a}`);
|
|
30
|
+
}
|
|
31
|
+
function te(e, t) {
|
|
20
32
|
let n = () => {
|
|
21
33
|
t(e.clientWidth, e.clientHeight);
|
|
22
34
|
};
|
|
@@ -24,17 +36,17 @@ function ee(e, t) {
|
|
|
24
36
|
let r = new ResizeObserver(n);
|
|
25
37
|
return r.observe(e), () => r.disconnect();
|
|
26
38
|
}
|
|
27
|
-
var
|
|
28
|
-
function
|
|
39
|
+
var p = /-(256x256|400x225|400x450|800x450|836x971|1672x941|167x94)$/i;
|
|
40
|
+
function m(e) {
|
|
29
41
|
return e?.trim().replace(/\/$/, "") || "https://cdn.liforma.ai";
|
|
30
42
|
}
|
|
31
|
-
function
|
|
43
|
+
function h(e) {
|
|
32
44
|
return /^https?:\/\//i.test(e) || e.startsWith("//");
|
|
33
45
|
}
|
|
34
|
-
function
|
|
46
|
+
function g(e) {
|
|
35
47
|
return e.startsWith("//") ? `https:${e}` : e;
|
|
36
48
|
}
|
|
37
|
-
function
|
|
49
|
+
function ne(e) {
|
|
38
50
|
let t = e.indexOf("?");
|
|
39
51
|
return t === -1 ? {
|
|
40
52
|
pathname: e,
|
|
@@ -44,61 +56,58 @@ function h(e) {
|
|
|
44
56
|
search: e.slice(t)
|
|
45
57
|
};
|
|
46
58
|
}
|
|
47
|
-
function
|
|
59
|
+
function _(e, t, n = "") {
|
|
48
60
|
return `${e}${t.startsWith("/") ? t : `/${t}`}${n}`;
|
|
49
61
|
}
|
|
50
|
-
function
|
|
62
|
+
function v(e, t, n) {
|
|
51
63
|
let r = e.trim();
|
|
52
64
|
if (!r) return r;
|
|
53
|
-
let i =
|
|
54
|
-
if (
|
|
55
|
-
let { pathname: a, search: o } =
|
|
65
|
+
let i = m(n);
|
|
66
|
+
if (h(r)) return f(g(r), t);
|
|
67
|
+
let { pathname: a, search: o } = ne(r.replace(/\\/g, "/")), s = a;
|
|
56
68
|
if (!s.startsWith("/")) s = `/locations/${s.replace(/^locations\//i, "")}`;
|
|
57
|
-
else if (!/^\/locations\//i.test(s)) return /^\/avatars\//i.test(s) ?
|
|
58
|
-
if (/\.webp$/i.test(s) && !
|
|
69
|
+
else if (!/^\/locations\//i.test(s)) return /^\/avatars\//i.test(s) ? _(i, s, o) : r;
|
|
70
|
+
if (/\.webp$/i.test(s) && !p.test(s.replace(/\.webp$/i, ""))) return _(i, s, o);
|
|
59
71
|
let c = s.replace(/^\/locations\//i, "").replace(/\.webp$/i, "");
|
|
60
|
-
return c = c.replace(
|
|
72
|
+
return c = c.replace(p, ""), `${i}/locations/${c}-${t}.webp${o}`;
|
|
61
73
|
}
|
|
62
|
-
function
|
|
63
|
-
let
|
|
64
|
-
if (!
|
|
65
|
-
let
|
|
66
|
-
if (
|
|
67
|
-
let { pathname:
|
|
68
|
-
if (!
|
|
69
|
-
else if (/^[^/]+$/.test(
|
|
70
|
-
else return
|
|
71
|
-
if (!/^\/avatars\//i.test(
|
|
72
|
-
let
|
|
73
|
-
return
|
|
74
|
+
function y(e, t, n = "256") {
|
|
75
|
+
let r = e.trim();
|
|
76
|
+
if (!r) return r;
|
|
77
|
+
let i = m(t), a = n;
|
|
78
|
+
if (h(r)) return u(g(r), a);
|
|
79
|
+
let { pathname: o, search: s } = ne(r.replace(/\\/g, "/")), c = o;
|
|
80
|
+
if (!c.startsWith("/")) if (/^avatars\//i.test(c)) c = `/${c}`;
|
|
81
|
+
else if (/^[^/]+$/.test(c) && !s) return `${i}/avatars/${c}/${a}/${c}_neutral.webp`;
|
|
82
|
+
else return r;
|
|
83
|
+
if (!/^\/avatars\//i.test(c)) return r;
|
|
84
|
+
let l = c.replace(/^\/avatars\//i, "").replace(/\/+$/, "");
|
|
85
|
+
return l && !l.includes("/") && !s ? `${i}/avatars/${l}/${a}/${l}_neutral.webp` : u(_(i, c, s), a);
|
|
74
86
|
}
|
|
75
87
|
//#endregion
|
|
76
88
|
//#region src/thumbnail/toGalleryThumbUrl.ts
|
|
77
|
-
var
|
|
78
|
-
function
|
|
89
|
+
var b = /_CH(\.webp)/i;
|
|
90
|
+
function re(e) {
|
|
79
91
|
return /\/locations\//i.test(e) || /^locations\//i.test(e) ? !0 : /^https?:\/\//i.test(e) || e.startsWith("//") || /^\/?avatars\//i.test(e) || e.startsWith("/") ? !1 : e.includes("/");
|
|
80
92
|
}
|
|
81
|
-
function
|
|
82
|
-
let
|
|
83
|
-
|
|
84
|
-
if (b(r)) return _(r, t, n);
|
|
85
|
-
let i = te(r, n);
|
|
86
|
-
return i = i.replace(v, (e, t, n, r) => n === "256" ? `${t}${n}${r}` : `${t}256${r}`), i.replace(y, "_neutral$1");
|
|
93
|
+
function ie(e, t = "256x256", n, r = "256") {
|
|
94
|
+
let i = e.trim();
|
|
95
|
+
return i && (re(i) ? v(i, t, n) : y(i, n, r).replace(b, "_neutral$1"));
|
|
87
96
|
}
|
|
88
|
-
function
|
|
97
|
+
function ae(e) {
|
|
89
98
|
let t = e.avatarImage?.trim() || e.galleryThumb?.avatarImage?.trim() || "";
|
|
90
99
|
if (!t) return null;
|
|
91
|
-
let n = e.backgroundImage?.trim() || e.galleryThumb?.backgroundImage?.trim() || "", r = e.foregroundImage?.trim() || e.galleryThumb?.foregroundImage?.trim() || "", i = e.fallbackImage?.trim() || "", a = e.locationPlateSize ?? "256x256", o =
|
|
100
|
+
let n = e.backgroundImage?.trim() || e.galleryThumb?.backgroundImage?.trim() || "", r = e.foregroundImage?.trim() || e.galleryThumb?.foregroundImage?.trim() || "", i = e.fallbackImage?.trim() || "", a = e.locationPlateSize ?? "256x256", o = e.avatarPlateSize ?? "256", s = m(e.cdnBaseUrl), c = e.normalize !== !1, l = (e) => !c && /^https?:\/\//i.test(e.trim()) ? e.trim() : ie(e, a, s, o), u = (e) => !c && /^https?:\/\//i.test(e.trim()) ? e.trim() : v(e, a, s);
|
|
92
101
|
return {
|
|
93
|
-
avatarImage:
|
|
94
|
-
...n ? { backgroundImage:
|
|
95
|
-
...r ? { foregroundImage:
|
|
96
|
-
...i ? { fallbackImage:
|
|
102
|
+
avatarImage: l(t),
|
|
103
|
+
...n ? { backgroundImage: u(n) } : {},
|
|
104
|
+
...r ? { foregroundImage: u(r) } : {},
|
|
105
|
+
...i ? { fallbackImage: l(i) } : {}
|
|
97
106
|
};
|
|
98
107
|
}
|
|
99
108
|
//#endregion
|
|
100
109
|
//#region src/shims/localStack.ts
|
|
101
|
-
function
|
|
110
|
+
function x() {
|
|
102
111
|
if (globalThis.__LIFORMA_STACK === "local") return !0;
|
|
103
112
|
if (typeof location > "u") return !1;
|
|
104
113
|
try {
|
|
@@ -109,82 +118,82 @@ function ie() {
|
|
|
109
118
|
}
|
|
110
119
|
//#endregion
|
|
111
120
|
//#region src/thumbnail/hostedLaunchUrl.ts
|
|
112
|
-
var
|
|
113
|
-
function
|
|
121
|
+
var oe = "https://player.liforma.ai", S = "http://localhost:3002";
|
|
122
|
+
function se(e) {
|
|
114
123
|
return e.href?.trim() ? "anchor" : e.hasClickHandler ? "button" : e.experienceId?.trim() ? "anchor" : "presentational";
|
|
115
124
|
}
|
|
116
|
-
function
|
|
125
|
+
function C(e) {
|
|
117
126
|
let t = e?.trim();
|
|
118
|
-
return t ? t.replace(/\/$/, "") :
|
|
127
|
+
return t ? t.replace(/\/$/, "") : x() ? S : oe;
|
|
119
128
|
}
|
|
120
|
-
function
|
|
121
|
-
let t = e.experienceId.trim(), n =
|
|
129
|
+
function w(e) {
|
|
130
|
+
let t = e.experienceId.trim(), n = C(e.playerBaseUrl), r = new URL(`${n}/${encodeURIComponent(t)}`), i = e.returnUrl?.trim();
|
|
122
131
|
return i && r.searchParams.set("returnUrl", i), r.toString();
|
|
123
132
|
}
|
|
124
|
-
function
|
|
133
|
+
function ce(e) {
|
|
125
134
|
let t = e.href?.trim();
|
|
126
135
|
if (t) return t;
|
|
127
136
|
let n = e.experienceId?.trim();
|
|
128
137
|
if (!n) return;
|
|
129
138
|
let r = e.returnUrl?.trim();
|
|
130
|
-
return !r && e.useCurrentPageAsReturnUrl && typeof window < "u" && (r = window.location.href),
|
|
139
|
+
return !r && e.useCurrentPageAsReturnUrl && typeof window < "u" && (r = window.location.href), w({
|
|
131
140
|
experienceId: n,
|
|
132
141
|
...r ? { returnUrl: r } : {},
|
|
133
142
|
playerBaseUrl: e.playerBaseUrl
|
|
134
143
|
});
|
|
135
144
|
}
|
|
136
|
-
function
|
|
145
|
+
function T() {
|
|
137
146
|
return typeof window > "u" ? !1 : window.matchMedia("(hover: none), (pointer: coarse)").matches;
|
|
138
147
|
}
|
|
139
|
-
var
|
|
140
|
-
function ce() {
|
|
141
|
-
return w() ? 4 : Infinity;
|
|
142
|
-
}
|
|
148
|
+
var E = 0, D = [];
|
|
143
149
|
function le() {
|
|
144
|
-
return
|
|
150
|
+
return T() ? 4 : Infinity;
|
|
145
151
|
}
|
|
146
|
-
function
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
152
|
+
function O() {
|
|
153
|
+
return T() ? 160 : 0;
|
|
154
|
+
}
|
|
155
|
+
function k() {
|
|
156
|
+
let e = le();
|
|
157
|
+
for (; E < e && D.length > 0;) {
|
|
158
|
+
let e = D.shift();
|
|
150
159
|
if (!e || e.cancelled) continue;
|
|
151
|
-
|
|
152
|
-
let t =
|
|
160
|
+
E += 1, e.start();
|
|
161
|
+
let t = O();
|
|
153
162
|
if (t <= 0) {
|
|
154
|
-
|
|
163
|
+
E = Math.max(0, E - 1);
|
|
155
164
|
continue;
|
|
156
165
|
}
|
|
157
166
|
window.setTimeout(() => {
|
|
158
|
-
|
|
167
|
+
E = Math.max(0, E - 1), k();
|
|
159
168
|
}, t);
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
171
|
function ue(e) {
|
|
163
|
-
if (!
|
|
172
|
+
if (!T()) return e(), () => {};
|
|
164
173
|
let t = {
|
|
165
174
|
start: e,
|
|
166
175
|
cancelled: !1
|
|
167
176
|
};
|
|
168
|
-
return
|
|
177
|
+
return D.push(t), k(), () => {
|
|
169
178
|
t.cancelled = !0;
|
|
170
179
|
};
|
|
171
180
|
}
|
|
172
181
|
//#endregion
|
|
173
182
|
//#region src/thumbnail/lazyLoad.ts
|
|
174
|
-
function
|
|
175
|
-
return
|
|
183
|
+
function A() {
|
|
184
|
+
return T() ? "96px 0px" : "280px 0px";
|
|
176
185
|
}
|
|
177
|
-
function
|
|
186
|
+
function j(e) {
|
|
178
187
|
let t = e.trim().split(/\s+/)[0] ?? "0px", n = Number.parseFloat(t);
|
|
179
188
|
return Number.isFinite(n) ? Math.abs(n) : 280;
|
|
180
189
|
}
|
|
181
|
-
function
|
|
190
|
+
function M(e, t) {
|
|
182
191
|
if (typeof window > "u") return !1;
|
|
183
192
|
let n = e.getBoundingClientRect();
|
|
184
193
|
return n.bottom >= -t && n.top <= window.innerHeight + t;
|
|
185
194
|
}
|
|
186
195
|
function de(e, t) {
|
|
187
|
-
let { onVisibleChange: n } = t, r = t.rootMargin ??
|
|
196
|
+
let { onVisibleChange: n } = t, r = t.rootMargin ?? A(), i = j(r), a = !1, o = !1, s = null, c = () => {
|
|
188
197
|
o || (s?.(), s = ue(() => {
|
|
189
198
|
s = null, o = !0, n(!0);
|
|
190
199
|
}));
|
|
@@ -207,70 +216,70 @@ function de(e, t) {
|
|
|
207
216
|
rootMargin: r,
|
|
208
217
|
threshold: 0
|
|
209
218
|
});
|
|
210
|
-
return u.observe(e),
|
|
219
|
+
return u.observe(e), M(e, i) && l(!0), () => {
|
|
211
220
|
s?.(), s = null, u.disconnect();
|
|
212
221
|
};
|
|
213
222
|
}
|
|
214
223
|
//#endregion
|
|
215
224
|
//#region src/thumbnail/scrollParallax.ts
|
|
216
|
-
function
|
|
225
|
+
function N() {
|
|
217
226
|
return typeof window > "u" || window.matchMedia("(prefers-reduced-motion: reduce)").matches ? !1 : window.matchMedia("(hover: none), (pointer: coarse)").matches;
|
|
218
227
|
}
|
|
219
|
-
function
|
|
228
|
+
function P(e, t) {
|
|
220
229
|
return ((e.top + e.height / 2) / Math.max(t, 1) - .5) * 2;
|
|
221
230
|
}
|
|
222
|
-
var
|
|
223
|
-
function
|
|
224
|
-
if (
|
|
231
|
+
var F = /* @__PURE__ */ new Set(), I = !1, L = 0;
|
|
232
|
+
function R() {
|
|
233
|
+
if (L = 0, F.size === 0 || typeof window > "u") return;
|
|
225
234
|
let e = window.innerHeight;
|
|
226
|
-
for (let t of
|
|
235
|
+
for (let t of F) {
|
|
227
236
|
if (t.pointerActive?.()) continue;
|
|
228
237
|
let n = t.element.getBoundingClientRect();
|
|
229
|
-
n.bottom < -64 || n.top > e + 64 || t.onParallax(
|
|
238
|
+
n.bottom < -64 || n.top > e + 64 || t.onParallax(P(n, e));
|
|
230
239
|
}
|
|
231
240
|
}
|
|
232
|
-
function
|
|
233
|
-
|
|
241
|
+
function z() {
|
|
242
|
+
L === 0 && (L = requestAnimationFrame(R));
|
|
234
243
|
}
|
|
235
244
|
function fe() {
|
|
236
|
-
|
|
245
|
+
I || typeof window > "u" || (I = !0, window.addEventListener("scroll", z, { passive: !0 }), window.addEventListener("resize", z, { passive: !0 }));
|
|
237
246
|
}
|
|
238
|
-
function
|
|
239
|
-
|
|
247
|
+
function B() {
|
|
248
|
+
F.size > 0 || !I || typeof window > "u" || (I = !1, L !== 0 && (cancelAnimationFrame(L), L = 0), window.removeEventListener("scroll", z), window.removeEventListener("resize", z));
|
|
240
249
|
}
|
|
241
250
|
function pe(e, t) {
|
|
242
|
-
if (!
|
|
251
|
+
if (!N()) return () => {};
|
|
243
252
|
let n = {
|
|
244
253
|
element: e,
|
|
245
254
|
onParallax: t.onParallax,
|
|
246
255
|
pointerActive: t.pointerActive
|
|
247
256
|
};
|
|
248
|
-
return
|
|
249
|
-
|
|
257
|
+
return F.add(n), fe(), n.pointerActive?.() || t.onParallax(P(e.getBoundingClientRect(), window.innerHeight)), () => {
|
|
258
|
+
F.delete(n), B();
|
|
250
259
|
};
|
|
251
260
|
}
|
|
252
261
|
//#endregion
|
|
253
262
|
//#region src/thumbnail/styles.ts
|
|
254
|
-
var me = ":host {\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n}\n\n.liforma-et {\n --liforma-et-parallax-x: 0;\n --liforma-et-parallax-y: 0;\n --liforma-et-bg-scale: 1;\n --liforma-et-fg-scale: 1;\n --liforma-et-avatar-scale: 1;\n --liforma-et-bg-shift: 0px;\n --liforma-et-fg-shift: 0px;\n --liforma-et-avatar-shift: 0px;\n --liforma-et-reveal-duration: 420ms;\n\n box-sizing: border-box;\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n overflow: hidden;\n background: #111;\n color: inherit;\n text-decoration: none;\n cursor: inherit;\n -webkit-tap-highlight-color: transparent;\n}\n\na.liforma-et,\nbutton.liforma-et {\n cursor: pointer;\n}\n\nbutton.liforma-et {\n font: inherit;\n appearance: none;\n}\n\n.liforma-et__placeholder {\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, 0.06), transparent 58%),\n linear-gradient(180deg, #1a1a1a 0%, #101010 100%);\n opacity: 1;\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et--revealed .liforma-et__placeholder {\n opacity: 0;\n}\n\n.liforma-et__media {\n opacity: 0;\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et__media--ready {\n opacity: 1;\n}\n\n.liforma-et__background {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center center;\n transform: translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-bg-shift)),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-bg-shift))\n )\n scale(var(--liforma-et-bg-scale));\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n.liforma-et__avatar {\n position: relative;\n z-index: 2;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center bottom;\n transform: scale(var(--liforma-et-avatar-scale))\n translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-avatar-shift)),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-avatar-shift))\n );\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n/* Gallery plates are typically square in a square tile — contain vs cover is a no-op\n without a zoom. Scale the whole scene from the upper third so Face matches\n player fit (location + avatar crop together). */\n.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.85;\n --liforma-et-bg-scale: 1.85;\n --liforma-et-fg-scale: 1.85;\n}\n\n.liforma-et--fit-face .liforma-et__avatar,\n.liforma-et--fit-face .liforma-et__background,\n.liforma-et--fit-face .liforma-et__foreground {\n transform-origin: 50% 18%;\n}\n\n.liforma-et--fit-face .liforma-et__avatar {\n object-fit: cover;\n object-position: 50% 18%;\n}\n\n/* Bust / medium: less zoom than face so upper chest stays in frame (player 3.75H window). */\n.liforma-et--fit-medium {\n --liforma-et-avatar-scale: 1.35;\n --liforma-et-bg-scale: 1.35;\n --liforma-et-fg-scale: 1.35;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar,\n.liforma-et--fit-medium .liforma-et__background,\n.liforma-et--fit-medium .liforma-et__foreground {\n transform-origin: 50% 28%;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar {\n object-fit: cover;\n object-position: 50% 28%;\n}\n\n.liforma-et__foreground {\n position: absolute;\n inset: 0;\n z-index: 3;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center center;\n pointer-events: none;\n transform: translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-fg-shift) * -1),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-fg-shift) * -1)\n )\n scale(var(--liforma-et-fg-scale));\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n.liforma-et--parallax {\n --liforma-et-bg-scale: 1.08;\n --liforma-et-fg-scale: 1.05;\n --liforma-et-avatar-scale: 1.08;\n --liforma-et-bg-shift: 10px;\n --liforma-et-fg-shift: 4px;\n --liforma-et-avatar-shift: 4px;\n}\n\n/* Promote layers only while parallax is active — avoids N compositor surfaces on galleries. */\n.liforma-et--parallax .liforma-et__background,\n.liforma-et--parallax .liforma-et__foreground,\n.liforma-et--parallax .liforma-et__avatar {\n will-change: transform;\n}\n\n.liforma-et--parallax.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.95;\n --liforma-et-bg-scale: 1.95;\n --liforma-et-fg-scale: 1.95;\n --liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--parallax.liforma-et--fit-medium {\n --liforma-et-avatar-scale: 1.42;\n --liforma-et-bg-scale: 1.42;\n --liforma-et-fg-scale: 1.42;\n --liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--scroll-parallax .liforma-et__background,\n.liforma-et--scroll-parallax .liforma-et__foreground,\n.liforma-et--scroll-parallax .liforma-et__avatar {\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .liforma-et {\n --liforma-et-reveal-duration: 0ms;\n }\n\n .liforma-et--parallax {\n --liforma-et-bg-scale: 1;\n --liforma-et-fg-scale: 1;\n --liforma-et-avatar-scale: 1;\n --liforma-et-bg-shift: 0px;\n --liforma-et-fg-shift: 0px;\n --liforma-et-avatar-shift: 0px;\n }\n\n .liforma-et--parallax.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.85;\n --liforma-et-bg-scale: 1.85;\n --liforma-et-fg-scale: 1.85;\n }\n\n .liforma-et__background,\n .liforma-et__foreground,\n .liforma-et__avatar {\n transition: none;\n }\n}",
|
|
263
|
+
var me = ":host {\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n}\n\n.liforma-et {\n --liforma-et-parallax-x: 0;\n --liforma-et-parallax-y: 0;\n --liforma-et-bg-scale: 1;\n --liforma-et-fg-scale: 1;\n --liforma-et-avatar-scale: 1;\n --liforma-et-bg-shift: 0px;\n --liforma-et-fg-shift: 0px;\n --liforma-et-avatar-shift: 0px;\n --liforma-et-reveal-duration: 420ms;\n\n box-sizing: border-box;\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n overflow: hidden;\n background: #111;\n color: inherit;\n text-decoration: none;\n cursor: inherit;\n -webkit-tap-highlight-color: transparent;\n}\n\na.liforma-et,\nbutton.liforma-et {\n cursor: pointer;\n}\n\nbutton.liforma-et {\n font: inherit;\n appearance: none;\n}\n\n.liforma-et__placeholder {\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, 0.06), transparent 58%),\n linear-gradient(180deg, #1a1a1a 0%, #101010 100%);\n opacity: 1;\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et--revealed .liforma-et__placeholder {\n opacity: 0;\n}\n\n.liforma-et__media {\n opacity: 0;\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et__media--ready {\n opacity: 1;\n}\n\n.liforma-et__background {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center center;\n transform: translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-bg-shift)),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-bg-shift))\n )\n scale(var(--liforma-et-bg-scale));\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n.liforma-et__avatar {\n position: relative;\n z-index: 2;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center bottom;\n transform: scale(var(--liforma-et-avatar-scale))\n translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-avatar-shift)),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-avatar-shift))\n );\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n/* Gallery plates are typically square in a square tile — contain vs cover is a no-op\n without a zoom. Scale the whole scene from the upper third so Face matches\n player fit (location + avatar crop together). */\n.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.85;\n --liforma-et-bg-scale: 1.85;\n --liforma-et-fg-scale: 1.85;\n}\n\n.liforma-et--fit-face .liforma-et__avatar,\n.liforma-et--fit-face .liforma-et__background,\n.liforma-et--fit-face .liforma-et__foreground {\n transform-origin: 50% 18%;\n}\n\n.liforma-et--fit-face .liforma-et__avatar {\n object-fit: cover;\n object-position: 50% 18%;\n}\n\n/* Bust / medium: less zoom than face so upper chest stays in frame (player 3.75H window). */\n.liforma-et--fit-medium {\n --liforma-et-avatar-scale: 1.35;\n --liforma-et-bg-scale: 1.35;\n --liforma-et-fg-scale: 1.35;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar,\n.liforma-et--fit-medium .liforma-et__background,\n.liforma-et--fit-medium .liforma-et__foreground {\n transform-origin: 50% 28%;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar {\n object-fit: cover;\n object-position: 50% 28%;\n}\n\n.liforma-et__foreground {\n position: absolute;\n inset: 0;\n z-index: 3;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center center;\n pointer-events: none;\n transform: translate(\n calc(var(--liforma-et-parallax-x) * var(--liforma-et-fg-shift) * -1),\n calc(var(--liforma-et-parallax-y) * var(--liforma-et-fg-shift) * -1)\n )\n scale(var(--liforma-et-fg-scale));\n transform-origin: center center;\n transition:\n opacity var(--liforma-et-reveal-duration) ease,\n transform 160ms ease;\n}\n\n.liforma-et--parallax {\n --liforma-et-bg-scale: 1.08;\n --liforma-et-fg-scale: 1.05;\n --liforma-et-avatar-scale: 1.08;\n --liforma-et-bg-shift: 10px;\n --liforma-et-fg-shift: 4px;\n --liforma-et-avatar-shift: 4px;\n}\n\n/* Promote layers only while parallax is active — avoids N compositor surfaces on galleries. */\n.liforma-et--parallax .liforma-et__background,\n.liforma-et--parallax .liforma-et__foreground,\n.liforma-et--parallax .liforma-et__avatar {\n will-change: transform;\n}\n\n.liforma-et--parallax.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.95;\n --liforma-et-bg-scale: 1.95;\n --liforma-et-fg-scale: 1.95;\n --liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--parallax.liforma-et--fit-medium {\n --liforma-et-avatar-scale: 1.42;\n --liforma-et-bg-scale: 1.42;\n --liforma-et-fg-scale: 1.42;\n --liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--scroll-parallax .liforma-et__background,\n.liforma-et--scroll-parallax .liforma-et__foreground,\n.liforma-et--scroll-parallax .liforma-et__avatar {\n transition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .liforma-et {\n --liforma-et-reveal-duration: 0ms;\n }\n\n .liforma-et--parallax {\n --liforma-et-bg-scale: 1;\n --liforma-et-fg-scale: 1;\n --liforma-et-avatar-scale: 1;\n --liforma-et-bg-shift: 0px;\n --liforma-et-fg-shift: 0px;\n --liforma-et-avatar-shift: 0px;\n }\n\n .liforma-et--parallax.liforma-et--fit-face {\n --liforma-et-avatar-scale: 1.85;\n --liforma-et-bg-scale: 1.85;\n --liforma-et-fg-scale: 1.85;\n }\n\n .liforma-et__background,\n .liforma-et__foreground,\n .liforma-et__avatar {\n transition: none;\n }\n}", V = !1;
|
|
255
264
|
function he(e) {
|
|
256
|
-
if (typeof document > "u" ||
|
|
265
|
+
if (typeof document > "u" || V) return;
|
|
257
266
|
if (document.querySelector("style[data-liforma-et]")) {
|
|
258
|
-
|
|
267
|
+
V = !0;
|
|
259
268
|
return;
|
|
260
269
|
}
|
|
261
270
|
let t = document.createElement("style");
|
|
262
|
-
t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t),
|
|
271
|
+
t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t), V = !0;
|
|
263
272
|
}
|
|
264
273
|
//#endregion
|
|
265
274
|
//#region src/thumbnail/plateDelivery.ts
|
|
266
|
-
var ge = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",
|
|
275
|
+
var ge = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=", H = null;
|
|
267
276
|
function _e(e) {
|
|
268
277
|
let t = e.trim();
|
|
269
278
|
if (!t || t.startsWith("blob:") || t.startsWith("data:")) return !1;
|
|
270
279
|
let n = t.split(/[?#]/)[0] ?? t, r = /\/avatars\//i.test(n), i = /\/locations\//i.test(n);
|
|
271
280
|
return !r && !i || /\.depth\.webp$/i.test(n) ? !1 : /\.webp$/i.test(n);
|
|
272
281
|
}
|
|
273
|
-
function
|
|
282
|
+
function U(e) {
|
|
274
283
|
if (!_e(e)) return null;
|
|
275
284
|
let t = e.search(/[?#]/);
|
|
276
285
|
if (t < 0) return e.replace(/\.webp$/i, ".avif");
|
|
@@ -278,13 +287,13 @@ function V(e) {
|
|
|
278
287
|
return `${n.replace(/\.webp$/i, ".avif")}${r}`;
|
|
279
288
|
}
|
|
280
289
|
function ve() {
|
|
281
|
-
return typeof Image > "u" ? Promise.resolve(!1) : (
|
|
290
|
+
return typeof Image > "u" ? Promise.resolve(!1) : (H ||= new Promise((e) => {
|
|
282
291
|
let t = new Image();
|
|
283
292
|
t.onload = () => e(t.naturalWidth > 0 && t.naturalHeight > 0), t.onerror = () => e(!1), t.src = ge;
|
|
284
|
-
}),
|
|
293
|
+
}), H);
|
|
285
294
|
}
|
|
286
|
-
function
|
|
287
|
-
return t ?
|
|
295
|
+
function W(e, t) {
|
|
296
|
+
return t ? U(e) ?? e : e;
|
|
288
297
|
}
|
|
289
298
|
function ye(e) {
|
|
290
299
|
let t = e.trim(), n = t.search(/[?#]/), r = n < 0 ? t : t.slice(0, n);
|
|
@@ -298,18 +307,19 @@ function be(e) {
|
|
|
298
307
|
}
|
|
299
308
|
//#endregion
|
|
300
309
|
//#region src/react/ExperienceThumbnail.tsx
|
|
301
|
-
function
|
|
310
|
+
function G(e, t) {
|
|
302
311
|
return `${e} liforma-et__media${t ? " liforma-et__media--ready" : ""}`;
|
|
303
312
|
}
|
|
304
313
|
function xe(c) {
|
|
305
|
-
let { galleryThumb: u, avatarImage: d, backgroundImage: f, foregroundImage: p, alt: m, experienceId: h, href: g, target:
|
|
314
|
+
let { galleryThumb: u, avatarImage: d, backgroundImage: f, foregroundImage: p, alt: m, experienceId: h, href: g, target: ne, rel: _, onClick: v, returnUrl: y, playerBaseUrl: b, parallax: re = !0, fit: ie = "full", lazy: x = !0, className: oe = "", fallbackImage: S, normalizeUrls: C = !0, cdnBaseUrl: w } = c, T = n(null), E = n(!1), [D, le] = r(0), [O, k] = r(0), ue = ee(D, O), A = l(D, O), j = t(() => ae({
|
|
306
315
|
galleryThumb: u,
|
|
307
316
|
avatarImage: d,
|
|
308
317
|
backgroundImage: f,
|
|
309
318
|
foregroundImage: p,
|
|
310
319
|
fallbackImage: S,
|
|
311
320
|
normalize: C,
|
|
312
|
-
locationPlateSize:
|
|
321
|
+
locationPlateSize: ue,
|
|
322
|
+
avatarPlateSize: A,
|
|
313
323
|
cdnBaseUrl: w
|
|
314
324
|
}), [
|
|
315
325
|
u,
|
|
@@ -318,89 +328,90 @@ function xe(c) {
|
|
|
318
328
|
p,
|
|
319
329
|
S,
|
|
320
330
|
C,
|
|
321
|
-
|
|
331
|
+
ue,
|
|
332
|
+
A,
|
|
322
333
|
w
|
|
323
|
-
]),
|
|
334
|
+
]), M = se({
|
|
324
335
|
href: g,
|
|
325
336
|
hasClickHandler: typeof v == "function",
|
|
326
337
|
experienceId: h
|
|
327
|
-
}),
|
|
338
|
+
}), N = M === "anchor" && !g?.trim() && !!h?.trim(), F = !!j?.backgroundImage, I = re !== !1, [L, R] = r(!x), [z, fe] = r(!1), [B, V] = r(!1), [ge, H] = r(!1), [_e, U] = r(!1), [xe, Se] = r(!1), [Ce, K] = r(!1), [q, we] = r(!1), [Te, J] = r(0), [Ee, Y] = r(0), [De, Oe] = r(!1), [ke, X] = r(!1), [Ae, Z] = r(!1), [je, Q] = r(!1), [$, Me] = r(), Ne = j ? De && j.fallbackImage ? j.fallbackImage : j.avatarImage : "";
|
|
328
339
|
e(() => {
|
|
329
340
|
he(me), ve().then((e) => {
|
|
330
|
-
fe(e),
|
|
341
|
+
fe(e), V(!0);
|
|
331
342
|
});
|
|
332
343
|
}, []), e(() => {
|
|
333
|
-
Me(
|
|
344
|
+
Me(ce({
|
|
334
345
|
href: g,
|
|
335
346
|
experienceId: h,
|
|
336
347
|
returnUrl: y,
|
|
337
348
|
playerBaseUrl: b,
|
|
338
|
-
useCurrentPageAsReturnUrl:
|
|
349
|
+
useCurrentPageAsReturnUrl: N && !y?.trim()
|
|
339
350
|
}));
|
|
340
351
|
}, [
|
|
341
352
|
g,
|
|
342
353
|
h,
|
|
343
354
|
y,
|
|
344
355
|
b,
|
|
345
|
-
|
|
356
|
+
N
|
|
346
357
|
]), e(() => {
|
|
347
|
-
|
|
358
|
+
X(!1), Z(!1), Q(!1), Oe(!1), H(!1), U(!1), Se(!1);
|
|
348
359
|
}, [
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
360
|
+
j?.backgroundImage,
|
|
361
|
+
j?.foregroundImage,
|
|
362
|
+
Ne
|
|
352
363
|
]), e(() => {
|
|
353
364
|
let e = T.current;
|
|
354
|
-
if (e) return
|
|
355
|
-
le(e),
|
|
365
|
+
if (e) return te(e, (e, t) => {
|
|
366
|
+
le(e), k(t);
|
|
356
367
|
});
|
|
357
|
-
}, [
|
|
368
|
+
}, [M, $]), e(() => {
|
|
358
369
|
let e = T.current;
|
|
359
370
|
if (e) {
|
|
360
371
|
if (!x) {
|
|
361
|
-
|
|
372
|
+
R(!0);
|
|
362
373
|
return;
|
|
363
374
|
}
|
|
364
375
|
return de(e, { onVisibleChange: (e) => {
|
|
365
|
-
e &&
|
|
376
|
+
e && R(!0);
|
|
366
377
|
} });
|
|
367
378
|
}
|
|
368
379
|
}, [
|
|
369
380
|
x,
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
381
|
+
j,
|
|
382
|
+
M,
|
|
383
|
+
$
|
|
373
384
|
]), e(() => {
|
|
374
385
|
let e = T.current;
|
|
375
|
-
if (!(!e || !
|
|
386
|
+
if (!(!e || !I)) return pe(e, {
|
|
376
387
|
onParallax: (e) => {
|
|
377
|
-
we(!0), E.current || (
|
|
388
|
+
we(!0), E.current || (J(e), Y(0));
|
|
378
389
|
},
|
|
379
390
|
pointerActive: () => E.current
|
|
380
391
|
});
|
|
381
392
|
}, [
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
393
|
+
I,
|
|
394
|
+
j,
|
|
395
|
+
M,
|
|
396
|
+
$
|
|
386
397
|
]);
|
|
387
|
-
let
|
|
388
|
-
if (!
|
|
398
|
+
let Pe = (e) => {
|
|
399
|
+
if (!I || q) return;
|
|
389
400
|
let t = e.currentTarget.getBoundingClientRect();
|
|
390
|
-
t.width <= 0 || t.height <= 0 || (
|
|
391
|
-
},
|
|
401
|
+
t.width <= 0 || t.height <= 0 || (J(((e.clientX - t.left) / t.width - .5) * 2), Y(((e.clientY - t.top) / t.height - .5) * 2));
|
|
402
|
+
}, Fe = (e) => {
|
|
392
403
|
let t = E.current;
|
|
393
|
-
E.current = !1,
|
|
394
|
-
},
|
|
395
|
-
if (!
|
|
396
|
-
E.current = !0, e.pointerType === "mouse" &&
|
|
404
|
+
E.current = !1, K(!1), q && t ? (J(P(e.getBoundingClientRect(), window.innerHeight)), Y(0)) : q || (J(0), Y(0));
|
|
405
|
+
}, Ie = (e) => {
|
|
406
|
+
if (!I) return;
|
|
407
|
+
E.current = !0, e.pointerType === "mouse" && K(!0);
|
|
397
408
|
let t = e.currentTarget, n = () => {
|
|
398
|
-
|
|
409
|
+
Fe(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
|
|
399
410
|
};
|
|
400
411
|
window.addEventListener("pointerup", n), window.addEventListener("pointercancel", n);
|
|
401
|
-
},
|
|
402
|
-
if (v?.(e), !e.defaultPrevented &&
|
|
403
|
-
let t =
|
|
412
|
+
}, Le = (e) => {
|
|
413
|
+
if (v?.(e), !e.defaultPrevented && N && !y?.trim()) {
|
|
414
|
+
let t = ce({
|
|
404
415
|
experienceId: h,
|
|
405
416
|
playerBaseUrl: b,
|
|
406
417
|
useCurrentPageAsReturnUrl: !0
|
|
@@ -408,123 +419,123 @@ function xe(c) {
|
|
|
408
419
|
t && e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && (e.preventDefault(), window.location.assign(t));
|
|
409
420
|
}
|
|
410
421
|
};
|
|
411
|
-
if (!
|
|
412
|
-
let
|
|
422
|
+
if (!j) return null;
|
|
423
|
+
let Re = I && (Ce || q), ze = L && B && (Ae || ke || je), Be = [
|
|
413
424
|
"liforma-et",
|
|
414
|
-
|
|
425
|
+
F ? "liforma-et--scene" : "",
|
|
415
426
|
s(ie),
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
].filter(Boolean).join(" "),
|
|
427
|
+
Re ? "liforma-et--parallax" : "",
|
|
428
|
+
q ? "liforma-et--scroll-parallax" : "",
|
|
429
|
+
L && !ze ? "liforma-et--loading" : "",
|
|
430
|
+
ze ? "liforma-et--revealed" : "",
|
|
431
|
+
oe
|
|
432
|
+
].filter(Boolean).join(" "), Ve = {
|
|
422
433
|
"--liforma-et-parallax-x": Te,
|
|
423
434
|
"--liforma-et-parallax-y": Ee
|
|
424
|
-
},
|
|
435
|
+
}, He = (e, t) => {
|
|
425
436
|
e.complete && t(!0);
|
|
426
|
-
},
|
|
437
|
+
}, Ue = /* @__PURE__ */ o(i, { children: [
|
|
427
438
|
/* @__PURE__ */ a("span", {
|
|
428
439
|
className: "liforma-et__placeholder",
|
|
429
440
|
"aria-hidden": "true"
|
|
430
441
|
}),
|
|
431
|
-
|
|
432
|
-
className:
|
|
433
|
-
src:
|
|
442
|
+
L && B && j.backgroundImage ? /* @__PURE__ */ a("img", {
|
|
443
|
+
className: G("liforma-et__background", ke),
|
|
444
|
+
src: W(j.backgroundImage, z),
|
|
434
445
|
alt: "",
|
|
435
446
|
decoding: "async",
|
|
436
447
|
ref: (e) => {
|
|
437
|
-
e &&
|
|
448
|
+
e && He(e, X);
|
|
438
449
|
},
|
|
439
|
-
onLoad: () =>
|
|
450
|
+
onLoad: () => X(!0),
|
|
440
451
|
onError: (e) => {
|
|
441
452
|
let t = e.currentTarget, n = be(t.src);
|
|
442
453
|
if (n && !ge) {
|
|
443
|
-
|
|
454
|
+
H(!0), t.src = n;
|
|
444
455
|
return;
|
|
445
456
|
}
|
|
446
|
-
|
|
457
|
+
X(!0);
|
|
447
458
|
}
|
|
448
459
|
}) : null,
|
|
449
|
-
|
|
450
|
-
className:
|
|
451
|
-
src:
|
|
460
|
+
L && B && Ne ? /* @__PURE__ */ a("img", {
|
|
461
|
+
className: G("liforma-et__avatar", Ae),
|
|
462
|
+
src: W(Ne, z),
|
|
452
463
|
alt: "",
|
|
453
464
|
decoding: "async",
|
|
454
465
|
ref: (e) => {
|
|
455
|
-
e &&
|
|
466
|
+
e && He(e, Z);
|
|
456
467
|
},
|
|
457
|
-
onLoad: () =>
|
|
468
|
+
onLoad: () => Z(!0),
|
|
458
469
|
onError: (e) => {
|
|
459
470
|
let t = e.currentTarget, n = ye(t.src);
|
|
460
471
|
if (n && !xe) {
|
|
461
472
|
Se(!0), t.src = n;
|
|
462
473
|
return;
|
|
463
474
|
}
|
|
464
|
-
|
|
475
|
+
j.fallbackImage ? Oe(!0) : Z(!0);
|
|
465
476
|
}
|
|
466
477
|
}) : null,
|
|
467
|
-
|
|
468
|
-
className:
|
|
469
|
-
src:
|
|
478
|
+
L && B && j.foregroundImage ? /* @__PURE__ */ a("img", {
|
|
479
|
+
className: G("liforma-et__foreground", je),
|
|
480
|
+
src: W(j.foregroundImage, z),
|
|
470
481
|
alt: "",
|
|
471
482
|
decoding: "async",
|
|
472
483
|
ref: (e) => {
|
|
473
|
-
e &&
|
|
484
|
+
e && He(e, Q);
|
|
474
485
|
},
|
|
475
|
-
onLoad: () =>
|
|
486
|
+
onLoad: () => Q(!0),
|
|
476
487
|
onError: (e) => {
|
|
477
488
|
let t = e.currentTarget, n = be(t.src);
|
|
478
489
|
if (n && !_e) {
|
|
479
|
-
|
|
490
|
+
U(!0), t.src = n;
|
|
480
491
|
return;
|
|
481
492
|
}
|
|
482
|
-
|
|
493
|
+
Q(!0);
|
|
483
494
|
}
|
|
484
495
|
}) : null
|
|
485
|
-
] }),
|
|
486
|
-
onPointerDown:
|
|
487
|
-
onPointerUp: (e) =>
|
|
488
|
-
onPointerCancel: (e) =>
|
|
496
|
+
] }), We = {
|
|
497
|
+
onPointerDown: Ie,
|
|
498
|
+
onPointerUp: (e) => Fe(e.currentTarget),
|
|
499
|
+
onPointerCancel: (e) => Fe(e.currentTarget),
|
|
489
500
|
onPointerEnter: (e) => {
|
|
490
|
-
|
|
501
|
+
I && e.pointerType === "mouse" && K(!0);
|
|
491
502
|
},
|
|
492
|
-
onPointerMove:
|
|
503
|
+
onPointerMove: Pe,
|
|
493
504
|
onPointerLeave: () => {
|
|
494
|
-
E.current || (
|
|
505
|
+
E.current || (K(!1), q || (J(0), Y(0)));
|
|
495
506
|
}
|
|
496
|
-
},
|
|
507
|
+
}, Ge = (e) => {
|
|
497
508
|
T.current = e;
|
|
498
509
|
};
|
|
499
|
-
return
|
|
500
|
-
ref:
|
|
501
|
-
className:
|
|
502
|
-
style:
|
|
503
|
-
href:
|
|
504
|
-
target:
|
|
505
|
-
rel:
|
|
510
|
+
return M === "anchor" && $ ? /* @__PURE__ */ a("a", {
|
|
511
|
+
ref: Ge,
|
|
512
|
+
className: Be,
|
|
513
|
+
style: Ve,
|
|
514
|
+
href: $,
|
|
515
|
+
target: ne,
|
|
516
|
+
rel: _,
|
|
506
517
|
"aria-label": m,
|
|
507
|
-
onClick:
|
|
508
|
-
...
|
|
509
|
-
children:
|
|
510
|
-
}) :
|
|
518
|
+
onClick: Le,
|
|
519
|
+
...We,
|
|
520
|
+
children: Ue
|
|
521
|
+
}) : M === "button" ? /* @__PURE__ */ a("button", {
|
|
511
522
|
type: "button",
|
|
512
|
-
ref:
|
|
513
|
-
className:
|
|
514
|
-
style:
|
|
523
|
+
ref: Ge,
|
|
524
|
+
className: Be,
|
|
525
|
+
style: Ve,
|
|
515
526
|
"aria-label": m,
|
|
516
|
-
onClick:
|
|
517
|
-
...
|
|
518
|
-
children:
|
|
527
|
+
onClick: Le,
|
|
528
|
+
...We,
|
|
529
|
+
children: Ue
|
|
519
530
|
}) : /* @__PURE__ */ a("div", {
|
|
520
|
-
ref:
|
|
521
|
-
className:
|
|
522
|
-
style:
|
|
531
|
+
ref: Ge,
|
|
532
|
+
className: Be,
|
|
533
|
+
style: Ve,
|
|
523
534
|
role: m ? "img" : void 0,
|
|
524
535
|
"aria-label": m || void 0,
|
|
525
536
|
"aria-hidden": m ? void 0 : !0,
|
|
526
|
-
...
|
|
527
|
-
children:
|
|
537
|
+
...We,
|
|
538
|
+
children: Ue
|
|
528
539
|
});
|
|
529
540
|
}
|
|
530
541
|
//#endregion
|