{"version":3,"file":"useGravatar.mjs","names":["gravatar","loadImages","useEffect","useMemo","useState","GravatarOptions","size","useGravatar","email","t0","$","_c","loaded","setLoaded","t1","url","s","String","protocol","d","t2","t3","then","catch","_temp","err"],"sources":["../../src/utilities/useGravatar.ts"],"sourcesContent":["import * as gravatar from 'gravatar';\nimport loadImages from 'image-promise';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport interface GravatarOptions {\n  size: number;\n}\n\n/**\n * Provides the url to a Gravatar image for an email\n *\n * - Returns null until the image has preloaded so letter avatars can be displayed while loading\n * - Returns null if the email does not have a Gravatar (the loaded image is a 404)\n */\nexport default function useGravatar(\n  email: string,\n  { size }: GravatarOptions\n): string | null {\n  const [loaded, setLoaded] = useState(false);\n\n  const url = useMemo(\n    () =>\n      email &&\n      gravatar.url(email, { s: String(size), protocol: 'https', d: '404' }),\n    [email, size]\n  );\n\n  useEffect(() => {\n    loadImages(url)\n      .then(() => {\n        // Wait for the image to be preloaded into the cache and confirmed to not be a 404\n        setLoaded(loaded);\n      })\n      .catch(err => {\n        // Ignore 404 errors\n      });\n  }, [loaded, url]);\n\n  return url || null;\n}\n"],"mappings":";;;;;;;;;;;AAcA,SAAeO,YAAAC,OAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAEb,MAAA,EAAAL,SAAAG;CAEA,MAAA,CAAAG,QAAAC,aAA4BT,SAAS,MAAM;CAAC,IAAAU;AAAA,KAAAJ,EAAA,OAAAF,SAAAE,EAAA,OAAAJ,MAAA;AAIxCQ,OAAAN,SACAR,SAAQe,IAAKP,OAAO;GAAAQ,GAAKC,OAAOX,KAAK;GAAAY,UAAY;GAAOC,GAAK;GAAO,CAAC;AAAAT,IAAA,KAAAF;AAAAE,IAAA,KAAAJ;AAAAI,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CAHzE,MAAAK,MAEID;CAGF,IAAAM;CAAA,IAAAC;AAAA,KAAAX,EAAA,OAAAE,UAAAF,EAAA,OAAAK,KAAA;AAEQK,aAAA;AACRnB,cAAWc,IAAI,CAAAO,WACP;AAEJT,cAAUD,OAAO;KACjB,CAAAW,MACKC,MAEL;;AACHH,OAAA,CAACT,QAAQG,IAAI;AAAAL,IAAA,KAAAE;AAAAF,IAAA,KAAAK;AAAAL,IAAA,KAAAU;AAAAV,IAAA,KAAAW;QAAA;AAAAD,OAAAV,EAAA;AAAAW,OAAAX,EAAA;;AAThBR,WAAUkB,IASPC,GAAc;AAAA,QAEVN,OAAA;;AAxBM,SAAAS,MAAAC,KAAA"}