Inline animated tv static image
This commit is contained in:
parent
ae99eeb32b
commit
2f4e4854b6
@ -1,16 +1,37 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { useState } from 'react';
|
|
||||||
|
|
||||||
export default function Component({ service }) {
|
export default function Component({ service }) {
|
||||||
const { widget } = service;
|
const { widget } = service;
|
||||||
const { stream, fit = "contain" } = widget;
|
const { stream, fit = "contain" } = widget;
|
||||||
const [src, setImgSrc] = useState(stream);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
<style>{`
|
||||||
|
.tv-static img {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.tv-static {
|
||||||
|
margin: auto;
|
||||||
|
background-image: repeating-radial-gradient(circle at 17% 32%, white, black 0.00085px);
|
||||||
|
animation: tv-static 5s linear infinite;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
@keyframes tv-static {
|
||||||
|
from {
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-size: 200% 200%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
<div className="absolute top-0 bottom-0 right-0 left-0">
|
<div className="absolute top-0 bottom-0 right-0 left-0">
|
||||||
<Image layout="fill" objectFit="fill" className="blur-md" src={src} alt="stream" onError={() => setImgSrc('https://images.unsplash.com/photo-1610337673044-720471f83677?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1972&q=80')} />
|
<Image layout="fill" objectFit="fill" className="blur-md" src={stream} alt="stream" onError={(e) => {e.target.parentElement.parentElement.className='tv-static'}} />
|
||||||
<Image layout="fill" objectFit={fit} className="drop-shadow-2xl" src={src} alt="stream" onError={() => setImgSrc('https://images.unsplash.com/photo-1610337673044-720471f83677?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1972&q=80')} />
|
<Image layout="fill" objectFit={fit} className="drop-shadow-2xl" src={stream} alt="stream" />
|
||||||
</div>
|
</div>
|
||||||
<div className="absolute top-0 right-0 bottom-0 left-0 overflow-clip shadow-[inset_0_0_200px_#000] shadow-theme-700/10 dark:shadow-theme-900/10" />
|
<div className="absolute top-0 right-0 bottom-0 left-0 overflow-clip shadow-[inset_0_0_200px_#000] shadow-theme-700/10 dark:shadow-theme-900/10" />
|
||||||
<div className="h-[68px] overflow-clip" />
|
<div className="h-[68px] overflow-clip" />
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user