{"version":3,"file":"useImageLoadingStatus.cjs","sources":["../../../../src/components/image/useImageLoadingStatus.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nconst doWhenImageLoaded = (image: HTMLImageElement, callback?: () => void) => {\n    let timeout: number | undefined;\n\n    function checkLoaded() {\n        if (image.complete) {\n            clearTimeout(timeout);\n            callback?.();\n            return;\n        }\n        timeout = window.setTimeout(checkLoaded, 50);\n    }\n\n    checkLoaded();\n};\n\nexport const useImageLoadingStatus = (\n    callback?: () => void,\n): [RefObject<HTMLImageElement>, boolean] => {\n    const imageRef = useRef<HTMLImageElement>(null);\n    const [imageLoaded, setImageLoaded] = useState(false);\n\n    useEffect(() => {\n        imageRef.current &&\n            doWhenImageLoaded(imageRef.current, () => {\n                setImageLoaded(true);\n                callback?.();\n            });\n    }, [callback]);\n\n    return [imageRef, imageLoaded];\n};\n"],"names":["callback","imageRef","useRef","imageLoaded","setImageLoaded","useState","useEffect","current","image","timeout","checkLoaded","complete","clearTimeout","window","setTimeout","doWhenImageLoaded"],"mappings":"uIAkBIA,IAEA,MAAMC,EAAWC,EAAAA,OAAyB,OACnCC,EAAaC,GAAkBC,EAAAA,UAAS,GAE/CC,OAAAA,EAAAA,UAAU,KACNL,EAASM,SAtBS,EAACC,EAAyBR,KAChD,IAAIS,GAEJ,SAASC,IACL,GAAIF,EAAMG,SAGN,OAFAC,aAAaH,QACbT,MAGJS,EAAUI,OAAOC,WAAWJ,EAAa,GAC7C,CAEAA,IAWQK,CAAkBd,EAASM,QAAS,KAChCH,GAAe,GACfJ,SAET,CAACA,IAEG,CAACC,EAAUE"}