UNPKG

@useloops/design-system

Version:

The official React based Loops design system

2 lines (1 loc) 1.04 kB
"use strict";var e=require("react/jsx-runtime"),t=require("@mui/material"),i=require("react"),r=require("react-intersection-observer");const s=t.styled("img")(({isLoaded:e})=>({display:"block",width:"100%",objectFit:"cover",height:"100%",opacity:e?1:0,filter:e?"blur(0px)":"blur(15px)",transform:e?"scale(1)":"scale(1.05)",transition:"opacity 0.5s ease-in-out, filter 0.5s ease-in-out, transform 0.5s ease-in-out",transitionDelay:"0.2s"}));module.exports=({children:o,src:n,alt:a,width:h,height:l,containerSx:d,threshold:c=.1,rootMargin:u="500px",...x})=>{const[g,p]=i.useState(!1),{ref:w,inView:m}=r.useInView({threshold:c,rootMargin:u,triggerOnce:!0});return e.jsxs(t.Box,{ref:w,sx:{position:"relative",width:h,height:l,overflow:"hidden",...d},children:[e.jsx(t.Fade,{in:!g,unmountOnExit:!0,children:e.jsx(t.Box,{sx:{width:h,height:l,position:"absolute",inset:0},children:e.jsx(t.Skeleton,{variant:"rectangular",width:"100%",height:"100%"})})}),m&&e.jsx(s,{onLoad:()=>p(!0),alt:a,src:n,width:h,height:l,isLoaded:g,loading:"lazy",...x})]})};