@liforma/client 0.4.9 → 0.4.11

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 (138) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/next/index.js +763 -623
  3. package/dist/next/index.js.map +1 -1
  4. package/dist/next/react/ExperienceThumbnail.d.ts +2 -0
  5. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  6. package/dist/next/react/ExperienceWidget.d.ts +3 -0
  7. package/dist/next/react/ExperienceWidget.d.ts.map +1 -1
  8. package/dist/next/thumbnail/expandAssetUrl.d.ts +17 -0
  9. package/dist/next/thumbnail/expandAssetUrl.d.ts.map +1 -0
  10. package/dist/next/thumbnail/expandAssetUrl.test.d.ts +2 -0
  11. package/dist/next/thumbnail/expandAssetUrl.test.d.ts.map +1 -0
  12. package/dist/next/thumbnail/index.d.ts +3 -0
  13. package/dist/next/thumbnail/index.d.ts.map +1 -1
  14. package/dist/next/thumbnail/locationPlate.d.ts +13 -0
  15. package/dist/next/thumbnail/locationPlate.d.ts.map +1 -0
  16. package/dist/next/thumbnail/locationPlate.test.d.ts +2 -0
  17. package/dist/next/thumbnail/locationPlate.test.d.ts.map +1 -0
  18. package/dist/next/thumbnail/styles.d.ts.map +1 -1
  19. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  20. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  21. package/dist/next/thumbnail/types.d.ts +7 -1
  22. package/dist/next/thumbnail/types.d.ts.map +1 -1
  23. package/dist/next/thumbnail.js +273 -192
  24. package/dist/next/thumbnail.js.map +1 -1
  25. package/dist/next/v2/embed/iframeHost.d.ts +6 -2
  26. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  27. package/dist/next/v2/embed/protocol.d.ts +25 -2
  28. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  29. package/dist/next/v2/experience.d.ts +25 -3
  30. package/dist/next/v2/experience.d.ts.map +1 -1
  31. package/dist/next/v2/shims/embedBaseUrl.d.ts +15 -1
  32. package/dist/next/v2/shims/embedBaseUrl.d.ts.map +1 -1
  33. package/dist/next/v2/types/sessionInteraction.d.ts +13 -1
  34. package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -1
  35. package/dist/next/v2/types/sessionManifest.d.ts +1 -0
  36. package/dist/next/v2/types/sessionManifest.d.ts.map +1 -1
  37. package/dist/next/v2/types/stage.d.ts +8 -0
  38. package/dist/next/v2/types/stage.d.ts.map +1 -0
  39. package/dist/next/widget/mountExperienceWidget.d.ts.map +1 -1
  40. package/dist/next/widget/types.d.ts +1 -0
  41. package/dist/next/widget/types.d.ts.map +1 -1
  42. package/dist/npm/index.js +566 -454
  43. package/dist/npm/index.js.map +1 -1
  44. package/dist/npm/thumbnail/expandAssetUrl.d.ts +17 -0
  45. package/dist/npm/thumbnail/expandAssetUrl.d.ts.map +1 -0
  46. package/dist/npm/thumbnail/index.d.ts +3 -0
  47. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  48. package/dist/npm/thumbnail/index.js +151 -75
  49. package/dist/npm/thumbnail/index.js.map +1 -1
  50. package/dist/npm/thumbnail/locationPlate.d.ts +13 -0
  51. package/dist/npm/thumbnail/locationPlate.d.ts.map +1 -0
  52. package/dist/npm/thumbnail/styles.d.ts.map +1 -1
  53. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  54. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  55. package/dist/npm/thumbnail/types.d.ts +7 -1
  56. package/dist/npm/thumbnail/types.d.ts.map +1 -1
  57. package/dist/npm/v2/embed/iframeHost.d.ts +6 -2
  58. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  59. package/dist/npm/v2/embed/protocol.d.ts +25 -2
  60. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  61. package/dist/npm/v2/experience.d.ts +25 -3
  62. package/dist/npm/v2/experience.d.ts.map +1 -1
  63. package/dist/npm/v2/index.d.ts +2 -1
  64. package/dist/npm/v2/index.d.ts.map +1 -1
  65. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  66. package/dist/npm/v2/liforma-experience.d.ts +2 -0
  67. package/dist/npm/v2/liforma-experience.d.ts.map +1 -1
  68. package/dist/npm/v2/npm.d.ts +2 -1
  69. package/dist/npm/v2/npm.d.ts.map +1 -1
  70. package/dist/npm/v2/shims/embedBaseUrl.d.ts +15 -1
  71. package/dist/npm/v2/shims/embedBaseUrl.d.ts.map +1 -1
  72. package/dist/npm/v2/types/sessionInteraction.d.ts +13 -1
  73. package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -1
  74. package/dist/npm/v2/types/sessionManifest.d.ts +1 -0
  75. package/dist/npm/v2/types/sessionManifest.d.ts.map +1 -1
  76. package/dist/npm/v2/types/sessionManifestSchema.d.ts +17 -0
  77. package/dist/npm/v2/types/sessionManifestSchema.d.ts.map +1 -1
  78. package/dist/npm/v2/types/stage.d.ts +8 -0
  79. package/dist/npm/v2/types/stage.d.ts.map +1 -0
  80. package/dist/npm/widget/mountExperienceWidget.d.ts.map +1 -1
  81. package/dist/npm/widget/types.d.ts +1 -0
  82. package/dist/npm/widget/types.d.ts.map +1 -1
  83. package/dist/react/component/experienceComponentRuntime.d.ts +4 -0
  84. package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -1
  85. package/dist/react/component/experienceComponentTypes.d.ts +15 -1
  86. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  87. package/dist/react/index.js +884 -719
  88. package/dist/react/index.js.map +1 -1
  89. package/dist/react/react/Experience.d.ts.map +1 -1
  90. package/dist/react/react/ExperienceThumbnail.d.ts +2 -0
  91. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  92. package/dist/react/react/ExperienceWidget.d.ts +3 -0
  93. package/dist/react/react/ExperienceWidget.d.ts.map +1 -1
  94. package/dist/react/thumbnail/expandAssetUrl.d.ts +17 -0
  95. package/dist/react/thumbnail/expandAssetUrl.d.ts.map +1 -0
  96. package/dist/react/thumbnail/expandAssetUrl.test.d.ts +2 -0
  97. package/dist/react/thumbnail/expandAssetUrl.test.d.ts.map +1 -0
  98. package/dist/react/thumbnail/index.d.ts +3 -0
  99. package/dist/react/thumbnail/index.d.ts.map +1 -1
  100. package/dist/react/thumbnail/locationPlate.d.ts +13 -0
  101. package/dist/react/thumbnail/locationPlate.d.ts.map +1 -0
  102. package/dist/react/thumbnail/locationPlate.test.d.ts +2 -0
  103. package/dist/react/thumbnail/locationPlate.test.d.ts.map +1 -0
  104. package/dist/react/thumbnail/styles.d.ts.map +1 -1
  105. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  106. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  107. package/dist/react/thumbnail/types.d.ts +7 -1
  108. package/dist/react/thumbnail/types.d.ts.map +1 -1
  109. package/dist/react/thumbnail.js +273 -192
  110. package/dist/react/thumbnail.js.map +1 -1
  111. package/dist/react/v2/embed/iframeHost.d.ts +6 -2
  112. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  113. package/dist/react/v2/embed/protocol.d.ts +25 -2
  114. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  115. package/dist/react/v2/experience.d.ts +25 -3
  116. package/dist/react/v2/experience.d.ts.map +1 -1
  117. package/dist/react/v2/shims/embedBaseUrl.d.ts +15 -1
  118. package/dist/react/v2/shims/embedBaseUrl.d.ts.map +1 -1
  119. package/dist/react/v2/types/sessionInteraction.d.ts +13 -1
  120. package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -1
  121. package/dist/react/v2/types/sessionManifest.d.ts +1 -0
  122. package/dist/react/v2/types/sessionManifest.d.ts.map +1 -1
  123. package/dist/react/v2/types/stage.d.ts +8 -0
  124. package/dist/react/v2/types/stage.d.ts.map +1 -0
  125. package/dist/react/widget/mountExperienceWidget.d.ts.map +1 -1
  126. package/dist/react/widget/types.d.ts +1 -0
  127. package/dist/react/widget/types.d.ts.map +1 -1
  128. package/dist/sdk/v2/client.js +2 -2
  129. package/dist/sdk/v2/client.js.map +1 -1
  130. package/dist/sdk/v2/thumbnail.js +9 -2
  131. package/dist/sdk/v2/thumbnail.js.map +1 -1
  132. package/dist/svelte/Experience.svelte +43 -0
  133. package/dist/svelte/Experience.svelte.d.ts +3 -0
  134. package/dist/svelte/ExperienceThumbnail.svelte +24 -2
  135. package/dist/svelte/ExperienceThumbnail.svelte.d.ts +2 -0
  136. package/dist/svelte/ExperienceWidget.svelte +9 -0
  137. package/dist/svelte/ExperienceWidget.svelte.d.ts +3 -0
  138. package/package.json +1 -1
