diff options
Diffstat (limited to 'src/utils/video-poster.ts')
| -rw-r--r-- | src/utils/video-poster.ts | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/utils/video-poster.ts b/src/utils/video-poster.ts new file mode 100644 index 0000000..e2e32ed --- /dev/null +++ b/src/utils/video-poster.ts @@ -0,0 +1,27 @@ +import type { Artwork } from '@jet-app/app-store/api/models'; +import type { Profile } from '@amp/web-app-components/src/components/Artwork/types'; +import type { Size } from '@amp/web-app-components/src/types'; +import type { NamedProfile } from 'src/config/components/artwork'; +import { buildSrc } from '@amp/web-app-components/src/components/Artwork/utils/srcset'; +import { getDataFromProfile } from '@amp/web-app-components/src/components/Artwork/utils/artProfile'; + +export const buildPoster = ( + preview: Artwork, + profile: NamedProfile | Profile, + mediaQuery: string, +): ReturnType<typeof buildSrc> => { + const profileData = getDataFromProfile(profile); + const imageAttributes = profileData[mediaQuery as Size] || preview; + const dpr = typeof window !== 'undefined' ? window.devicePixelRatio : 2; + + return buildSrc( + preview.template, + { + crop: 'sr', + width: imageAttributes.width * dpr, + height: imageAttributes.height * dpr, + fileType: 'webp', + }, + {}, + ); +}; |
