@liforma/client 0.4.13 → 0.4.15

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 (88) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +4 -4
  3. package/dist/next/index.js +704 -623
  4. package/dist/next/index.js.map +1 -1
  5. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  6. package/dist/next/thumbnail/index.d.ts +1 -0
  7. package/dist/next/thumbnail/index.d.ts.map +1 -1
  8. package/dist/next/thumbnail/locationPlate.d.ts +3 -3
  9. package/dist/next/thumbnail/locationPlate.d.ts.map +1 -1
  10. package/dist/next/thumbnail/plateDelivery.d.ts +18 -0
  11. package/dist/next/thumbnail/plateDelivery.d.ts.map +1 -0
  12. package/dist/next/thumbnail/plateDelivery.test.d.ts +2 -0
  13. package/dist/next/thumbnail/plateDelivery.test.d.ts.map +1 -0
  14. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +1 -1
  15. package/dist/next/thumbnail.js +147 -91
  16. package/dist/next/thumbnail.js.map +1 -1
  17. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  18. package/dist/next/v2/embed/protocol.d.ts +7 -7
  19. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  20. package/dist/next/v2/experience.d.ts +11 -5
  21. package/dist/next/v2/experience.d.ts.map +1 -1
  22. package/dist/next/v2/shims/embedBaseUrl.d.ts +4 -1
  23. package/dist/next/v2/shims/embedBaseUrl.d.ts.map +1 -1
  24. package/dist/next/v2/types/sessionLaunch.d.ts +6 -0
  25. package/dist/next/v2/types/sessionLaunch.d.ts.map +1 -1
  26. package/dist/npm/index.js +494 -469
  27. package/dist/npm/index.js.map +1 -1
  28. package/dist/npm/thumbnail/index.d.ts +1 -0
  29. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  30. package/dist/npm/thumbnail/index.js +106 -70
  31. package/dist/npm/thumbnail/index.js.map +1 -1
  32. package/dist/npm/thumbnail/locationPlate.d.ts +3 -3
  33. package/dist/npm/thumbnail/locationPlate.d.ts.map +1 -1
  34. package/dist/npm/thumbnail/plateDelivery.d.ts +18 -0
  35. package/dist/npm/thumbnail/plateDelivery.d.ts.map +1 -0
  36. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +1 -1
  37. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  38. package/dist/npm/v2/embed/protocol.d.ts +7 -7
  39. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  40. package/dist/npm/v2/experience.d.ts +11 -5
  41. package/dist/npm/v2/experience.d.ts.map +1 -1
  42. package/dist/npm/v2/index.d.ts +1 -1
  43. package/dist/npm/v2/index.d.ts.map +1 -1
  44. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  45. package/dist/npm/v2/npm.d.ts +1 -1
  46. package/dist/npm/v2/npm.d.ts.map +1 -1
  47. package/dist/npm/v2/shims/embedBaseUrl.d.ts +4 -1
  48. package/dist/npm/v2/shims/embedBaseUrl.d.ts.map +1 -1
  49. package/dist/npm/v2/types/index.d.ts +1 -1
  50. package/dist/npm/v2/types/index.d.ts.map +1 -1
  51. package/dist/npm/v2/types/sessionLaunch.d.ts +6 -0
  52. package/dist/npm/v2/types/sessionLaunch.d.ts.map +1 -1
  53. package/dist/react/component/experienceComponentLaunch.d.ts.map +1 -1
  54. package/dist/react/component/experienceComponentRuntime.d.ts +3 -1
  55. package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -1
  56. package/dist/react/component/experienceComponentTypes.d.ts +9 -4
  57. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  58. package/dist/react/index.js +733 -640
  59. package/dist/react/index.js.map +1 -1
  60. package/dist/react/react/Experience.d.ts.map +1 -1
  61. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  62. package/dist/react/thumbnail/index.d.ts +1 -0
  63. package/dist/react/thumbnail/index.d.ts.map +1 -1
  64. package/dist/react/thumbnail/locationPlate.d.ts +3 -3
  65. package/dist/react/thumbnail/locationPlate.d.ts.map +1 -1
  66. package/dist/react/thumbnail/plateDelivery.d.ts +18 -0
  67. package/dist/react/thumbnail/plateDelivery.d.ts.map +1 -0
  68. package/dist/react/thumbnail/plateDelivery.test.d.ts +2 -0
  69. package/dist/react/thumbnail/plateDelivery.test.d.ts.map +1 -0
  70. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +1 -1
  71. package/dist/react/thumbnail.js +147 -91
  72. package/dist/react/thumbnail.js.map +1 -1
  73. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  74. package/dist/react/v2/embed/protocol.d.ts +7 -7
  75. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  76. package/dist/react/v2/experience.d.ts +11 -5
  77. package/dist/react/v2/experience.d.ts.map +1 -1
  78. package/dist/react/v2/shims/embedBaseUrl.d.ts +4 -1
  79. package/dist/react/v2/shims/embedBaseUrl.d.ts.map +1 -1
  80. package/dist/react/v2/types/sessionLaunch.d.ts +6 -0
  81. package/dist/react/v2/types/sessionLaunch.d.ts.map +1 -1
  82. package/dist/sdk/v2/client.js +3 -3
  83. package/dist/sdk/v2/client.js.map +1 -1
  84. package/dist/sdk/v2/thumbnail.js +2 -2
  85. package/dist/sdk/v2/thumbnail.js.map +1 -1
  86. package/dist/svelte/Experience.svelte +12 -0
  87. package/dist/svelte/ExperienceThumbnail.svelte +49 -8
  88. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Experience.d.ts","sourceRoot":"","sources":["../../../src/react/Experience.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE/F,eAAO,MAAM,UAAU,8GA2QrB,CAAC;AAEH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"Experience.d.ts","sourceRoot":"","sources":["../../../src/react/Experience.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE/F,eAAO,MAAM,UAAU,8GAiRrB,CAAC;AAEH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExperienceThumbnail.d.ts","sourceRoot":"","sources":["../../../src/react/ExperienceThumbnail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMN,KAAK,UAAU,IAAI,eAAe,EAElC,MAAM,OAAO,CAAC;AAEf,OAAO,EAYN,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,wBAAwB,GAAG;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,sCA4VlE"}
1
+ {"version":3,"file":"ExperienceThumbnail.d.ts","sourceRoot":"","sources":["../../../src/react/ExperienceThumbnail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMN,KAAK,UAAU,IAAI,eAAe,EAElC,MAAM,OAAO,CAAC;AAEf,OAAO,EAgBN,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,wBAAwB,GAAG;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,sCAiYlE"}
@@ -11,4 +11,5 @@ export { prefersScrollLinkedParallax, horizontalParallaxFromViewportY, attachScr
11
11
  export { attachThumbnailParallax } from './attachThumbnailParallax';
12
12
  export { EXPERIENCE_THUMBNAIL_CSS } from './styles';
13
13
  export { ensureExperienceThumbnailStyles } from './ensureStyles';
14
+ export { isColourPlateWebpUrl, supportsAvifDecode, thumbnailColourPlateWebpFallbackUrl, thumbnailLocationPlateFallbackUrl, thumbnailPlateSrc, toAvifPlateUrl } from './plateDelivery';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACN,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,8BAA8B,EAC9B,iCAAiC,EACjC,kBAAkB,EAClB,8BAA8B,EAC9B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACN,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,4BAA4B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,2BAA2B,EAC3B,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACN,8BAA8B,EAC9B,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,8BAA8B,EAC9B,iCAAiC,EACjC,kBAAkB,EAClB,8BAA8B,EAC9B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACN,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,4BAA4B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,2BAA2B,EAC3B,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,EACnC,iCAAiC,EACjC,iBAAiB,EACjB,cAAc,EACd,MAAM,iBAAiB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /** Location colour plates used by ExperienceThumbnail (no zoom/portrait crops). */
2
- export declare const THUMBNAIL_LOCATION_PLATE_SIZES: readonly ["256x256", "800x450", "1672x941"];
2
+ export declare const THUMBNAIL_LOCATION_PLATE_SIZES: readonly ["256x256", "400x225", "800x450", "1672x941"];
3
3
  export type ThumbnailLocationPlateSize = (typeof THUMBNAIL_LOCATION_PLATE_SIZES)[number];
4
4
  /**
5
- * Square / portrait hosts keep the gallery crop. Landscape hosts use the 16:9 plate
5
+ * Square / portrait hosts keep the gallery crop. Landscape hosts use a 16:9 plate
6
6
  * so cover-fit fills height instead of clipping the top and bottom of a square.
7
- * Unmeasured boxes stay on `256x256`.
7
+ * Unmeasured boxes stay on `256x256`. Hosts 225px tall or smaller use `400x225`.
8
8
  */
9
9
  export declare function pickThumbnailLocationPlateSize(width: number, height: number): ThumbnailLocationPlateSize;
10
10
  export declare function rewriteThumbnailLocationPlateSize(url: string, size: ThumbnailLocationPlateSize): string;
@@ -1 +1 @@
1
- {"version":3,"file":"locationPlate.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/locationPlate.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,6CAA8C,CAAC;AAC1F,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAIzF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACZ,0BAA0B,CAO5B;AAED,wBAAgB,iCAAiC,CAChD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,0BAA0B,GAC9B,MAAM,CAQR;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAC5C,MAAM,IAAI,CAWZ"}
1
+ {"version":3,"file":"locationPlate.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/locationPlate.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,wDAAyD,CAAC;AACrG,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAIzF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACZ,0BAA0B,CAQ5B;AAED,wBAAgB,iCAAiC,CAChD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,0BAA0B,GAC9B,MAAM,CAQR;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAC5C,MAAM,IAAI,CAWZ"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * CDN colour-plate delivery for thumbnails (avatars + locations).
3
+ * Catalogue identity stays `.webp`; fetch uses `.avif` when the browser can decode it.
4
+ * Depth maps stay WebP. Costume rendered composites have AVIF siblings from the compose worker.
5
+ */
6
+ /** True when this URL is a colour plate WebP that may have an AVIF sibling (not depth). */
7
+ export declare function isColourPlateWebpUrl(url: string): boolean;
8
+ /** Rewrite a colour-plate `.webp` path to `.avif`, preserving query/hash. */
9
+ export declare function toAvifPlateUrl(url: string): string | null;
10
+ export declare function supportsAvifDecode(): Promise<boolean>;
11
+ export declare function resetAvifDecodeSupportCacheForTests(): void;
12
+ /** WebP catalogue URL → AVIF sibling when `useAvif` is true. */
13
+ export declare function thumbnailPlateSrc(url: string, useAvif: boolean): string;
14
+ /** Colour-plate `.avif` → catalogue `.webp` (compose worker / missing sibling). */
15
+ export declare function thumbnailColourPlateWebpFallbackUrl(url: string): string | null;
16
+ /** 400×225 is colour-only; if missing, step up to the published 800×450 sibling. */
17
+ export declare function thumbnailLocationPlateFallbackUrl(url: string): string | null;
18
+ //# sourceMappingURL=plateDelivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plateDelivery.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/plateDelivery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASzD;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOzD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAWrD;AAED,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGvE;AAED,mFAAmF;AACnF,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9E;AAED,oFAAoF;AACpF,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plateDelivery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plateDelivery.test.d.ts","sourceRoot":"","sources":["../../../src/thumbnail/plateDelivery.test.ts"],"names":[],"mappings":""}
@@ -3,7 +3,7 @@ export type { ThumbnailLocationPlateSize };
3
3
  /**
4
4
  * Rewrite known Liforma CDN URLs to gallery thumb tiers.
5
5
  * Avatars: /{tier}/ → /256/; locations: -{WxH}.webp → the requested plate
6
- * (`256x256` by default, `800x450` / `1672x941` for landscape hosts).
6
+ * (`256x256` by default, `400x225` / `800x450` / `1672x941` for landscape hosts).
7
7
  * Catalog paths (`/locations/…/scene`, `/avatars/{id}`) expand onto the CDN first.
8
8
  * Unrecognized URLs are returned unchanged.
9
9
  */
@@ -8,9 +8,9 @@ function s(e) {
8
8
  }
9
9
  //#endregion
10
10
  //#region src/thumbnail/locationPlate.ts
11
- var c = /(-)(\d+x\d+)(\.webp)(\?|$)/i;
11
+ var c = /(-)(\d+x\d+)(\.(?:webp|avif))(\?|$)/i;
12
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";
13
+ return !Number.isFinite(e) || !Number.isFinite(t) || e < 1 || t < 1 || e <= t ? "256x256" : t <= 225 ? "400x225" : e > 800 || t > 450 ? "1672x941" : "800x450";
14
14
  }
15
15
  function u(e, t) {
16
16
  let n = e.trim();
@@ -24,7 +24,7 @@ function ee(e, t) {
24
24
  let r = new ResizeObserver(n);
25
25
  return r.observe(e), () => r.disconnect();
26
26
  }
27
- var d = /-(256x256|400x450|800x450|836x971|1672x941|167x94)$/i;
27
+ var d = /-(256x256|400x225|400x450|800x450|836x971|1672x941|167x94)$/i;
28
28
  function f(e) {
29
29
  return e?.trim().replace(/\/$/, "") || "https://cdn.liforma.ai";
30
30
  }
@@ -232,41 +232,76 @@ function I() {
232
232
  function L() {
233
233
  F === 0 && (F = requestAnimationFrame(I));
234
234
  }
235
- function R() {
235
+ function fe() {
236
236
  P || typeof window > "u" || (P = !0, window.addEventListener("scroll", L, { passive: !0 }), window.addEventListener("resize", L, { passive: !0 }));
237
237
  }
238
- function z() {
238
+ function R() {
239
239
  N.size > 0 || !P || typeof window > "u" || (P = !1, F !== 0 && (cancelAnimationFrame(F), F = 0), window.removeEventListener("scroll", L), window.removeEventListener("resize", L));
240
240
  }
241
- function fe(e, t) {
241
+ function pe(e, t) {
242
242
  if (!j()) return () => {};
243
243
  let n = {
244
244
  element: e,
245
245
  onParallax: t.onParallax,
246
246
  pointerActive: t.pointerActive
247
247
  };
248
- return N.add(n), R(), n.pointerActive?.() || t.onParallax(M(e.getBoundingClientRect(), window.innerHeight)), () => {
249
- N.delete(n), z();
248
+ return N.add(n), fe(), n.pointerActive?.() || t.onParallax(M(e.getBoundingClientRect(), window.innerHeight)), () => {
249
+ N.delete(n), R();
250
250
  };
251
251
  }
252
252
  //#endregion
253
253
  //#region src/thumbnail/styles.ts
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;\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;
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;
255
+ function he(e) {
256
+ if (typeof document > "u" || z) return;
257
257
  if (document.querySelector("style[data-liforma-et]")) {
258
- B = !0;
258
+ z = !0;
259
259
  return;
260
260
  }
261
261
  let t = document.createElement("style");
262
- t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t), B = !0;
262
+ t.setAttribute("data-liforma-et", ""), t.textContent = e, document.head.appendChild(t), z = !0;
263
+ }
264
+ //#endregion
265
+ //#region src/thumbnail/plateDelivery.ts
266
+ var ge = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=", B = null;
267
+ function _e(e) {
268
+ let t = e.trim();
269
+ if (!t || t.startsWith("blob:") || t.startsWith("data:")) return !1;
270
+ let n = t.split(/[?#]/)[0] ?? t, r = /\/avatars\//i.test(n), i = /\/locations\//i.test(n);
271
+ return !r && !i || /\.depth\.webp$/i.test(n) ? !1 : /\.webp$/i.test(n);
272
+ }
273
+ function V(e) {
274
+ if (!_e(e)) return null;
275
+ let t = e.search(/[?#]/);
276
+ if (t < 0) return e.replace(/\.webp$/i, ".avif");
277
+ let n = e.slice(0, t), r = e.slice(t);
278
+ return `${n.replace(/\.webp$/i, ".avif")}${r}`;
279
+ }
280
+ function ve() {
281
+ return typeof Image > "u" ? Promise.resolve(!1) : (B ||= new Promise((e) => {
282
+ let t = new Image();
283
+ t.onload = () => e(t.naturalWidth > 0 && t.naturalHeight > 0), t.onerror = () => e(!1), t.src = ge;
284
+ }), B);
285
+ }
286
+ function H(e, t) {
287
+ return t ? V(e) ?? e : e;
288
+ }
289
+ function ye(e) {
290
+ let t = e.trim(), n = t.search(/[?#]/), r = n < 0 ? t : t.slice(0, n);
291
+ if (!/\.avif$/i.test(r)) return null;
292
+ let i = r.replace(/\.avif$/i, ".webp");
293
+ return n < 0 ? i : `${i}${t.slice(n)}`;
294
+ }
295
+ function be(e) {
296
+ let t = e.trim();
297
+ return /-400x225\.(webp|avif)(?:$|[?#])/i.test(t) ? t.replace(/-400x225\.(webp|avif)/i, "-800x450.$1") : null;
263
298
  }
264
299
  //#endregion
265
300
  //#region src/react/ExperienceThumbnail.tsx
266
- function V(e, t) {
301
+ function U(e, t) {
267
302
  return `${e} liforma-et__media${t ? " liforma-et__media--ready" : ""}`;
268
303
  }
269
- function he(c) {
304
+ function xe(c) {
270
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({
271
306
  galleryThumb: u,
272
307
  avatarImage: d,
@@ -289,11 +324,13 @@ function he(c) {
289
324
  href: g,
290
325
  hasClickHandler: typeof v == "function",
291
326
  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 : "";
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 : "";
293
328
  e(() => {
294
- me(pe);
329
+ he(me), ve().then((e) => {
330
+ fe(e), z(!0);
331
+ });
295
332
  }, []), e(() => {
296
- Se(se({
333
+ Me(se({
297
334
  href: g,
298
335
  experienceId: h,
299
336
  returnUrl: y,
@@ -307,17 +344,17 @@ function he(c) {
307
344
  b,
308
345
  j
309
346
  ]), e(() => {
310
- W(!1), G(!1), K(!1), ve(!1);
347
+ J(!1), Y(!1), X(!1), Oe(!1), B(!1), V(!1), Se(!1);
311
348
  }, [
312
349
  k?.backgroundImage,
313
350
  k?.foregroundImage,
314
- J
351
+ Q
315
352
  ]), e(() => {
316
353
  let e = T.current;
317
354
  if (e) return ee(e, (e, t) => {
318
355
  le(e), ue(t);
319
356
  });
320
- }, [A, q]), e(() => {
357
+ }, [A, Z]), e(() => {
321
358
  let e = T.current;
322
359
  if (e) {
323
360
  if (!x) {
@@ -332,12 +369,12 @@ function he(c) {
332
369
  x,
333
370
  k,
334
371
  A,
335
- q
372
+ Z
336
373
  ]), e(() => {
337
374
  let e = T.current;
338
- if (!(!e || !P)) return fe(e, {
375
+ if (!(!e || !P)) return pe(e, {
339
376
  onParallax: (e) => {
340
- B(!0), E.current || (H(e), U(0));
377
+ we(!0), E.current || (K(e), q(0));
341
378
  },
342
379
  pointerActive: () => E.current
343
380
  });
@@ -345,23 +382,23 @@ function he(c) {
345
382
  P,
346
383
  k,
347
384
  A,
348
- q
385
+ Z
349
386
  ]);
350
- let Ce = (e) => {
351
- if (!P || z) return;
387
+ let Ne = (e) => {
388
+ if (!P || G) return;
352
389
  let t = e.currentTarget.getBoundingClientRect();
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) => {
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) => {
355
392
  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) => {
393
+ E.current = !1, W(!1), G && t ? (K(M(e.getBoundingClientRect(), window.innerHeight)), q(0)) : G || (K(0), q(0));
394
+ }, Pe = (e) => {
358
395
  if (!P) return;
359
- E.current = !0, e.pointerType === "mouse" && R(!0);
396
+ E.current = !0, e.pointerType === "mouse" && W(!0);
360
397
  let t = e.currentTarget, n = () => {
361
- Y(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
398
+ $(t), window.removeEventListener("pointerup", n), window.removeEventListener("pointercancel", n);
362
399
  };
363
400
  window.addEventListener("pointerup", n), window.addEventListener("pointercancel", n);
364
- }, Te = (e) => {
401
+ }, Fe = (e) => {
365
402
  if (v?.(e), !e.defaultPrevented && j && !y?.trim()) {
366
403
  let t = se({
367
404
  experienceId: h,
@@ -372,106 +409,125 @@ function he(c) {
372
409
  }
373
410
  };
374
411
  if (!k) return null;
375
- let Ee = P && (L || z), De = F && (be || ye || xe), X = [
412
+ let Ie = P && (Ce || G), Le = F && R && (Ae || ke || je), Re = [
376
413
  "liforma-et",
377
414
  N ? "liforma-et--scene" : "",
378
415
  s(ie),
379
- Ee ? "liforma-et--parallax" : "",
380
- z ? "liforma-et--scroll-parallax" : "",
381
- F && !De ? "liforma-et--loading" : "",
382
- De ? "liforma-et--revealed" : "",
416
+ Ie ? "liforma-et--parallax" : "",
417
+ G ? "liforma-et--scroll-parallax" : "",
418
+ F && !Le ? "liforma-et--loading" : "",
419
+ Le ? "liforma-et--revealed" : "",
383
420
  ae
384
- ].filter(Boolean).join(" "), Z = {
385
- "--liforma-et-parallax-x": he,
386
- "--liforma-et-parallax-y": ge
387
- }, Q = (e, t) => {
421
+ ].filter(Boolean).join(" "), ze = {
422
+ "--liforma-et-parallax-x": Te,
423
+ "--liforma-et-parallax-y": Ee
424
+ }, Be = (e, t) => {
388
425
  e.complete && t(!0);
389
- }, Oe = /* @__PURE__ */ o(i, { children: [
426
+ }, Ve = /* @__PURE__ */ o(i, { children: [
390
427
  /* @__PURE__ */ a("span", {
391
428
  className: "liforma-et__placeholder",
392
429
  "aria-hidden": "true"
393
430
  }),
394
- F && k.backgroundImage ? /* @__PURE__ */ a("img", {
395
- className: V("liforma-et__background", ye),
396
- src: k.backgroundImage,
431
+ F && R && k.backgroundImage ? /* @__PURE__ */ a("img", {
432
+ className: U("liforma-et__background", ke),
433
+ src: H(k.backgroundImage, L),
397
434
  alt: "",
398
435
  decoding: "async",
399
436
  ref: (e) => {
400
- e && Q(e, W);
437
+ e && Be(e, J);
401
438
  },
402
- onLoad: () => W(!0),
403
- onError: () => W(!0)
439
+ onLoad: () => J(!0),
440
+ onError: (e) => {
441
+ let t = e.currentTarget, n = be(t.src);
442
+ if (n && !ge) {
443
+ B(!0), t.src = n;
444
+ return;
445
+ }
446
+ J(!0);
447
+ }
404
448
  }) : null,
405
- F && J ? /* @__PURE__ */ a("img", {
406
- className: V("liforma-et__avatar", be),
407
- src: J,
449
+ F && R && Q ? /* @__PURE__ */ a("img", {
450
+ className: U("liforma-et__avatar", Ae),
451
+ src: H(Q, L),
408
452
  alt: "",
409
453
  decoding: "async",
410
454
  ref: (e) => {
411
- e && Q(e, G);
455
+ e && Be(e, Y);
412
456
  },
413
- onLoad: () => G(!0),
414
- onError: () => {
415
- k.fallbackImage ? ve(!0) : G(!0);
457
+ onLoad: () => Y(!0),
458
+ onError: (e) => {
459
+ let t = e.currentTarget, n = ye(t.src);
460
+ if (n && !xe) {
461
+ Se(!0), t.src = n;
462
+ return;
463
+ }
464
+ k.fallbackImage ? Oe(!0) : Y(!0);
416
465
  }
417
466
  }) : null,
418
- F && k.foregroundImage ? /* @__PURE__ */ a("img", {
419
- className: V("liforma-et__foreground", xe),
420
- src: k.foregroundImage,
467
+ F && R && k.foregroundImage ? /* @__PURE__ */ a("img", {
468
+ className: U("liforma-et__foreground", je),
469
+ src: H(k.foregroundImage, L),
421
470
  alt: "",
422
471
  decoding: "async",
423
472
  ref: (e) => {
424
- e && Q(e, K);
473
+ e && Be(e, X);
425
474
  },
426
- onLoad: () => K(!0),
427
- onError: () => K(!0)
475
+ onLoad: () => X(!0),
476
+ onError: (e) => {
477
+ let t = e.currentTarget, n = be(t.src);
478
+ if (n && !_e) {
479
+ V(!0), t.src = n;
480
+ return;
481
+ }
482
+ X(!0);
483
+ }
428
484
  }) : null
429
- ] }), ke = {
430
- onPointerDown: we,
431
- onPointerUp: (e) => Y(e.currentTarget),
432
- onPointerCancel: (e) => Y(e.currentTarget),
485
+ ] }), He = {
486
+ onPointerDown: Pe,
487
+ onPointerUp: (e) => $(e.currentTarget),
488
+ onPointerCancel: (e) => $(e.currentTarget),
433
489
  onPointerEnter: (e) => {
434
- P && e.pointerType === "mouse" && R(!0);
490
+ P && e.pointerType === "mouse" && W(!0);
435
491
  },
436
- onPointerMove: Ce,
492
+ onPointerMove: Ne,
437
493
  onPointerLeave: () => {
438
- E.current || (R(!1), z || (H(0), U(0)));
494
+ E.current || (W(!1), G || (K(0), q(0)));
439
495
  }
440
- }, $ = (e) => {
496
+ }, Ue = (e) => {
441
497
  T.current = e;
442
498
  };
443
- return A === "anchor" && q ? /* @__PURE__ */ a("a", {
444
- ref: $,
445
- className: X,
446
- style: Z,
447
- href: q,
499
+ return A === "anchor" && Z ? /* @__PURE__ */ a("a", {
500
+ ref: Ue,
501
+ className: Re,
502
+ style: ze,
503
+ href: Z,
448
504
  target: _,
449
505
  rel: te,
450
506
  "aria-label": m,
451
- onClick: Te,
452
- ...ke,
453
- children: Oe
507
+ onClick: Fe,
508
+ ...He,
509
+ children: Ve
454
510
  }) : A === "button" ? /* @__PURE__ */ a("button", {
455
511
  type: "button",
456
- ref: $,
457
- className: X,
458
- style: Z,
512
+ ref: Ue,
513
+ className: Re,
514
+ style: ze,
459
515
  "aria-label": m,
460
- onClick: Te,
461
- ...ke,
462
- children: Oe
516
+ onClick: Fe,
517
+ ...He,
518
+ children: Ve
463
519
  }) : /* @__PURE__ */ a("div", {
464
- ref: $,
465
- className: X,
466
- style: Z,
520
+ ref: Ue,
521
+ className: Re,
522
+ style: ze,
467
523
  role: m ? "img" : void 0,
468
524
  "aria-label": m || void 0,
469
525
  "aria-hidden": m ? void 0 : !0,
470
- ...ke,
471
- children: Oe
526
+ ...He,
527
+ children: Ve
472
528
  });
473
529
  }
474
530
  //#endregion
475
- export { he as ExperienceThumbnail };
531
+ export { xe as ExperienceThumbnail };
476
532
 
477
533
  //# sourceMappingURL=thumbnail.js.map