@@ -7,28 +7,98 @@ 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)(\?|$)/i;
12
+ function l(e, t) {
13
+ return !Number.isFinite(e) || !Number.isFinite(t) || e < 1 || t < 1 || e <= t ? "256x256" : e > 800 || t > 450 ? "1672x941" : "800x450";
14
+ }
15
+ function u(e, t) {
16
+ let n = e.trim();
17
+ return n && n.replace(c, (e, n, r, i, a) => `${n}${t}${i}${a}`);
18
+ }
19
+ function ee(e, t) {
20
+ let n = () => {
21
+ t(e.clientWidth, e.clientHeight);
22
+ };
23
+ if (n(), typeof ResizeObserver > "u") return () => {};
24
+ let r = new ResizeObserver(n);
25
+ return r.observe(e), () => r.disconnect();
26
+ }
27
+ var d = /-(256x256|400x450|800x450|836x971|1672x941|167x94)$/i;
28
+ function f(e) {
29
+ return e?.trim().replace(/\/$/, "") || "https://cdn.liforma.ai";
30
+ }
31
+ function p(e) {
32
+ return /^https?:\/\//i.test(e) || e.startsWith("//");
33
+ }
34
+ function m(e) {
35
+ return e.startsWith("//") ? `https:${e}` : e;
36
+ }
37
+ function h(e) {
38
+ let t = e.indexOf("?");
39
+ return t === -1 ? {
40
+ pathname: e,
41
+ search: ""
42
+ } : {
43
+ pathname: e.slice(0, t),
44
+ search: e.slice(t)
45
+ };
46
+ }
47
+ function g(e, t, n = "") {
48
+ return `${e}${t.startsWith("/") ? t : `/${t}`}${n}`;
49
+ }
50
+ function _(e, t, n) {
51
+ let r = e.trim();
52
+ 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;
56
+ 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);
59
+ let c = s.replace(/^\/locations\//i, "").replace(/\.webp$/i, "");
60
+ return c = c.replace(d, ""), `${i}/locations/${c}-${t}.webp${o}`;
61
+ }
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
+ }
75
+ //#endregion
10
76
  //#region src/thumbnail/toGalleryThumbUrl.ts
