@liforma/client 0.4.15 → 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.
Files changed (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/next/index.js +619 -608
  3. package/dist/next/index.js.map +1 -1
  4. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  5. package/dist/next/thumbnail/avatarPlate.d.ts +11 -0
  6. package/dist/next/thumbnail/avatarPlate.d.ts.map +1 -0
  7. package/dist/next/thumbnail/avatarPlate.test.d.ts +2 -0
  8. package/dist/next/thumbnail/avatarPlate.test.d.ts.map +1 -0
  9. package/dist/next/thumbnail/expandAssetUrl.d.ts +3 -2
  10. package/dist/next/thumbnail/expandAssetUrl.d.ts.map +1 -1
  11. package/dist/next/thumbnail/index.d.ts +2 -0
  12. package/dist/next/thumbnail/index.d.ts.map +1 -1
  13. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +7 -3
  14. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  15. package/dist/next/thumbnail.js +211 -200
  16. package/dist/next/thumbnail.js.map +1 -1
  17. package/dist/npm/index.js +496 -492
  18. package/dist/npm/index.js.map +1 -1
  19. package/dist/npm/thumbnail/avatarPlate.d.ts +11 -0
  20. package/dist/npm/thumbnail/avatarPlate.d.ts.map +1 -0
  21. package/dist/npm/thumbnail/expandAssetUrl.d.ts +3 -2
  22. package/dist/npm/thumbnail/expandAssetUrl.d.ts.map +1 -1
  23. package/dist/npm/thumbnail/index.d.ts +2 -0
  24. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  25. package/dist/npm/thumbnail/index.js +123 -110
  26. package/dist/npm/thumbnail/index.js.map +1 -1
  27. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +7 -3
  28. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  29. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  30. package/dist/react/index.js +749 -738
  31. package/dist/react/index.js.map +1 -1
  32. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  33. package/dist/react/thumbnail/avatarPlate.d.ts +11 -0
  34. package/dist/react/thumbnail/avatarPlate.d.ts.map +1 -0
  35. package/dist/react/thumbnail/avatarPlate.test.d.ts +2 -0
  36. package/dist/react/thumbnail/avatarPlate.test.d.ts.map +1 -0
  37. package/dist/react/thumbnail/expandAssetUrl.d.ts +3 -2
  38. package/dist/react/thumbnail/expandAssetUrl.d.ts.map +1 -1
  39. package/dist/react/thumbnail/index.d.ts +2 -0
  40. package/dist/react/thumbnail/index.d.ts.map +1 -1
  41. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +7 -3
  42. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  43. package/dist/react/thumbnail.js +211 -200
  44. package/dist/react/thumbnail.js.map +1 -1
  45. package/dist/sdk/v2/client.js +1 -1
  46. package/dist/sdk/v2/client.js.map +1 -1
  47. package/dist/sdk/v2/thumbnail.js +2 -2
  48. package/dist/sdk/v2/thumbnail.js.map +1 -1
  49. package/dist/svelte/ExperienceThumbnail.svelte +3 -0
  50. package/package.json +1 -1
@@ -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/locationPlate.ts
11
- var c = /(-)(\d+x\d+)(\.(?:webp|avif))(\?|$)/i;
10
+ //#region src/thumbnail/avatarPlate.ts
11
+ var c = /(\/avatars\/[^/]+\/)(\d+)(\/)/i;
12
12
  function l(e, t) {
13
- return !Number.isFinite(e) || !Number.isFinite(t) || e < 1 || t < 1 || e <= t ? "256x256" : t <= 225 ? "400x225" : e > 800 || t > 450 ? "1672x941" : "800x450";
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, a) => `${n}${t}${i}${a}`);
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 d = /-(256x256|400x225|400x450|800x450|836x971|1672x941|167x94)$/i;
28
- function f(e) {
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 p(e) {
43
+ function h(e) {
32
44
  return /^https?:\/\//i.test(e) || e.startsWith("//");
33
45
  }
34
- function m(e) {
46
+ function g(e) {
35
47
  return e.startsWith("//") ? `https:${e}` : e;
36
48
  }
37
- function h(e) {
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 g(e, t, n = "") {
59
+ function _(e, t, n = "") {
48
60
  return `${e}${t.startsWith("/") ? t : `/${t}`}${n}`;
49
61
  }
50
- function _(e, t, n) {
62
+ function v(e, t, n) {
51
63
  let r = e.trim();
52
64
  if (!r) return r;
53
- let i = f(n);
54
- if (p(r)) return u(m(r), t);
55
- let { pathname: a, search: o } = h(r.replace(/\\/g, "/")), s = a;
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) ? g(i, s, o) : r;
58
- if (/\.webp$/i.test(s) && !d.test(s.replace(/\.webp$/i, ""))) return g(i, s, o);
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(d, ""), `${i}/locations/${c}-${t}.webp${o}`;
72
+ return c = c.replace(p, ""), `${i}/locations/${c}-${t}.webp${o}`;
61
73
  }
62
- function te(e, t) {
63
- let n = e.trim();
64
- if (!n) return n;
65
- let r = f(t);
66
- if (p(n)) return m(n);
67
- let { pathname: i, search: a } = h(n.replace(/\\/g, "/")), o = i;
68
- if (!o.startsWith("/")) if (/^avatars\//i.test(o)) o = `/${o}`;
69
- else if (/^[^/]+$/.test(o) && !a) return `${r}/avatars/${o}/256/${o}_neutral.webp`;
70
- else return n;
71
- if (!/^\/avatars\//i.test(o)) return n;
72
- let s = o.replace(/^\/avatars\//i, "").replace(/\/+$/, "");
73
- return s && !s.includes("/") && !a ? `${r}/avatars/${s}/256/${s}_neutral.webp` : g(r, o, a);
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 v = /(\/avatars\/[^/]+\/)(\d+)(\/)/i, y = /_CH(\.webp)/i;
78
- function b(e) {
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 ne(e, t = "256x256", n) {
82
- let r = e.trim();
83
- if (!r) return r;
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 re(e) {
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 = f(e.cdnBaseUrl), s = e.normalize !== !1, c = (e) => !s && /^https?:\/\//i.test(e.trim()) ? e.trim() : ne(e, a, o), l = (e) => !s && /^https?:\/\//i.test(e.trim()) ? e.trim() : _(e, a, 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: c(t),
94
- ...n ? { backgroundImage: l(n) } : {},
95
- ...r ? { foregroundImage: l(r) } : {},
96
- ...i ? { fallbackImage: c(i) } : {}
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 ie() {
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 x = "https://player.liforma.ai", ae = "http://localhost:3002";
113
- function oe(e) {
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 S(e) {
125
+ function C(e) {
117
126
  let t = e?.trim();
118
- return t ? t.replace(/\/$/, "") : ie() ? ae : x;
127
+ return t ? t.replace(/\/$/, "") : x() ? S : oe;
119
128
  }
120
- function C(e) {
121
- let t = e.experienceId.trim(), n = S(e.playerBaseUrl), r = new URL(`${n}/${encodeURIComponent(t)}`), i = e.returnUrl?.trim();
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 se(e) {
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), C({
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 w() {
145
+ function T() {
137
146
  return typeof window > "u" ? !1 : window.matchMedia("(hover: none), (pointer: coarse)").matches;
138
147
  }
139
- var T = 0, E = [];
140
- function ce() {
141
- return w() ? 4 : Infinity;
142
- }
148
+ var E = 0, D = [];
143
149
  function le() {
144
- return w() ? 160 : 0;
150
+ return T() ? 4 : Infinity;
145
151
  }
146
- function D() {
147
- let e = ce();
148
- for (; T < e && E.length > 0;) {
149
- let e = E.shift();
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
- T += 1, e.start();
152
- let t = le();
160
+ E += 1, e.start();
161
+ let t = O();
153
162
  if (t <= 0) {
154
- T = Math.max(0, T - 1);
163
+ E = Math.max(0, E - 1);
155
164
  continue;
156
165
  }
157
166
  window.setTimeout(() => {
158
- T = Math.max(0, T - 1), D();
167
+ E = Math.max(0, E - 1), k();
159
168
  }, t);
160
169
  }
161
170
  }
162
171
  function ue(e) {
163
- if (!w()) return e(), () => {};
172
+ if (!T()) return e(), () => {};
164
173
  let t = {
165
174
  start: e,
166
175
  cancelled: !1
167
176
  };
168
- return E.push(t), D(), () => {
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 O() {
175
- return w() ? "96px 0px" : "280px 0px";
183
+ function A() {
184
+ return T() ? "96px 0px" : "280px 0px";
176
185
  }
177
- function k(e) {
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 A(e, t) {
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 ?? O(), i = k(r), a = !1, o = !1, s = null, c = () => {
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), A(e, i) && l(!0), () => {
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 j() {
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 M(e, t) {
228
+ function P(e, t) {
220
229
  return ((e.top + e.height / 2) / Math.max(t, 1) - .5) * 2;
221
230
  }
222
- var N = /* @__PURE__ */ new Set(), P = !1, F = 0;
223
- function I() {
224
- if (F = 0, N.size === 0 || typeof window > "u") return;
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 N) {
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(M(n, e));
238
+ n.bottom < -64 || n.top > e + 64 || t.onParallax(P(n, e));
230
239
  }
231
240
  }
232
- function L() {
233
- F === 0 && (F = requestAnimationFrame(I));
241
+ function z() {
242
+ L === 0 && (L = requestAnimationFrame(R));
234
243
  }
235
244
  function fe() {
236
- P || typeof window > "u" || (P = !0, window.addEventListener("scroll", L, { passive: !0 }), window.addEventListener("resize", L, { passive: !0 }));
245
+ I || typeof window > "u" || (I = !0, window.addEventListener("scroll", z, { passive: !0 }), window.addEventListener("resize", z, { passive: !0 }));
237
246
  }
238
- function R() {
239
- N.size > 0 || !P || typeof window > "u" || (P = !1, F !== 0 && (cancelAnimationFrame(F), F = 0), window.removeEventListener("scroll", L), window.removeEventListener("resize", L));
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 (!j()) return () => {};
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 N.add(n), fe(), n.pointerActive?.() || t.onParallax(M(e.getBoundingClientRect(), window.innerHeight)), () => {
249
- N.delete(n), R();
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}", z = !1;
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" || z) return;
265
+ if (typeof document > "u" || V) return;
257
266
  if (document.querySelector("style[data-liforma-et]")) {
258
- z = !0;
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), z = !0;
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=", B = null;
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 V(e) {
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) : (B ||= new Promise((e) => {
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
- }), B);
293
+ }), H);
285
294
  }
286
- function H(e, t) {
287
- return t ? V(e) ?? e : e;
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 U(e, t) {
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: _, rel: te, onClick: v, returnUrl: y, playerBaseUrl: b, parallax: ne = !0, fit: ie = "full", lazy: x = !0, className: ae = "", fallbackImage: S, normalizeUrls: C = !0, cdnBaseUrl: w } = c, T = n(null), E = n(!1), [ce, le] = r(0), [D, ue] = r(0), O = l(ce, D), k = t(() => re({
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: O,
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
- O,
331
+ ue,
332
+ A,
322
333
  w
323
- ]), A = oe({
334
+ ]), M = se({
324
335
  href: g,
325
336
  hasClickHandler: typeof v == "function",
326
337
  experienceId: h
327
- }), j = A === "anchor" && !g?.trim() && !!h?.trim(), N = !!k?.backgroundImage, P = ne !== !1, [F, I] = r(!x), [L, fe] = r(!1), [R, z] = r(!1), [ge, B] = r(!1), [_e, V] = r(!1), [xe, Se] = r(!1), [Ce, W] = r(!1), [G, we] = r(!1), [Te, K] = r(0), [Ee, q] = r(0), [De, Oe] = r(!1), [ke, J] = r(!1), [Ae, Y] = r(!1), [je, X] = r(!1), [Z, Me] = r(), Q = k ? De && k.fallbackImage ? k.fallbackImage : k.avatarImage : "";
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), z(!0);
341
+ fe(e), V(!0);
331
342
  });
332
343
  }, []), e(() => {
333
- Me(se({
344
+ Me(ce({
334
345
  href: g,
335
346
  experienceId: h,
336
347
  returnUrl: y,
337
348
  playerBaseUrl: b,
338
- useCurrentPageAsReturnUrl: j && !y?.trim()
349
+ useCurrentPageAsReturnUrl: N && !y?.trim()
339
350
  }));
340
351
  }, [
341
352
  g,
342
353
  h,
343
354
  y,
344
355
  b,
345
- j
356
+ N
346
357
  ]), e(() => {
347
- J(!1), Y(!1), X(!1), Oe(!1), B(!1), V(!1), Se(!1);
358
+ X(!1), Z(!1), Q(!1), Oe(!1), H(!1), U(!1), Se(!1);
348
359
  }, [
349
- k?.backgroundImage,
350
- k?.foregroundImage,
351
- Q
360
+ j?.backgroundImage,
361
+ j?.foregroundImage,
362
+ Ne
352
363
  ]), e(() => {
353
364
  let e = T.current;
354
- if (e) return ee(e, (e, t) => {
355
- le(e), ue(t);
365
+ if (e) return te(e, (e, t) => {
366
+ le(e), k(t);
356
367
  });
357
- }, [A, Z]), e(() => {
368
+ }, [M, $]), e(() => {
358
369
  let e = T.current;
359
370
  if (e) {
360
371
  if (!x) {
361
- I(!0);
372
+ R(!0);
362
373
  return;
363
374
  }
364
375
  return de(e, { onVisibleChange: (e) => {
365
- e && I(!0);
376
+ e && R(!0);
366
377
  } });
367
378
  }
368
379
  }, [
369
380
  x,
370
- k,
371
- A,
372
- Z
381
+ j,
382
+ M,
383
+ $
373
384
  ]), e(() => {
374
385
  let e = T.current;
375
- if (!(!e || !P)) return pe(e, {
386
+ if (!(!e || !I)) return pe(e, {
376
387
  onParallax: (e) => {
377
- we(!0), E.current || (K(e), q(0));
388
+ we(!0), E.current || (J(e), Y(0));
378
389
  },
379
390
  pointerActive: () => E.current
380
391
  });
381
392
  }, [
382
- P,
383
- k,
384
- A,
385
- Z
393
+ I,
394
+ j,
395
+ M,
396
+ $
386
397
  ]);
387
- let Ne = (e) => {
388
- if (!P || G) return;
398
+ let Pe = (e) => {
399
+ if (!I || q) return;
389
400
  let t = e.currentTarget.getBoundingClientRect();
390
- t.width <= 0 || t.height <= 0 || (K(((e.clientX - t.left) / t.width - .5) * 2), q(((e.clientY - t.top) / t.height - .5) * 2));
391
- }, $ = (e) => {
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, W(!1), G && t ? (K(M(e.getBoundingClientRect(), window.innerHeight)), q(0)) : G || (K(0), q(0));
394
- }, Pe = (e) => {
395
- if (!P) return;
396
- E.current = !0, e.pointerType === "mouse" && W(!0);
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
- $(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
409
+ Fe(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
399
410
  };
400
411
  window.addEventListener("pointerup", n), window.addEventListener("pointercancel", n);
401
- }, Fe = (e) => {
402
- if (v?.(e), !e.defaultPrevented && j && !y?.trim()) {
403
- let t = se({
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 (!k) return null;
412
- let Ie = P && (Ce || G), Le = F && R && (Ae || ke || je), Re = [
422
+ if (!j) return null;
423
+ let Re = I && (Ce || q), ze = L && B && (Ae || ke || je), Be = [
413
424
  "liforma-et",
414
- N ? "liforma-et--scene" : "",
425
+ F ? "liforma-et--scene" : "",
415
426
  s(ie),
416
- Ie ? "liforma-et--parallax" : "",
417
- G ? "liforma-et--scroll-parallax" : "",
418
- F && !Le ? "liforma-et--loading" : "",
419
- Le ? "liforma-et--revealed" : "",
420
- ae
421
- ].filter(Boolean).join(" "), ze = {
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
- }, Be = (e, t) => {
435
+ }, He = (e, t) => {
425
436
  e.complete && t(!0);
426
- }, Ve = /* @__PURE__ */ o(i, { children: [
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
- F && R && k.backgroundImage ? /* @__PURE__ */ a("img", {
432
- className: U("liforma-et__background", ke),
433
- src: H(k.backgroundImage, L),
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 && Be(e, J);
448
+ e && He(e, X);
438
449
  },
439
- onLoad: () => J(!0),
450
+ onLoad: () => X(!0),
440
451
  onError: (e) => {
441
452
  let t = e.currentTarget, n = be(t.src);
442
453
  if (n && !ge) {
443
- B(!0), t.src = n;
454
+ H(!0), t.src = n;
444
455
  return;
445
456
  }
446
- J(!0);
457
+ X(!0);
447
458
  }
448
459
  }) : null,
449
- F && R && Q ? /* @__PURE__ */ a("img", {
450
- className: U("liforma-et__avatar", Ae),
451
- src: H(Q, L),
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 && Be(e, Y);
466
+ e && He(e, Z);
456
467
  },
457
- onLoad: () => Y(!0),
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
- k.fallbackImage ? Oe(!0) : Y(!0);
475
+ j.fallbackImage ? Oe(!0) : Z(!0);
465
476
  }
466
477
  }) : null,
467
- F && R && k.foregroundImage ? /* @__PURE__ */ a("img", {
468
- className: U("liforma-et__foreground", je),
469
- src: H(k.foregroundImage, L),
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 && Be(e, X);
484
+ e && He(e, Q);
474
485
  },
475
- onLoad: () => X(!0),
486
+ onLoad: () => Q(!0),
476
487
  onError: (e) => {
477
488
  let t = e.currentTarget, n = be(t.src);
478
489
  if (n && !_e) {
479
- V(!0), t.src = n;
490
+ U(!0), t.src = n;
480
491
  return;
481
492
  }
482
- X(!0);
493
+ Q(!0);
483
494
  }
484
495
  }) : null
485
- ] }), He = {
486
- onPointerDown: Pe,
487
- onPointerUp: (e) => $(e.currentTarget),
488
- onPointerCancel: (e) => $(e.currentTarget),
496
+ ] }), We = {
497
+ onPointerDown: Ie,
498
+ onPointerUp: (e) => Fe(e.currentTarget),
499
+ onPointerCancel: (e) => Fe(e.currentTarget),
489
500
  onPointerEnter: (e) => {
490
- P && e.pointerType === "mouse" && W(!0);
501
+ I && e.pointerType === "mouse" && K(!0);
491
502
  },
492
- onPointerMove: Ne,
503
+ onPointerMove: Pe,
493
504
  onPointerLeave: () => {
494
- E.current || (W(!1), G || (K(0), q(0)));
505
+ E.current || (K(!1), q || (J(0), Y(0)));
495
506
  }
496
- }, Ue = (e) => {
507
+ }, Ge = (e) => {
497
508
  T.current = e;
498
509
  };
499
- return A === "anchor" && Z ? /* @__PURE__ */ a("a", {
500
- ref: Ue,
501
- className: Re,
502
- style: ze,
503
- href: Z,
504
- target: _,
505
- rel: te,
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: Fe,
508
- ...He,
509
- children: Ve
510
- }) : A === "button" ? /* @__PURE__ */ a("button", {
518
+ onClick: Le,
519
+ ...We,
520
+ children: Ue
521
+ }) : M === "button" ? /* @__PURE__ */ a("button", {
511
522
  type: "button",
512
- ref: Ue,
513
- className: Re,
514
- style: ze,
523
+ ref: Ge,
524
+ className: Be,
525
+ style: Ve,
515
526
  "aria-label": m,
516
- onClick: Fe,
517
- ...He,
518
- children: Ve
527
+ onClick: Le,
528
+ ...We,
529
+ children: Ue
519
530
  }) : /* @__PURE__ */ a("div", {
520
- ref: Ue,
521
- className: Re,
522
- style: ze,
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
- ...He,
527
- children: Ve
537
+ ...We,
538
+ children: Ue
528
539
  });
529
540
  }
530
541
  //#endregion