mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
81 lines
3.1 KiB
Vue
81 lines
3.1 KiB
Vue
<template>
|
|
|
|
<div class="video-card">
|
|
<a
|
|
:href="video.endpoint"
|
|
class=""
|
|
>
|
|
<div class="video-card-container relative rounded-lg overflow-hidden bg-black">
|
|
<div class="video-card-image ratio-wrapper">
|
|
<div class="relative overflow-hidden w-full pb-16/9">
|
|
<img
|
|
:srcset="thumbnailSrcset"
|
|
:sizes="thumbnailSizes"
|
|
:src="video.thumbnails.default.url"
|
|
:alt="video.name"
|
|
class="absolute h-full w-full object-cover"
|
|
>
|
|
</div>
|
|
</div>
|
|
<div
|
|
:style="{
|
|
'--gradient-from-color': 'rgba(0, 0, 0, 1)',
|
|
'--gradient-to-color': 'rgba(0, 0, 0, 0.7)'
|
|
}"
|
|
class="video-card-overlay absolute inset-0 flex justify-start items-start bg-gradient-to-tr from-black to-transparent p-4"
|
|
>
|
|
<div class="play-circle w-10 h-10 bg-white-5 flex justify-center items-center outline-0 rounded-full ease">
|
|
<svg
|
|
viewBox="0 0 18 18"
|
|
style="width:18px;height:18px;margin-left:3px"
|
|
>
|
|
<path
|
|
fill="currentColor"
|
|
d="M15.562 8.1L3.87.225c-.818-.562-1.87 0-1.87.9v15.75c0 .9 1.052 1.462 1.87.9L15.563 9.9c.584-.45.584-1.35 0-1.8z"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
<div class="video-card-content absolute inset-0 flex items-end p-4">
|
|
<div class="w-full text-sm text-left whitespace-normal">{{ video.name }}</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
props: {
|
|
video: {
|
|
type: Object,
|
|
required: true
|
|
}
|
|
},
|
|
computed: {
|
|
thumbnailSizes () {
|
|
let maxWidth = 0
|
|
Object.entries(this.video.thumbnails).forEach(([thumbnailKey, thumbnail]) => {
|
|
if (thumbnail.width > maxWidth) maxWidth = thumbnail.width
|
|
})
|
|
|
|
// example:
|
|
// "(max-width: 640px) 100vw, 640px"
|
|
return `(max-width: ${maxWidth}px) 100vw, ${maxWidth}px`
|
|
},
|
|
thumbnailSrcset () {
|
|
// console.log('this.video', this.video)
|
|
|
|
// example:
|
|
// https://vumbnail.com/358629078.jpg 640w, https://vumbnail.com/358629078_large.jpg 640w, https://vumbnail.com/358629078_medium.jpg 200w, https://vumbnail.com/358629078_small.jpg 100w
|
|
return Object.entries(this.video.thumbnails).map(([thumbnailKey, thumbnail]) => {
|
|
// console.log('thumbnail', thumbnail)
|
|
return `${thumbnail.url} ${thumbnail.width}w`
|
|
}).join(', ')
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|