11
- var c = /(\/avatars\/[^/]+\/)(\d+)(\/)/i, l = /_CH(\.webp)/i, u = /(-)(\d+x\d+)(\.webp)(\?|$)/i;
12
- function d(e) {
13
- let t = e.trim();
14
- if (!t) return t;
15
- let n = t.replace(c, (e, t, n, r) => n === "256" ? `${t}${n}${r}` : `${t}256${r}`);
16
- return n = n.replace(l, "_neutral$1"), n = n.replace(u, (e, t, n, r, i) => n === "256x256" ? `${t}${n}${r}${i}` : `${t}256x256${r}${i}`), n;
17
- }
18
- function ee(e) {
77
+ var v = /(\/avatars\/[^/]+\/)(\d+)(\/)/i, y = /_CH(\.webp)/i;
78
+ function b(e) {
79
+ 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
+ }
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");
87
+ }
88
+ function re(e) {
19
89
  let t = e.avatarImage?.trim() || e.galleryThumb?.avatarImage?.trim() || "";
20
90
  if (!t) return null;
21
- let n = e.backgroundImage?.trim() || e.galleryThumb?.backgroundImage?.trim() || "", r = e.foregroundImage?.trim() || e.galleryThumb?.foregroundImage?.trim() || "", i = e.fallbackImage?.trim() || "";
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);
22
92
  return {
23
- avatarImage: d(t),
24
- ...n ? { backgroundImage: d(n) } : {},
25
- ...r ? { foregroundImage: d(r) } : {},
26
- ...i ? { fallbackImage: d(i) } : {}
93
+ avatarImage: c(t),
94
+ ...n ? { backgroundImage: l(n) } : {},
95
+ ...r ? { foregroundImage: l(r) } : {},
96
+ ...i ? { fallbackImage: c(i) } : {}
27
97
  };
28
98
  }
29
99
  //#endregion
30
100
  //#region src/shims/localStack.ts
