@liforma/client 0.4.9 → 0.4.10

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 (63) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/next/index.js +10 -6
  3. package/dist/next/index.js.map +1 -1
  4. package/dist/next/v2/embed/iframeHost.d.ts +3 -2
  5. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  6. package/dist/next/v2/embed/protocol.d.ts +4 -2
  7. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  8. package/dist/next/v2/experience.d.ts +5 -3
  9. package/dist/next/v2/experience.d.ts.map +1 -1
  10. package/dist/next/v2/types/sessionInteraction.d.ts +13 -1
  11. package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -1
  12. package/dist/next/v2/types/sessionManifest.d.ts +1 -0
  13. package/dist/next/v2/types/sessionManifest.d.ts.map +1 -1
  14. package/dist/next/widget/mountExperienceWidget.d.ts.map +1 -1
  15. package/dist/next/widget/types.d.ts +1 -0
  16. package/dist/next/widget/types.d.ts.map +1 -1
  17. package/dist/npm/index.js +10 -6
  18. package/dist/npm/index.js.map +1 -1
  19. package/dist/npm/v2/embed/iframeHost.d.ts +3 -2
  20. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  21. package/dist/npm/v2/embed/protocol.d.ts +4 -2
  22. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  23. package/dist/npm/v2/experience.d.ts +5 -3
  24. package/dist/npm/v2/experience.d.ts.map +1 -1
  25. package/dist/npm/v2/index.d.ts +1 -1
  26. package/dist/npm/v2/index.d.ts.map +1 -1
  27. package/dist/npm/v2/liforma-experience.d.ts +2 -0
  28. package/dist/npm/v2/liforma-experience.d.ts.map +1 -1
  29. package/dist/npm/v2/npm.d.ts +1 -1
  30. package/dist/npm/v2/npm.d.ts.map +1 -1
  31. package/dist/npm/v2/types/sessionInteraction.d.ts +13 -1
  32. package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -1
  33. package/dist/npm/v2/types/sessionManifest.d.ts +1 -0
  34. package/dist/npm/v2/types/sessionManifest.d.ts.map +1 -1
  35. package/dist/npm/v2/types/sessionManifestSchema.d.ts +17 -0
  36. package/dist/npm/v2/types/sessionManifestSchema.d.ts.map +1 -1
  37. package/dist/npm/widget/mountExperienceWidget.d.ts.map +1 -1
  38. package/dist/npm/widget/types.d.ts +1 -0
  39. package/dist/npm/widget/types.d.ts.map +1 -1
  40. package/dist/react/component/experienceComponentRuntime.d.ts +1 -0
  41. package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -1
  42. package/dist/react/component/experienceComponentTypes.d.ts +2 -0
  43. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  44. package/dist/react/index.js +108 -101
  45. package/dist/react/index.js.map +1 -1
  46. package/dist/react/react/Experience.d.ts.map +1 -1
  47. package/dist/react/v2/embed/iframeHost.d.ts +3 -2
  48. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  49. package/dist/react/v2/embed/protocol.d.ts +4 -2
  50. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  51. package/dist/react/v2/experience.d.ts +5 -3
  52. package/dist/react/v2/experience.d.ts.map +1 -1
  53. package/dist/react/v2/types/sessionInteraction.d.ts +13 -1
  54. package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -1
  55. package/dist/react/v2/types/sessionManifest.d.ts +1 -0
  56. package/dist/react/v2/types/sessionManifest.d.ts.map +1 -1
  57. package/dist/react/widget/mountExperienceWidget.d.ts.map +1 -1
  58. package/dist/react/widget/types.d.ts +1 -0
  59. package/dist/react/widget/types.d.ts.map +1 -1
  60. package/dist/sdk/v2/client.js +2 -2
  61. package/dist/sdk/v2/client.js.map +1 -1
  62. package/dist/svelte/Experience.svelte +2 -0
  63. package/package.json +1 -1
