{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/FallbackLazyImage/index.tsx"],"sourcesContent":["import React, {\n  CSSProperties,\n  forwardRef,\n  useCallback,\n  useMemo,\n  useState,\n} from 'react';\nimport { LazyImage, LazyImageProps } from '../LazyImage';\n\ninterface FallbackLazyImageProps extends LazyImageProps {\n  fallback: React.JSX.Element;\n  width: string | number;\n  height: string | number;\n  duration?: CSSProperties['transitionDuration'];\n}\n\nexport const FallbackLazyImage = forwardRef<\n  HTMLImageElement,\n  FallbackLazyImageProps\n>(\n  (\n    { width, height, fallback, style, duration = '0.2s', onLoad, ...restProps },\n    ref\n  ) => {\n    const [isLoaded, setIsLoaded] = useState(false);\n\n    const isRenderFallback = !isLoaded;\n\n    const wrapperStyle: CSSProperties = useMemo(\n      () => ({\n        position: 'relative',\n        width,\n        height,\n      }),\n      [width, height]\n    );\n\n    const imageStyle: CSSProperties = useMemo(\n      () => ({\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        opacity: !isRenderFallback ? 1 : 0,\n        transition: `opacity ${duration}`,\n        ...style,\n      }),\n      [isRenderFallback, duration, style]\n    );\n\n    const handleLoad = useCallback(\n      (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n        if (onLoad) onLoad(e);\n        setIsLoaded(true);\n      },\n      [onLoad]\n    );\n\n    return (\n      <div style={wrapperStyle}>\n        {isRenderFallback && fallback}\n        <LazyImage\n          ref={ref}\n          width={width}\n          height={height}\n          style={imageStyle}\n          onLoad={handleLoad}\n          {...restProps}\n        />\n      </div>\n    );\n  }\n);\n\nFallbackLazyImage.displayName = 'FallbackLazyImage';\n"],"mappings":";;;;AAgBA,MAAa,oBAAoB,YAK7B,EAAE,OAAO,QAAQ,UAAU,OAAO,WAAW,QAAQ,QAAQ,GAAG,aAChE,QACG;CACH,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,MAAM,mBAAmB,CAAC;CAE1B,MAAM,eAA8B,eAC3B;EACL,UAAU;EACV;EACA;EACD,GACD,CAAC,OAAO,OAAO,CAChB;CAED,MAAM,aAA4B,eACzB;EACL,UAAU;EACV,KAAK;EACL,MAAM;EACN,SAAS,CAAC,mBAAmB,IAAI;EACjC,YAAY,WAAW;EACvB,GAAG;EACJ,GACD;EAAC;EAAkB;EAAU;EAAM,CACpC;CAED,MAAM,aAAa,aAChB,MAAqD;EACpD,IAAI,QAAQ,OAAO,EAAE;EACrB,YAAY,KAAK;IAEnB,CAAC,OAAO,CACT;CAED,OACE,qBAAC,OAAD;EAAK,OAAO;YAAZ,CACG,oBAAoB,UACrB,oBAAC,WAAD;GACO;GACE;GACC;GACR,OAAO;GACP,QAAQ;GACR,GAAI;GACJ,CAAA,CACE;;EAGX;AAED,kBAAkB,cAAc"}