{"version":3,"file":"useProgressiveImage.mjs","sources":["../../../../src/components/AlphaAvatar/useProgressiveImage.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\ninterface CachedImage {\n  src: string\n  isLoaded: boolean\n}\n\nconst imageCache = new Map<string, CachedImage>()\n\nfunction getCachedImage(src: string) {\n  const cachedImage = imageCache.get(src)\n  if (!cachedImage) {\n    return null\n  }\n  return cachedImage\n}\n\nexport default function useProgressiveImage(src: string, defaultSrc: string) {\n  const [source, setSource] = useState<CachedImage | null>(() =>\n    getCachedImage(src)\n  )\n\n  useEffect(\n    function updateSource() {\n      if (source?.src === src) {\n        return undefined\n      }\n\n      const cachedImage = getCachedImage(src)\n\n      if (cachedImage?.isLoaded) {\n        setSource(cachedImage)\n        return undefined\n      }\n\n      const image = new Image()\n      image.src = src\n      image.onload = loadImage(true)\n      image.onerror = loadImage(false)\n\n      function loadImage(isLoaded: boolean) {\n        return () => {\n          const loadedImage = {\n            src,\n            isLoaded,\n          }\n          setSource(loadedImage)\n          imageCache.set(src, loadedImage)\n        }\n      }\n    },\n    [src, source]\n  )\n\n  if (!source || !source.isLoaded) {\n    return defaultSrc\n  }\n\n  return source.src\n}\n"],"names":["imageCache","Map","getCachedImage","src","cachedImage","get","useProgressiveImage","defaultSrc","source","setSource","useState","useEffect","updateSource","undefined","isLoaded","image","Image","onload","loadImage","onerror","loadedImage","set"],"mappings":";;AAOA,MAAMA,UAAU,GAAG,IAAIC,GAAG,EAAuB;AAEjD,SAASC,cAAcA,CAACC,GAAW,EAAE;AACnC,EAAA,MAAMC,WAAW,GAAGJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC;EACvC,IAAI,CAACC,WAAW,EAAE;AAChB,IAAA,OAAO,IAAI;AACb;AACA,EAAA,OAAOA,WAAW;AACpB;AAEe,SAASE,mBAAmBA,CAACH,GAAW,EAAEI,UAAkB,EAAE;AAC3E,EAAA,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGC,QAAQ,CAAqB,MACvDR,cAAc,CAACC,GAAG,CACpB,CAAC;AAEDQ,EAAAA,SAAS,CACP,SAASC,YAAYA,GAAG;IACtB,IAAI,CAAAJ,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAEL,GAAG,MAAKA,GAAG,EAAE;AACvB,MAAA,OAAOU,SAAS;AAClB;AAEA,IAAA,MAAMT,WAAW,GAAGF,cAAc,CAACC,GAAG,CAAC;AAEvC,IAAA,IAAIC,WAAW,KAAXA,IAAAA,IAAAA,WAAW,eAAXA,WAAW,CAAEU,QAAQ,EAAE;MACzBL,SAAS,CAACL,WAAW,CAAC;AACtB,MAAA,OAAOS,SAAS;AAClB;AAEA,IAAA,MAAME,KAAK,GAAG,IAAIC,KAAK,EAAE;IACzBD,KAAK,CAACZ,GAAG,GAAGA,GAAG;AACfY,IAAAA,KAAK,CAACE,MAAM,GAAGC,SAAS,CAAC,IAAI,CAAC;AAC9BH,IAAAA,KAAK,CAACI,OAAO,GAAGD,SAAS,CAAC,KAAK,CAAC;IAEhC,SAASA,SAASA,CAACJ,QAAiB,EAAE;AACpC,MAAA,OAAO,MAAM;AACX,QAAA,MAAMM,WAAW,GAAG;UAClBjB,GAAG;AACHW,UAAAA;SACD;QACDL,SAAS,CAACW,WAAW,CAAC;AACtBpB,QAAAA,UAAU,CAACqB,GAAG,CAAClB,GAAG,EAAEiB,WAAW,CAAC;OACjC;AACH;AACF,GAAC,EACD,CAACjB,GAAG,EAAEK,MAAM,CACd,CAAC;AAED,EAAA,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACM,QAAQ,EAAE;AAC/B,IAAA,OAAOP,UAAU;AACnB;EAEA,OAAOC,MAAM,CAACL,GAAG;AACnB;;;;"}