31
- function f() {
101
+ function ie() {
32
102
  if (globalThis.__LIFORMA_STACK === "local") return !0;
33
103
  if (typeof location > "u") return !1;
34
104
  try {
@@ -39,83 +109,83 @@ function f() {
39
109
  }
40
110
  //#endregion
41
111
  //#region src/thumbnail/hostedLaunchUrl.ts
42
- var p = "https://player.liforma.ai", m = "http://localhost:3002";
43
- function te(e) {
112
+ var x = "https://player.liforma.ai", ae = "http://localhost:3002";
113
+ function oe(e) {
44
114
  return e.href?.trim() ? "anchor" : e.hasClickHandler ? "button" : e.experienceId?.trim() ? "anchor" : "presentational";
45
115
  }
46
- function h(e) {
116
+ function S(e) {
47
117
  let t = e?.trim();
48
- return t ? t.replace(/\/$/, "") : f() ? m : p;
118
+ return t ? t.replace(/\/$/, "") : ie() ? ae : x;
49
119
  }
50
- function ne(e) {
51
- let t = e.experienceId.trim(), n = h(e.playerBaseUrl), r = new URL(`${n}/${encodeURIComponent(t)}`), i = e.returnUrl?.trim();
120
+ function C(e) {
121
+ let t = e.experienceId.trim(), n = S(e.playerBaseUrl), r = new URL(`${n}/${encodeURIComponent(t)}`), i = e.returnUrl?.trim();
52
122
  return i && r.searchParams.set("returnUrl", i), r.toString();
53
123
  }
54
- function re(e) {
124
+ function se(e) {
55
125
  let t = e.href?.trim();
56
126
  if (t) return t;
57
127
  let n = e.experienceId?.trim();
58
128
  if (!n) return;
59
129
  let r = e.returnUrl?.trim();
60
- return !r && e.useCurrentPageAsReturnUrl && typeof window < "u" && (r = window.location.href), ne({
130
+ return !r && e.useCurrentPageAsReturnUrl && typeof window < "u" && (r = window.location.href), C({
61
131
  experienceId: n,
62
132
  ...r ? { returnUrl: r } : {},
63
133
  playerBaseUrl: e.playerBaseUrl
64
134
  });
65
135
  }
66
- function g() {
136
+ function w() {
67
137
  return typeof window > "u" ? !1 : window.matchMedia("(hover: none), (pointer: coarse)").matches;
68
138
  }
69
- var _ = 0, v = [];
70
- function y() {
71
- return g() ? 4 : Infinity;
139
+ var T = 0, E = [];
140
+ function ce() {
141
+ return w() ? 4 : Infinity;
72
142
  }
73
- function ie() {
74
- return g() ? 160 : 0;
143
+ function le() {
144
+ return w() ? 160 : 0;
75
145
  }
76
- function b() {
77
- let e = y();
78
- for (; _ < e && v.length > 0;) {
79
- let e = v.shift();
146
+ function D() {
147
+ let e = ce();
148
+ for (; T < e && E.length > 0;) {
149
+ let e = E.shift();
80
150
  if (!e || e.cancelled) continue;
81
- _ += 1, e.start();
82
- let t = ie();
151
+ T += 1, e.start();
152
+ let t = le();
83
153
  if (t <= 0) {
84
- _ = Math.max(0, _ - 1);
154
+ T = Math.max(0, T - 1);
85
155
  continue;
86
156
  }
87
157
  window.setTimeout(() => {
88
- _ = Math.max(0, _ - 1), b();
158
+ T = Math.max(0, T - 1), D();
89
159
  }, t);
90
160
  }
91
161
  }
92
- function x(e) {
93
- if (!g()) return e(), () => {};
162
+ function ue(e) {
163
+ if (!w()) return e(), () => {};
94
164
  let t = {
95
165
  start: e,
96
166
  cancelled: !1
97
167
  };
98
- return v.push(t), b(), () => {
168
+ return E.push(t), D(), () => {
99
169
  t.cancelled = !0;
100
170
  };
101
171
  }
102
172
  //#endregion
103
173
  //#region src/thumbnail/lazyLoad.ts
104
- function S() {
105
- return g() ? "96px 0px" : "280px 0px";
174
+ function O() {
175
+ return w() ? "96px 0px" : "280px 0px";
106
176
  }
107
- function C(e) {
177
+ function k(e) {
108
178
  let t = e.trim().split(/\s+/)[0] ?? "0px", n = Number.parseFloat(t);
109
179
  return Number.isFinite(n) ? Math.abs(n) : 280;
110
180
  }
111
- function w(e, t) {
181
+ function A(e, t) {
112
182
  if (typeof window > "u") return !1;
113
183
  let n = e.getBoundingClientRect();
114
184
  return n.bottom >= -t && n.top <= window.innerHeight + t;
115
185
  }
116
- function ae(e, t) {
117
- let { onVisibleChange: n } = t, r = t.rootMargin ?? S(), i = C(r), a = !1, o = !1, s = null, c = () => {
118
- o || (s?.(), s = x(() => {
186
+ function de(e, t) {
187
+ let { onVisibleChange: n } = t, r = t.rootMargin ?? O(), i = k(r), a = !1, o = !1, s = null, c = () => {
188
+ o || (s?.(), s = ue(() => {
119
189
  s = null, o = !0, n(!0);
120
190
  }));
121
191
  }, l = (e) => {
@@ -137,260 +207,271 @@ function ae(e, t) {
137
207
  rootMargin: r,
138
208
  threshold: 0
139
209
  });
140
- return u.observe(e), w(e, i) && l(!0), () => {
210
+ return u.observe(e), A(e, i) && l(!0), () => {
141
211
  s?.(), s = null, u.disconnect();
142
212
  };
143
213
  }
144
214
  //#endregion
145
215
  //#region src/thumbnail/scrollParallax.ts
146
- function T() {
216
+ function j() {
147
217
  return typeof window > "u" || window.matchMedia("(prefers-reduced-motion: reduce)").matches ? !1 : window.matchMedia("(hover: none), (pointer: coarse)").matches;
148
218
  }
149
- function E(e, t) {
219
+ function M(e, t) {
150
220
  return ((e.top + e.height / 2) / Math.max(t, 1) - .5) * 2;
151
221
  }
152
- var D = /* @__PURE__ */ new Set(), O = !1, k = 0;
153
- function A() {
154
- if (k = 0, D.size === 0 || typeof window > "u") return;
222
+ var N = /* @__PURE__ */ new Set(), P = !1, F = 0;
223
+ function I() {
224
+ if (F = 0, N.size === 0 || typeof window > "u") return;
155
225
  let e = window.innerHeight;
156
- for (let t of D) {
226
+ for (let t of N) {
157
227
  if (t.pointerActive?.()) continue;
158
228
  let n = t.element.getBoundingClientRect();
159
- n.bottom < -64 || n.top > e + 64 || t.onParallax(E(n, e));
229
+ n.bottom < -64 || n.top > e + 64 || t.onParallax(M(n, e));
160
230
  }
161
231
  }
162
- function j() {
163
- k === 0 && (k = requestAnimationFrame(A));
232
+ function L() {
233
+ F === 0 && (F = requestAnimationFrame(I));
164
234
  }
165
- function M() {
166
- O || typeof window > "u" || (O = !0, window.addEventListener("scroll", j, { passive: !0 }), window.addEventListener("resize", j, { passive: !0 }));
235
+ function R() {
236
+ P || typeof window > "u" || (P = !0, window.addEventListener("scroll", L, { passive: !0 }), window.addEventListener("resize", L, { passive: !0 }));
167
237
  }
168
- function N() {
169
- D.size > 0 || !O || typeof window > "u" || (O = !1, k !== 0 && (cancelAnimationFrame(k), k = 0), window.removeEventListener("scroll", j), window.removeEventListener("resize", j));
238
+ function z() {
239
+ N.size > 0 || !P || typeof window > "u" || (P = !1, F !== 0 && (cancelAnimationFrame(F), F = 0), window.removeEventListener("scroll", L), window.removeEventListener("resize", L));
170
240
  }
171
- function oe(e, t) {
172
- if (!T()) return () => {};
241
+ function fe(e, t) {
242
+ if (!j()) return () => {};
173
243
  let n = {
174
244
  element: e,
175
245
  onParallax: t.onParallax,
176
246
  pointerActive: t.pointerActive
177
247
  };
178
- return D.add(n), M(), n.pointerActive?.() || t.onParallax(E(e.getBoundingClientRect(), window.innerHeight)), () => {
179
- D.delete(n), N();
248
+ return N.add(n), R(), n.pointerActive?.() || t.onParallax(M(e.getBoundingClientRect(), window.innerHeight)), () => {
249
+ N.delete(n), z();
180
250
  };
181
251
  }
182
252
  //#endregion
183
253
  //#region src/thumbnail/styles.ts
184
- var se = ".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.65rem;\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}", P = !1;
185
- function ce(e) {
186
- if (typeof document > "u" || P) return;
254
+ var pe = ":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.65rem;\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}", B = !1;
255
+ function me(e) {
256
+ if (typeof document > "u" || B) return;
187
257
  if (document.querySelector("style[data-liforma-et]")) {
188
- P = !0;
258
+ B = !0;
189
259
  return;
190
260
  }
191
261
  let t = document.createElement("style");
192
- t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t), P = !0;
262
+ t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t), B = !0;
193
263
  }
194
264
  //#endregion
195
265
  //#region src/react/ExperienceThumbnail.tsx
196
- function F(e, t) {
266
+ function V(e, t) {
197
267
  return `${e} liforma-et__media${t ? " liforma-et__media--ready" : ""}`;
198
268
  }
199
- function I(c) {
200
- let { galleryThumb: l, avatarImage: u, backgroundImage: d, foregroundImage: f, alt: p, experienceId: m, href: h, target: ne, rel: g, onClick: _, returnUrl: v, playerBaseUrl: y, parallax: ie = !0, fit: b = "full", lazy: x = !0, className: S = "", fallbackImage: C } = c, w = t(() => ee({
201
- galleryThumb: l,
202
- avatarImage: u,
203
- backgroundImage: d,
204
- foregroundImage: f,
205
- fallbackImage: C
269
+ function he(c) {
270
+ 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({
271
+ galleryThumb: u,
272
+ avatarImage: d,
273
+ backgroundImage: f,
274
+ foregroundImage: p,
275
+ fallbackImage: S,
276
+ normalize: C,
277
+ locationPlateSize: O,
278
+ cdnBaseUrl: w
206
279
  }), [
207
- l,
208
280
  u,
209
281
  d,
210
282
  f,
211
- C
212
- ]), T = te({
213
- href: h,
214
- hasClickHandler: typeof _ == "function",
215
- experienceId: m
216
- }), D = T === "anchor" && !h?.trim() && !!m?.trim(), O = !!w?.backgroundImage, k = ie !== !1, A = n(null), j = n(!1), [M, N] = r(!x), [P, I] = r(!1), [L, le] = r(!1), [ue, R] = r(0), [de, z] = r(0), [fe, B] = r(!1), [V, H] = r(!1), [pe, U] = r(!1), [me, W] = r(!1), [G, he] = r(), K = w ? fe && w.fallbackImage ? w.fallbackImage : w.avatarImage : "";
283
+ p,
284
+ S,
285
+ C,
286
+ O,
287
+ w
288
+ ]), A = oe({
289
+ href: g,
290
+ hasClickHandler: typeof v == "function",
291
+ experienceId: h
292
+ }), j = A === "anchor" && !g?.trim() && !!h?.trim(), N = !!k?.backgroundImage, P = ne !== !1, [F, I] = r(!x), [L, R] = r(!1), [z, B] = r(!1), [he, H] = r(0), [ge, U] = r(0), [_e, ve] = r(!1), [ye, W] = r(!1), [be, G] = r(!1), [xe, K] = r(!1), [q, Se] = r(), J = k ? _e && k.fallbackImage ? k.fallbackImage : k.avatarImage : "";
217
293
  e(() => {
218
- ce(se);
294
+ me(pe);
219
295
  }, []), e(() => {
220
- he(re({
221
- href: h,
222
- experienceId: m,
223
- returnUrl: v,
224
- playerBaseUrl: y,
225
- useCurrentPageAsReturnUrl: D && !v?.trim()
296
+ Se(se({
297
+ href: g,
298
+ experienceId: h,
299
+ returnUrl: y,
300
+ playerBaseUrl: b,
301
+ useCurrentPageAsReturnUrl: j && !y?.trim()
226
302
  }));
227
303
  }, [
304
+ g,
228
305
  h,
229
- m,
230
- v,
231
306
  y,
232
- D
307
+ b,
308
+ j
233
309
  ]), e(() => {
234
- H(!1), U(!1), W(!1), B(!1);
310
+ W(!1), G(!1), K(!1), ve(!1);
235
311
  }, [
236
- w?.backgroundImage,
237
- w?.foregroundImage,
238
- K
312
+ k?.backgroundImage,
313
+ k?.foregroundImage,
314
+ J
239
315
  ]), e(() => {
240
- let e = A.current;
316
+ let e = T.current;
317
+ if (e) return ee(e, (e, t) => {
318
+ le(e), ue(t);
319
+ });
320
+ }, [A, q]), e(() => {
321
+ let e = T.current;
241
322
  if (e) {
242
323
  if (!x) {
243
- N(!0);
324
+ I(!0);
244
325
  return;
245
326
  }
246
- return ae(e, { onVisibleChange: (e) => {
247
- e && N(!0);
327
+ return de(e, { onVisibleChange: (e) => {
328
+ e && I(!0);
248
329
  } });
249
330
  }
250
331
  }, [
251
332
  x,
252
- w,
253
- T,
254
- G
333
+ k,
334
+ A,
335
+ q
255
336
  ]), e(() => {
256
- let e = A.current;
257
- if (!(!e || !k)) return oe(e, {
337
+ let e = T.current;
338
+ if (!(!e || !P)) return fe(e, {
258
339
  onParallax: (e) => {
259
- le(!0), j.current || (R(e), z(0));
340
+ B(!0), E.current || (H(e), U(0));
260
341
  },
261
- pointerActive: () => j.current
342
+ pointerActive: () => E.current
262
343
  });
263
344
  }, [
345
+ P,
264
346
  k,
265
- w,
266
- T,
267
- G
347
+ A,
348
+ q
268
349
  ]);
269
- let ge = (e) => {
270
- if (!k || L) return;
350
+ let Ce = (e) => {
351
+ if (!P || z) return;
271
352
  let t = e.currentTarget.getBoundingClientRect();
272
- t.width <= 0 || t.height <= 0 || (R(((e.clientX - t.left) / t.width - .5) * 2), z(((e.clientY - t.top) / t.height - .5) * 2));
273
- }, q = (e) => {
274
- let t = j.current;
275
- j.current = !1, I(!1), L && t ? (R(E(e.getBoundingClientRect(), window.innerHeight)), z(0)) : L || (R(0), z(0));
276
- }, _e = (e) => {
277
- if (!k) return;
278
- j.current = !0, e.pointerType === "mouse" && I(!0);
353
+ t.width <= 0 || t.height <= 0 || (H(((e.clientX - t.left) / t.width - .5) * 2), U(((e.clientY - t.top) / t.height - .5) * 2));
354
+ }, Y = (e) => {
355
+ let t = E.current;
356
+ E.current = !1, R(!1), z && t ? (H(M(e.getBoundingClientRect(), window.innerHeight)), U(0)) : z || (H(0), U(0));
357
+ }, we = (e) => {
358
+ if (!P) return;
359
+ E.current = !0, e.pointerType === "mouse" && R(!0);
279
360
  let t = e.currentTarget, n = () => {
280
- q(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
361
+ Y(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
281
362
  };
282
363
  window.addEventListener("pointerup", n), window.addEventListener("pointercancel", n);
283
- }, ve = (e) => {
284
- if (_?.(e), !e.defaultPrevented && D && !v?.trim()) {
285
- let t = re({
286
- experienceId: m,
287
- playerBaseUrl: y,
364
+ }, Te = (e) => {
365
+ if (v?.(e), !e.defaultPrevented && j && !y?.trim()) {
366
+ let t = se({
367
+ experienceId: h,
368
+ playerBaseUrl: b,
288
369
  useCurrentPageAsReturnUrl: !0
289
370
  });
290
371
  t && e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && (e.preventDefault(), window.location.assign(t));
291
372
  }
292
373
  };
293
- if (!w) return null;
294
- let ye = k && (P || L), be = M && (pe || V || me), J = [
374
+ if (!k) return null;
375
+ let Ee = P && (L || z), De = F && (be || ye || xe), X = [
295
376
  "liforma-et",
296
- O ? "liforma-et--scene" : "",
297
- s(b),
298
- ye ? "liforma-et--parallax" : "",
299
- L ? "liforma-et--scroll-parallax" : "",
300
- M && !be ? "liforma-et--loading" : "",
301
- be ? "liforma-et--revealed" : "",
302
- S
303
- ].filter(Boolean).join(" "), Y = {
304
- "--liforma-et-parallax-x": ue,
305
- "--liforma-et-parallax-y": de
306
- }, X = (e, t) => {
377
+ N ? "liforma-et--scene" : "",
378
+ s(ie),
379
+ Ee ? "liforma-et--parallax" : "",
380
+ z ? "liforma-et--scroll-parallax" : "",
381
+ F && !De ? "liforma-et--loading" : "",
382
+ De ? "liforma-et--revealed" : "",
383
+ ae
384
+ ].filter(Boolean).join(" "), Z = {
385
+ "--liforma-et-parallax-x": he,
386
+ "--liforma-et-parallax-y": ge
387
+ }, Q = (e, t) => {
307
388
  e.complete && t(!0);
308
- }, Z = /* @__PURE__ */ o(i, { children: [
389
+ }, Oe = /* @__PURE__ */ o(i, { children: [
309
390
  /* @__PURE__ */ a("span", {
310
391
  className: "liforma-et__placeholder",
311
392
  "aria-hidden": "true"
312
393
  }),
313
- M && w.backgroundImage ? /* @__PURE__ */ a("img", {
314
- className: F("liforma-et__background", V),
315
- src: w.backgroundImage,
394
+ F && k.backgroundImage ? /* @__PURE__ */ a("img", {
395
+ className: V("liforma-et__background", ye),
396
+ src: k.backgroundImage,
316
397
  alt: "",
317
398
  decoding: "async",
318
399
  ref: (e) => {
319
- e && X(e, H);
400
+ e && Q(e, W);
320
401
  },
321
- onLoad: () => H(!0),
322
- onError: () => H(!0)
402
+ onLoad: () => W(!0),
403
+ onError: () => W(!0)
323
404
  }) : null,
324
- M && K ? /* @__PURE__ */ a("img", {
325
- className: F("liforma-et__avatar", pe),
326
- src: K,
405
+ F && J ? /* @__PURE__ */ a("img", {
406
+ className: V("liforma-et__avatar", be),
407
+ src: J,
327
408
  alt: "",
328
409
  decoding: "async",
329
410
  ref: (e) => {
330
- e && X(e, U);
411
+ e && Q(e, G);
331
412
  },
332
- onLoad: () => U(!0),
413
+ onLoad: () => G(!0),
333
414
  onError: () => {
334
- w.fallbackImage ? B(!0) : U(!0);
415
+ k.fallbackImage ? ve(!0) : G(!0);
335
416
  }
336
417
  }) : null,
337
- M && w.foregroundImage ? /* @__PURE__ */ a("img", {
338
- className: F("liforma-et__foreground", me),
339
- src: w.foregroundImage,
418
+ F && k.foregroundImage ? /* @__PURE__ */ a("img", {
419
+ className: V("liforma-et__foreground", xe),
420
+ src: k.foregroundImage,
340
421
  alt: "",
341
422
  decoding: "async",
342
423
  ref: (e) => {
343
- e && X(e, W);
424
+ e && Q(e, K);
344
425
  },
345
- onLoad: () => W(!0),
346
- onError: () => W(!0)
426
+ onLoad: () => K(!0),
427
+ onError: () => K(!0)
347
428
  }) : null
348
- ] }), Q = {
349
- onPointerDown: _e,
350
- onPointerUp: (e) => q(e.currentTarget),
351
- onPointerCancel: (e) => q(e.currentTarget),
429
+ ] }), ke = {
430
+ onPointerDown: we,
431
+ onPointerUp: (e) => Y(e.currentTarget),
432
+ onPointerCancel: (e) => Y(e.currentTarget),
352
433
  onPointerEnter: (e) => {
353
- k && e.pointerType === "mouse" && I(!0);
434
+ P && e.pointerType === "mouse" && R(!0);
354
435
  },
355
- onPointerMove: ge,
436
+ onPointerMove: Ce,
356
437
  onPointerLeave: () => {
357
- j.current || (I(!1), L || (R(0), z(0)));
438
+ E.current || (R(!1), z || (H(0), U(0)));
358
439
  }
359
440
  }, $ = (e) => {
360
- A.current = e;
441
+ T.current = e;
361
442
  };
362
- return T === "anchor" && G ? /* @__PURE__ */ a("a", {
443
+ return A === "anchor" && q ? /* @__PURE__ */ a("a", {
363
444
  ref: $,
364
- className: J,
365
- style: Y,
366
- href: G,
367
- target: ne,
368
- rel: g,
369
- "aria-label": p,
370
- onClick: ve,
371
- ...Q,
372
- children: Z
373
- }) : T === "button" ? /* @__PURE__ */ a("button", {
445
+ className: X,
446
+ style: Z,
447
+ href: q,
448
+ target: _,
449
+ rel: te,
450
+ "aria-label": m,
451
+ onClick: Te,
452
+ ...ke,
453
+ children: Oe
454
+ }) : A === "button" ? /* @__PURE__ */ a("button", {
374
455
  type: "button",
375
456
  ref: $,
376
- className: J,
377
- style: Y,
378
- "aria-label": p,
379
- onClick: ve,
380
- ...Q,
381
- children: Z
457
+ className: X,
458
+ style: Z,
459
+ "aria-label": m,
460
+ onClick: Te,
461
+ ...ke,
462
+ children: Oe
382
463
  }) : /* @__PURE__ */ a("div", {
383
464
  ref: $,
384
- className: J,
385
- style: Y,
386
- role: p ? "img" : void 0,
387
- "aria-label": p || void 0,
388
- "aria-hidden": p ? void 0 : !0,
389
- ...Q,
390
- children: Z
465
+ className: X,
466
+ style: Z,
467
+ role: m ? "img" : void 0,
468
+ "aria-label": m || void 0,
469
+ "aria-hidden": m ? void 0 : !0,
470
+ ...ke,
471
+ children: Oe
391
472
  });
392
473
  }
393
474
  //#endregion
394
- export { I as ExperienceThumbnail };
475
+ export { he as ExperienceThumbnail };
395
476
 
396
477
  //# sourceMappingURL=thumbnail.js.map