@@ -251,6 +251,7 @@ function F(e = () => ({}), t = () => ({})) {
251
251
  startButton: d.startButton,
252
252
  theme: d.theme,
253
253
  showFeedback: d.showFeedback,
254
+ interaction: d.interaction,
254
255
  closeButton: d.closeButton,
255
256
  returnUrl: f,
256
257
  showClose: !!(o().onClose || f || d.closeButton === !0 || d.closeButton && typeof d.closeButton == "object" && d.closeButton.visible !== !1),
@@ -343,44 +344,46 @@ function L(e, t) {
343
344
  //#endregion
344
345
  //#region src/react/Experience.tsx
345
346
  var ne = e(function(e, a) {
346
- let { returnUrl: c, fit: l, startButton: u, theme: p, showFeedback: m, closeButton: h, onReady: g, onStarted: y, onUserTranscript: b, onUserSpeechStarted: x, onUserSpeechEnded: S, onCharacterSpeechStarted: C, onCharacterSpeechEnded: w, onCharacterFocusChanged: T, onConversationUpdate: E, onMessage: D, onListeningState: O, onActivityChange: j, onFeedback: M, onFeedbackFailed: N, onConversationProcessorError: P, onPlayerStatusChange: I, onStateUpdate: ee, onClose: te, onError: ne } = e, re = o({}), R = o({
347
+ let { returnUrl: c, fit: l, startButton: u, theme: p, showFeedback: m, interaction: h, closeButton: g, onReady: y, onStarted: b, onUserTranscript: x, onUserSpeechStarted: S, onUserSpeechEnded: C, onCharacterSpeechStarted: w, onCharacterSpeechEnded: T, onCharacterFocusChanged: E, onConversationUpdate: D, onMessage: O, onListeningState: j, onActivityChange: M, onFeedback: N, onFeedbackFailed: P, onConversationProcessorError: I, onPlayerStatusChange: ee, onStateUpdate: te, onClose: ne, onError: re } = e, ie = o({}), R = o({
347
348
  fit: l,
348
349
  startButton: u,
349
350
  theme: p,
350
351
  showFeedback: m,
351
- closeButton: h,
352
+ interaction: h,
353
+ closeButton: g,
352
354
  returnUrl: c
353
- }), z = o(F(() => re.current, () => R.current)), B = o(null), [V, ie] = s(!1), [H, ae] = s(null), oe = o(null), se = o(null), U = v(e);
355
+ }), z = o(F(() => ie.current, () => R.current)), B = o(null), [ae, V] = s(!1), [H, oe] = s(null), se = o(null), U = o(null), ce = v(e);
354
356
  R.current = {
355
357
  fit: l,
356
358
  startButton: u,
357
359
  theme: p,
358
360
  showFeedback: m,
359
- closeButton: h,
361
+ interaction: h,
362
+ closeButton: g,
360
363
  returnUrl: c
361
- }, re.current = {
362
- onReady: g,
363
- onStarted: y,
364
- onUserTranscript: b,
365
- onUserSpeechStarted: x,
366
- onUserSpeechEnded: S,
367
- onCharacterSpeechStarted: C,
368
- onCharacterSpeechEnded: w,
369
- onCharacterFocusChanged: T,
370
- onConversationUpdate: E,
371
- onMessage: D,
372
- onListeningState: O,
373
- onActivityChange: j,
374
- onFeedback: M,
375
- onFeedbackFailed: N,
376
- onConversationProcessorError: P,
377
- onPlayerStatusChange: I,
378
- onStateUpdate: ee,
379
- onClose: te,
380
- onError: ne
364
+ }, ie.current = {
365
+ onReady: y,
366
+ onStarted: b,
367
+ onUserTranscript: x,
368
+ onUserSpeechStarted: S,
369
+ onUserSpeechEnded: C,
370
+ onCharacterSpeechStarted: w,
371
+ onCharacterSpeechEnded: T,
372
+ onCharacterFocusChanged: E,
373
+ onConversationUpdate: D,
374
+ onMessage: O,
375
+ onListeningState: j,
376
+ onActivityChange: M,
377
+ onFeedback: N,
378
+ onFeedbackFailed: P,
379
+ onConversationProcessorError: I,
380
+ onPlayerStatusChange: ee,
381
+ onStateUpdate: te,
382
+ onClose: ne,
383
+ onError: re
381
384
  };
382
- let ce = t((e) => {
383
- oe.current = e, ie(e !== null);
385
+ let le = t((e) => {
386
+ se.current = e, V(e !== null);
384
387
  }, []);
385
388
  return r(a, () => ({
386
389
  ready: () => {
@@ -413,26 +416,26 @@ var ne = e(function(e, a) {
413
416
  engage: () => z.current.withSession((e) => e.engage()),
414
417
  end: () => z.current.withSession((e) => e.end())
415
418
  }), []), i(() => {
416
- if (!V || !oe.current) return;
417
- let t = oe.current, n = z.current, r;
419
+ if (!ae || !se.current) return;
420
+ let t = se.current, n = z.current, r;
418
421
  try {
419
422
  r = { options: _(e) };
420
423
  } catch (e) {
421
424
  r = { error: A(e) };
422
425
  }
423
- let i = n.activateGeneration(t, r, c, ae);
426
+ let i = n.activateGeneration(t, r, c, oe);
424
427
  return B.current = i, () => {
425
428
  n.cancelGeneration(i), B.current === i && (B.current = null);
426
429
  };
427
430
  }, [
428
- V,
429
- U,
431
+ ae,
432
+ ce,
430
433
  c
431
434
  ]), n(() => {
432
435
  let e = z.current.getActiveInstance();
433
436
  e && e.setFit(l ?? "full");
434
437
  }, [l]), n(() => {
435
- let e = se.current;
438
+ let e = U.current;
436
439
  if (!e || (e.replaceChildren(), !H)) return;
437
440
  let t = L(e, H);
438
441
  return () => t.remove();
@@ -445,7 +448,7 @@ var ne = e(function(e, a) {
445
448
  minHeight: "inherit"
446
449
  },
447
450
  children: [/* @__PURE__ */ d("div", {
448
- ref: se,
451
+ ref: U,
449
452
  className: "liforma-experience-error-host",
450
453
  "aria-hidden": H ? void 0 : !0,
451
454
  style: {
@@ -455,7 +458,7 @@ var ne = e(function(e, a) {
455
458
  pointerEvents: H ? "auto" : "none"
456
459
  }
457
460
  }), /* @__PURE__ */ d("div", {
458
- ref: ce,
461
+ ref: le,
459
462
  className: "liforma-experience-host",
460
463
  style: {
461
464
  position: "absolute",
@@ -472,27 +475,27 @@ function re(e) {
472
475
  }
473
476
  //#endregion
474
477
  //#region src/thumbnail/toGalleryThumbUrl.ts
475
- var R = /(\/avatars\/[^/]+\/)(\d+)(\/)/i, z = /_CH(\.webp)/i, B = /(-)(\d+x\d+)(\.webp)(\?|$)/i;
476
- function V(e) {
478
+ var ie = /(\/avatars\/[^/]+\/)(\d+)(\/)/i, R = /_CH(\.webp)/i, z = /(-)(\d+x\d+)(\.webp)(\?|$)/i;
479
+ function B(e) {
477
480
  let t = e.trim();
478
481
  if (!t) return t;
479
- let n = t.replace(R, (e, t, n, r) => n === "256" ? `${t}${n}${r}` : `${t}256${r}`);
480
- return n = n.replace(z, "_neutral$1"), n = n.replace(B, (e, t, n, r, i) => n === "256x256" ? `${t}${n}${r}${i}` : `${t}256x256${r}${i}`), n;
482
+ let n = t.replace(ie, (e, t, n, r) => n === "256" ? `${t}${n}${r}` : `${t}256${r}`);
483
+ return n = n.replace(R, "_neutral$1"), n = n.replace(z, (e, t, n, r, i) => n === "256x256" ? `${t}${n}${r}${i}` : `${t}256x256${r}${i}`), n;
481
484
  }
482
- function ie(e) {
485
+ function ae(e) {
483
486
  let t = e.avatarImage?.trim() || e.galleryThumb?.avatarImage?.trim() || "";
484
487
  if (!t) return null;
485
488
  let n = e.backgroundImage?.trim() || e.galleryThumb?.backgroundImage?.trim() || "", r = e.foregroundImage?.trim() || e.galleryThumb?.foregroundImage?.trim() || "", i = e.fallbackImage?.trim() || "";
486
489
  return {
487
- avatarImage: V(t),
488
- ...n ? { backgroundImage: V(n) } : {},
489
- ...r ? { foregroundImage: V(r) } : {},
490
- ...i ? { fallbackImage: V(i) } : {}
490
+ avatarImage: B(t),
491
+ ...n ? { backgroundImage: B(n) } : {},
492
+ ...r ? { foregroundImage: B(r) } : {},
493
+ ...i ? { fallbackImage: B(i) } : {}
491
494
  };
492
495
  }
493
496
  //#endregion
494
497
  //#region src/shims/localStack.ts
495
- function H() {
498
+ function V() {
496
499
  if (globalThis.__LIFORMA_STACK === "local") return !0;
497
500
  if (typeof location > "u") return !1;
498
501
  try {
@@ -503,13 +506,13 @@ function H() {
503
506
  }
504
507
  //#endregion
505
508
  //#region src/thumbnail/hostedLaunchUrl.ts
506
- var ae = "https://player.liforma.ai", oe = "http://localhost:3002";
509
+ var H = "https://player.liforma.ai", oe = "http://localhost:3002";
507
510
  function se(e) {
508
511
  return e.href?.trim() ? "anchor" : e.hasClickHandler ? "button" : e.experienceId?.trim() ? "anchor" : "presentational";
509
512
  }
510
513
  function U(e) {
511
514
  let t = e?.trim();
512
- return t ? t.replace(/\/$/, "") : H() ? oe : ae;
515
+ return t ? t.replace(/\/$/, "") : V() ? oe : H;
513
516
  }
514
517
  function ce(e) {
515
518
  let t = e.experienceId.trim(), n = U(e.playerBaseUrl), r = new URL(`${n}/${encodeURIComponent(t)}`), i = e.returnUrl?.trim();
@@ -690,7 +693,7 @@ function Ae(e, t) {
690
693
  return `${e} liforma-et__media${t ? " liforma-et__media--ready" : ""}`;
691
694
  }
692
695
  function je(e) {
693
- let { galleryThumb: t, avatarImage: r, backgroundImage: i, foregroundImage: c, alt: l, experienceId: p, href: m, target: h, rel: g, onClick: _, returnUrl: v, playerBaseUrl: y, parallax: b = !0, fit: x = "full", lazy: S = !0, className: C = "", fallbackImage: w } = e, T = a(() => ie({
696
+ let { galleryThumb: t, avatarImage: r, backgroundImage: i, foregroundImage: c, alt: l, experienceId: p, href: m, target: h, rel: g, onClick: _, returnUrl: v, playerBaseUrl: y, parallax: b = !0, fit: x = "full", lazy: S = !0, className: C = "", fallbackImage: w } = e, T = a(() => ae({
694
697
  galleryThumb: t,
695
698
  avatarImage: r,
696
699
  backgroundImage: i,
@@ -706,7 +709,7 @@ function je(e) {
706
709
  href: m,
707
710
  hasClickHandler: typeof _ == "function",
708
711
  experienceId: p
709
- }), D = E === "anchor" && !m?.trim() && !!p?.trim(), O = !!T?.backgroundImage, k = b !== !1, A = o(null), j = o(!1), [M, N] = s(!S), [P, F] = s(!1), [I, ee] = s(!1), [te, L] = s(0), [ne, R] = s(0), [z, B] = s(!1), [V, H] = s(!1), [ae, oe] = s(!1), [U, ce] = s(!1), [W, ue] = s(), G = T ? z && T.fallbackImage ? T.fallbackImage : T.avatarImage : "";
712
+ }), D = E === "anchor" && !m?.trim() && !!p?.trim(), O = !!T?.backgroundImage, k = b !== !1, A = o(null), j = o(!1), [M, N] = s(!S), [P, F] = s(!1), [I, ee] = s(!1), [te, L] = s(0), [ne, ie] = s(0), [R, z] = s(!1), [B, V] = s(!1), [H, oe] = s(!1), [U, ce] = s(!1), [W, ue] = s(), G = T ? R && T.fallbackImage ? T.fallbackImage : T.avatarImage : "";
710
713
  n(() => {
711
714
  ke(De);
712
715
  }, []), n(() => {
@@ -724,7 +727,7 @@ function je(e) {
724
727
  y,
725
728
  D
726
729
  ]), n(() => {
727
- H(!1), oe(!1), ce(!1), B(!1);
730
+ V(!1), oe(!1), ce(!1), z(!1);
728
731
  }, [
729
732
  T?.backgroundImage,
730
733
  T?.foregroundImage,
@@ -749,7 +752,7 @@ function je(e) {
749
752
  let e = A.current;
750
753
  if (!(!e || !k)) return Te(e, {
751
754
  onParallax: (e) => {
752
- ee(!0), j.current || (L(e), R(0));
755
+ ee(!0), j.current || (L(e), ie(0));
753
756
  },
754
757
  pointerActive: () => j.current
755
758
  });
@@ -762,10 +765,10 @@ function je(e) {
762
765
  let de = (e) => {
763
766
  if (!k || I) return;
764
767
  let t = e.currentTarget.getBoundingClientRect();
765
- t.width <= 0 || t.height <= 0 || (L(((e.clientX - t.left) / t.width - .5) * 2), R(((e.clientY - t.top) / t.height - .5) * 2));
768
+ t.width <= 0 || t.height <= 0 || (L(((e.clientX - t.left) / t.width - .5) * 2), ie(((e.clientY - t.top) / t.height - .5) * 2));
766
769
  }, fe = (e) => {
767
770
  let t = j.current;
768
- j.current = !1, F(!1), I && t ? (L(ye(e.getBoundingClientRect(), window.innerHeight)), R(0)) : I || (L(0), R(0));
771
+ j.current = !1, F(!1), I && t ? (L(ye(e.getBoundingClientRect(), window.innerHeight)), ie(0)) : I || (L(0), ie(0));
769
772
  }, pe = (e) => {
770
773
  if (!k) return;
771
774
  j.current = !0, e.pointerType === "mouse" && F(!0);
@@ -784,7 +787,7 @@ function je(e) {
784
787
  }
785
788
  };
786
789
  if (!T) return null;
787
- let he = k && (P || I), K = M && (ae || V || U), ge = [
790
+ let he = k && (P || I), K = M && (H || B || U), ge = [
788
791
  "liforma-et",
789
792
  O ? "liforma-et--scene" : "",
790
793
  re(x),
@@ -804,18 +807,18 @@ function je(e) {
804
807
  "aria-hidden": "true"
805
808
  }),
806
809
  M && T.backgroundImage ? /* @__PURE__ */ d("img", {
807
- className: Ae("liforma-et__background", V),
810
+ className: Ae("liforma-et__background", B),
808
811
  src: T.backgroundImage,
809
812
  alt: "",
810
813
  decoding: "async",
811
814
  ref: (e) => {
812
- e && be(e, H);
815
+ e && be(e, V);
813
816
  },
814
- onLoad: () => H(!0),
815
- onError: () => H(!0)
817
+ onLoad: () => V(!0),
818
+ onError: () => V(!0)
816
819
  }) : null,
817
820
  M && G ? /* @__PURE__ */ d("img", {
818
- className: Ae("liforma-et__avatar", ae),
821
+ className: Ae("liforma-et__avatar", H),
819
822
  src: G,
820
823
  alt: "",
821
824
  decoding: "async",
@@ -824,7 +827,7 @@ function je(e) {
824
827
  },
825
828
  onLoad: () => oe(!0),
826
829
  onError: () => {
827
- T.fallbackImage ? B(!0) : oe(!0);
830
+ T.fallbackImage ? z(!0) : oe(!0);
828
831
  }
829
832
  }) : null,
830
833
  M && T.foregroundImage ? /* @__PURE__ */ d("img", {
@@ -847,7 +850,7 @@ function je(e) {
847
850
  },
848
851
  onPointerMove: de,
849
852
  onPointerLeave: () => {
850
- j.current || (F(!1), I || (L(0), R(0)));
853
+ j.current || (F(!1), I || (L(0), ie(0)));
851
854
  }
852
855
  }, J = (e) => {
853
856
  A.current = e;
@@ -907,7 +910,7 @@ function Le() {
907
910
  return t ? t.replace(/\/$/, "") : null;
908
911
  }
909
912
  function Re() {
910
- return Le() || (H() ? Ie : Fe);
913
+ return Le() || (V() ? Ie : Fe);
911
914
  }
912
915
  //#endregion
913
916
  //#region src/v2/api/fetchExperiencePreview.ts
@@ -1352,7 +1355,7 @@ function Ct(e) {
1352
1355
  function wt(e, t, n) {
1353
1356
  let r = e.trim();
1354
1357
  if (!r) throw Error("createLaunchMessage requires a non-empty launch string.");
1355
- let i = n?.startButton, a = n?.theme, o = n?.showFeedback;
1358
+ let i = n?.startButton, a = n?.theme, o = n?.showFeedback, s = n?.interaction;
1356
1359
  return {
1357
1360
  type: "launch",
1358
1361
  schemaVersion: 2,
@@ -1361,7 +1364,8 @@ function wt(e, t, n) {
1361
1364
  ...t === void 0 ? {} : { session: t },
1362
1365
  ...i ? { startButton: i } : {},
1363
1366
  ...a ? { theme: a } : {},
1364
- ...o === void 0 ? {} : { showFeedback: o }
1367
+ ...o === void 0 ? {} : { showFeedback: o },
1368
+ ...s ? { interaction: s } : {}
1365
1369
  }
1366
1370
  };
1367
1371
  }
@@ -1874,7 +1878,7 @@ function Ft(e) {
1874
1878
  //#region src/v2/sdkRelease.ts
1875
1879
  var It = `sdk@${{
1876
1880
  name: "@liforma/client",
1877
- version: "0.4.9",
1881
+ version: "0.4.10",
1878
1882
  type: "module",
1879
1883
  description: "Liforma browser SDK — Experience sessions, speech API, and Svelte embed component.",
1880
1884
  license: "MIT",
@@ -2103,7 +2107,7 @@ function zt() {
2103
2107
  }
2104
2108
  function Bt() {
2105
2109
  let e = zt();
2106
- return e ? e.endsWith("/embed") ? e : `${e}/embed` : H() ? Rt : Lt;
2110
+ return e ? e.endsWith("/embed") ? e : `${e}/embed` : V() ? Rt : Lt;
2107
2111
  }
2108
2112
  function Vt(e, t) {
2109
2113
  return e?.trim() || t?.trim() || void 0;
@@ -3046,11 +3050,13 @@ var Nn = class e {
3046
3050
  return v && !this.sessionMintedEnvelope && (this.resolvedSession = v, this.sessionMintedEnvelope = this.emitWrapped("sessionMinted", { session: v })), _ ? (this.resolvedSession = _, this.bootstrap.kind === "launch" && rt(_), f.postLaunch(g, _, {
3047
3051
  startButton: e.startButton,
3048
3052
  theme: e.theme,
3049
- showFeedback: e.showFeedback
3053
+ showFeedback: e.showFeedback,
3054
+ interaction: e.interaction
3050
3055
  }), u.setValue(_)) : f.postLaunch(g, void 0, {
3051
3056
  startButton: e.startButton,
3052
3057
  theme: e.theme,
3053
- showFeedback: e.showFeedback
3058
+ showFeedback: e.showFeedback,
3059
+ interaction: e.interaction
3054
3060
  }), await Promise.race([s, new Promise((e, t) => {
3055
3061
  setTimeout(() => t(/* @__PURE__ */ Error("Timed out waiting for player loading UI.")), 12e4);
3056
3062
  })]).catch((e) => {
@@ -3267,7 +3273,7 @@ function $(e) {
3267
3273
  var Jn = "<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065\"/><path d=\"M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0\"/></svg>", Yn = "<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path fill=\"currentColor\" d=\"M18.3 5.71a1 1 0 0 0-1.41 0L12 10.59 7.11 5.7A1 1 0 0 0 5.7 7.11L10.59 12l-4.9 4.89a1 1 0 1 0 1.42 1.42L12 13.41l4.89 4.9a1 1 0 0 0 1.42-1.42L13.41 12l4.9-4.89a1 1 0 0 0-.01-1.4Z\"/></svg>", Xn = "<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 10h-4V6m6-2l-6 6m-8 4h4v4m0-4l-6 6\"/></svg>", Zn = "<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 4h4v4m-6 2l6-6M8 20H4v-4m0 4l6-6\"/></svg>";
3268
3274
  function Qn(e, t, n) {
3269
3275
  ke(De);
3270
- let r = ie({
3276
+ let r = ae({
3271
3277
  galleryThumb: t.galleryThumb,
3272
3278
  avatarImage: t.avatarImage,
3273
3279
  backgroundImage: t.backgroundImage,
@@ -3361,48 +3367,48 @@ function tr(e, t) {
3361
3367
  v.className = "liforma-ew__stage";
3362
3368
  let y = document.createElement("div");
3363
3369
  y.className = "liforma-ew__status", y.hidden = !0, f.append(v, y), u.append(d, f), a.append(o, l, u, p), e.replaceChildren(a);
3364
- let b = null, x = !1, S = !1, C = !1, w = !1, T = !1, E = !1, D = !1, O = 0, k = "", A = null, j = null, M = null, N = null, P = null, F = null, I = null, ee = 0, te = 0, L = null, ne = !1, re = new AbortController(), R = t.parallax !== !1, z = () => {
3370
+ let b = null, x = !1, S = !1, C = !1, w = !1, T = !1, E = !1, D = !1, O = 0, k = "", A = null, j = null, M = null, N = null, P = null, F = null, I = null, ee = 0, te = 0, L = null, ne = !1, re = new AbortController(), ie = t.parallax !== !1, R = () => {
3365
3371
  let e = a.dataset.state;
3366
3372
  return e === "expanded" || e === "docked" || e === "collapsed" ? e : "collapsed";
3367
- }, B = () => {
3373
+ }, z = () => {
3368
3374
  M !== null && (clearTimeout(M), M = null);
3369
- }, V = () => {
3375
+ }, B = () => {
3370
3376
  N !== null && (clearTimeout(N), N = null), a.classList.remove("liforma-ew--layout-settling");
3371
- }, ie = () => {
3377
+ }, ae = () => {
3372
3378
  for (let e of [
3373
3379
  f,
3374
3380
  l,
3375
3381
  p
3376
3382
  ]) e.style.removeProperty("left"), e.style.removeProperty("top"), e.style.removeProperty("width"), e.style.removeProperty("height"), e.style.removeProperty("right"), e.style.removeProperty("bottom");
3377
3383
  p.classList.remove("liforma-ew__toolbar--dragging"), a.classList.remove("liforma-ew--dock-dragging");
3378
- }, H = (e, t, n, r) => {
3384
+ }, V = (e, t, n, r) => {
3379
3385
  let i = (i) => {
3380
3386
  i.style.left = `${e}px`, i.style.top = `${t}px`, i.style.width = `${n}px`, i.style.height = `${r}px`, i.style.right = "auto", i.style.bottom = "auto";
3381
3387
  };
3382
3388
  i(f), i(l);
3383
3389
  let a = p.offsetWidth || 120;
3384
3390
  p.style.left = `${e + n - a - 10}px`, p.style.top = `${t + 10}px`, p.style.right = "auto", p.style.bottom = "auto", p.style.width = "auto", p.style.height = "auto";
3385
- }, ae = (e, t) => {
3386
- if (z() !== "docked") return;
3391
+ }, H = (e, t) => {
3392
+ if (R() !== "docked") return;
3387
3393
  let n = Hn(), r = Wn(e - ee, t - te, n);
3388
- P = r.left, F = r.top, H(r.left, r.top, n.width, n.height);
3394
+ P = r.left, F = r.top, V(r.left, r.top, n.width, n.height);
3389
3395
  }, oe = (e, t) => {
3390
- if (z() !== "docked" || !Number.isFinite(e) || !Number.isFinite(t) || e === 0 && t === 0) return;
3396
+ if (R() !== "docked" || !Number.isFinite(e) || !Number.isFinite(t) || e === 0 && t === 0) return;
3391
3397
  let n = Hn(), r = P ?? f.getBoundingClientRect().left, i = F ?? f.getBoundingClientRect().top, a = Wn(r + e, i + t, n);
3392
- P = a.left, F = a.top, H(a.left, a.top, n.width, n.height);
3398
+ P = a.left, F = a.top, V(a.left, a.top, n.width, n.height);
3393
3399
  }, se = (e) => {
3394
- L === "toolbar" && (I === null || e.pointerId !== I || (e.preventDefault(), ae(e.clientX, e.clientY)));
3400
+ L === "toolbar" && (I === null || e.pointerId !== I || (e.preventDefault(), H(e.clientX, e.clientY)));
3395
3401
  }, U = (e) => {
3396
3402
  if (I === null || e && e.pointerId !== I) return;
3397
3403
  let t = L;
3398
3404
  I = null, L = null, p.classList.remove("liforma-ew__toolbar--dragging"), a.classList.remove("liforma-ew--dock-dragging"), t === "toolbar" && ne && (ne = !1, window.removeEventListener("pointermove", se), window.removeEventListener("pointerup", U), window.removeEventListener("pointercancel", U));
3399
3405
  }, ce = (e, t, n) => {
3400
- if (S || z() !== "docked" || !Gn() || I !== null) return;
3406
+ if (S || R() !== "docked" || !Gn() || I !== null) return;
3401
3407
  I = n, L = "toolbar", p.classList.add("liforma-ew__toolbar--dragging"), a.classList.add("liforma-ew--dock-dragging");
3402
3408
  let r = f.getBoundingClientRect();
3403
3409
  ee = e - r.left, te = t - r.top, ne || (ne = !0, window.addEventListener("pointermove", se), window.addEventListener("pointerup", U), window.addEventListener("pointercancel", U));
3404
3410
  }, le = (e) => {
3405
- if (S || z() !== "docked" || !Gn() || I !== null) return;
3411
+ if (S || R() !== "docked" || !Gn() || I !== null) return;
3406
3412
  I = e.pointerId, L = "player", p.classList.add("liforma-ew__toolbar--dragging"), a.classList.add("liforma-ew--dock-dragging");
3407
3413
  let t = f.getBoundingClientRect();
3408
3414
  P = t.left, F = t.top;
@@ -3411,7 +3417,7 @@ function tr(e, t) {
3411
3417
  }, ue = (e) => {
3412
3418
  L === "player" && (I === null || e.pointerId !== I || U());
3413
3419
  }, G = () => {
3414
- let e = Gn(), t = z();
3420
+ let e = Gn(), t = R();
3415
3421
  if (!e || t !== "expanded" && t !== "docked") {
3416
3422
  h.hidden = !0;
3417
3423
  return;
@@ -3419,7 +3425,7 @@ function tr(e, t) {
3419
3425
  h.hidden = !1, t === "docked" ? (h.innerHTML = Zn, h.setAttribute("aria-label", "Maximize")) : (h.innerHTML = Xn, h.setAttribute("aria-label", "Reduce"));
3420
3426
  }, de = (e) => {
3421
3427
  let t = Hn(), n = e && P !== null && F !== null ? Wn(P, F, t) : Un(t);
3422
- n = Wn(n.left, n.top, t), P = n.left, F = n.top, H(n.left, n.top, t.width, t.height), G();
3428
+ n = Wn(n.left, n.top, t), P = n.left, F = n.top, V(n.left, n.top, t.width, t.height), G();
3423
3429
  }, fe = () => {
3424
3430
  a.classList.remove("liforma-ew--session-revealed"), requestAnimationFrame(() => {
3425
3431
  requestAnimationFrame(() => {
@@ -3427,7 +3433,7 @@ function tr(e, t) {
3427
3433
  });
3428
3434
  });
3429
3435
  }, pe = (e) => {
3430
- if (V(), a.classList.remove("liforma-ew--session-revealed"), a.classList.add("liforma-ew--layout-settling"), e(), !D) {
3436
+ if (B(), a.classList.remove("liforma-ew--session-revealed"), a.classList.add("liforma-ew--layout-settling"), e(), !D) {
3431
3437
  a.classList.remove("liforma-ew--layout-settling");
3432
3438
  return;
3433
3439
  }
@@ -3439,7 +3445,7 @@ function tr(e, t) {
3439
3445
  a.classList.remove("liforma-ew--layout-settling"), fe();
3440
3446
  }, 220);
3441
3447
  }, me = () => (a.classList.add("liforma-ew--session-concealing"), a.classList.remove("liforma-ew--session-revealed"), new Promise((e) => {
3442
- B(), M = setTimeout(() => {
3448
+ z(), M = setTimeout(() => {
3443
3449
  M = null, a.classList.remove("liforma-ew--session-concealing"), e();
3444
3450
  }, 280);
3445
3451
  })), he = {
@@ -3466,7 +3472,7 @@ function tr(e, t) {
3466
3472
  w = !0, a.dataset.warm = "true", l.hidden = !1, D || (o.tabIndex = -1, o.setAttribute("aria-hidden", "true")), t.onPrefetchReady?.();
3467
3473
  }, ye = (e) => {
3468
3474
  A?.(), A = null;
3469
- let t = Qn(s, e, { parallax: R });
3475
+ let t = Qn(s, e, { parallax: ie });
3470
3476
  return t ? (A = t, !0) : !1;
3471
3477
  }, be = () => {
3472
3478
  if (ye(he)) {
@@ -3497,9 +3503,10 @@ function tr(e, t) {
3497
3503
  }), q = () => ({
3498
3504
  ...t.fit ? { fit: t.fit } : {},
3499
3505
  startButton: $n(t),
3500
- ...t.showFeedback === void 0 ? {} : { showFeedback: t.showFeedback }
3506
+ ...t.showFeedback === void 0 ? {} : { showFeedback: t.showFeedback },
3507
+ ...t.interaction ? { interaction: t.interaction } : {}
3501
3508
  }), J = (e = !0) => {
3502
- o.hidden = !0, u.hidden = !1, p.hidden = !1, u.setAttribute("aria-modal", "true"), ie(), a.dataset.state = "expanded", K(null), typeof document < "u" && (k = document.body.style.overflow, document.body.style.overflow = "hidden"), G(), e && t.onExpanded?.();
3509
+ o.hidden = !0, u.hidden = !1, p.hidden = !1, u.setAttribute("aria-modal", "true"), ae(), a.dataset.state = "expanded", K(null), typeof document < "u" && (k = document.body.style.overflow, document.body.style.overflow = "hidden"), G(), e && t.onExpanded?.();
3503
3510
  }, Se = () => {
3504
3511
  o.hidden = !0, u.hidden = !1, p.hidden = !1, u.setAttribute("aria-modal", "false"), a.dataset.state = "docked", K(null), typeof document < "u" && (document.body.style.overflow = k), de(!0), G(), b?.setWidgetChrome("docked");
3505
3512
  }, Ce = (e) => {
@@ -3511,9 +3518,9 @@ function tr(e, t) {
3511
3518
  S || t.onFeedbackFailed?.(e);
3512
3519
  });
3513
3520
  }, we = () => {
3514
- V(), u.hidden = !0, p.hidden = !0, ie(), a.dataset.state = "collapsed", a.classList.remove("liforma-ew--session-revealed"), a.classList.remove("liforma-ew--session-concealing"), g.setAttribute("aria-pressed", "false"), o.hidden = !1, o.tabIndex = 0, o.removeAttribute("aria-hidden"), C && (o.disabled = !1), K(null), typeof document < "u" && (document.body.style.overflow = k), G();
3521
+ B(), u.hidden = !0, p.hidden = !0, ae(), a.dataset.state = "collapsed", a.classList.remove("liforma-ew--session-revealed"), a.classList.remove("liforma-ew--session-concealing"), g.setAttribute("aria-pressed", "false"), o.hidden = !1, o.tabIndex = 0, o.removeAttribute("aria-hidden"), C && (o.disabled = !1), K(null), typeof document < "u" && (document.body.style.overflow = k), G();
3515
3522
  }, Te = () => {
3516
- B(), V(), O += 1, x = !1, w = !1, T = !1, E = !1, D = !1;
3523
+ z(), B(), O += 1, x = !1, w = !1, T = !1, E = !1, D = !1;
3517
3524
  let e = b;
3518
3525
  b = null, e?.destroy(), v.replaceChildren(), l.replaceChildren(), l.hidden = !0, delete a.dataset.warm, delete a.dataset.live, a.classList.remove("liforma-ew--session-revealed");
3519
3526
  }, Ee = () => {
@@ -3528,19 +3535,19 @@ function tr(e, t) {
3528
3535
  Te(), we(), t.onCollapsed?.(), t.onClose?.();
3529
3536
  }
3530
3537
  }, De = () => {
3531
- S || Gn() && z() === "expanded" && pe(() => {
3538
+ S || Gn() && R() === "expanded" && pe(() => {
3532
3539
  Se();
3533
3540
  });
3534
3541
  }, Oe = () => {
3535
- S || z() === "docked" && (U(), pe(() => {
3536
- ie(), J(!1), b?.setWidgetChrome("expanded");
3542
+ S || R() === "docked" && (U(), pe(() => {
3543
+ ae(), J(!1), b?.setWidgetChrome("expanded");
3537
3544
  }));
3538
3545
  }, ke = () => {
3539
- !b || !D || (B(), a.classList.remove("liforma-ew--session-revealed"), J(), b.setWidgetChrome("expanded"), x = !1, fe());
3546
+ !b || !D || (z(), a.classList.remove("liforma-ew--session-revealed"), J(), b.setWidgetChrome("expanded"), x = !1, fe());
3540
3547
  }, Ae = () => {
3541
- !b || !E || D || (B(), a.classList.remove("liforma-ew--session-revealed"), J(), x = !1, w || b.setWidgetChrome("expanded"));
3548
+ !b || !E || D || (z(), a.classList.remove("liforma-ew--session-revealed"), J(), x = !1, w || b.setWidgetChrome("expanded"));
3542
3549
  }, je = (e) => {
3543
- S || e !== O && !D || (B(), a.classList.remove("liforma-ew--session-revealed"), J(), x = !1, D && fe());
3550
+ S || e !== O && !D || (z(), a.classList.remove("liforma-ew--session-revealed"), J(), x = !1, D && fe());
3544
3551
  }, Ne = () => {
3545
3552
  if (S || T || w || b || $(a.dataset.state)) return;
3546
3553
  T = !0;
@@ -3663,22 +3670,22 @@ function tr(e, t) {
3663
3670
  Fe();
3664
3671
  }
3665
3672
  }, Le = (e) => {
3666
- if (e.stopPropagation(), z() === "expanded") {
3673
+ if (e.stopPropagation(), R() === "expanded") {
3667
3674
  De();
3668
3675
  return;
3669
3676
  }
3670
- z() === "docked" && Oe();
3677
+ R() === "docked" && Oe();
3671
3678
  }, Re = (e) => {
3672
3679
  g.setAttribute("aria-pressed", e ? "true" : "false");
3673
3680
  }, ze = (e) => {
3674
3681
  e.stopPropagation(), $(a.dataset.state) && b?.toggleAudioSettings();
3675
3682
  }, Ve = (e) => {
3676
- z() === "docked" && Gn() && (e.target?.closest("button") || (e.preventDefault(), ce(e.clientX, e.clientY, e.pointerId)));
3683
+ R() === "docked" && Gn() && (e.target?.closest("button") || (e.preventDefault(), ce(e.clientX, e.clientY, e.pointerId)));
3677
3684
  }, He = (e) => {
3678
3685
  e.key === "Escape" && $(a.dataset.state) && (e.preventDefault(), Ee());
3679
3686
  }, Ue = () => {
3680
3687
  if (!S) {
3681
- if (z() === "docked") {
3688
+ if (R() === "docked") {
3682
3689
  if (!Gn()) {
3683
3690
  Oe();
3684
3691
  return;
@@ -3692,7 +3699,7 @@ function tr(e, t) {
3692
3699
  }
3693
3700
  }, We = typeof window < "u" ? window.matchMedia(Fn) : null, Ge = () => {
3694
3701
  if (!S) {
3695
- if (z() === "docked" && !Gn()) {
3702
+ if (R() === "docked" && !Gn()) {
3696
3703
  Oe();
3697
3704
  return;
3698
3705
  }