{"version":3,"file":"use-favicon.cjs","names":[],"sources":["../../src/use-favicon/use-favicon.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useIsomorphicEffect } from '../use-isomorphic-effect/use-isomorphic-effect';\n\nconst MIME_TYPES: Record<string, string> = {\n  ico: 'image/x-icon',\n  png: 'image/png',\n  svg: 'image/svg+xml',\n  gif: 'image/gif',\n};\n\nexport function useFavicon(url: string) {\n  const link = useRef<HTMLLinkElement>(null);\n\n  useIsomorphicEffect(() => {\n    if (!url) {\n      return;\n    }\n\n    if (!link.current) {\n      const existingElements = document.querySelectorAll<HTMLLinkElement>('link[rel*=\"icon\"]');\n      existingElements.forEach((element) => document.head.removeChild(element));\n\n      const element = document.createElement('link');\n      element.rel = 'shortcut icon';\n      link.current = element;\n      document.querySelector('head')!.appendChild(element);\n    }\n\n    const splittedUrl = url.split('.');\n    link.current.setAttribute(\n      'type',\n      MIME_TYPES[splittedUrl[splittedUrl.length - 1].toLowerCase()]\n    );\n    link.current.setAttribute('href', url);\n  }, [url]);\n}\n"],"mappings":";;;;AAGA,MAAM,aAAqC;CACzC,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACN;AAED,SAAgB,WAAW,KAAa;CACtC,MAAM,QAAA,GAAA,MAAA,QAA+B,KAAK;AAE1C,+BAAA,0BAA0B;AACxB,MAAI,CAAC,IACH;AAGF,MAAI,CAAC,KAAK,SAAS;AACQ,YAAS,iBAAkC,sBAAoB,CACvE,SAAS,YAAY,SAAS,KAAK,YAAY,QAAQ,CAAC;GAEzE,MAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,WAAQ,MAAM;AACd,QAAK,UAAU;AACf,YAAS,cAAc,OAAO,CAAE,YAAY,QAAQ;;EAGtD,MAAM,cAAc,IAAI,MAAM,IAAI;AAClC,OAAK,QAAQ,aACX,QACA,WAAW,YAAY,YAAY,SAAS,GAAG,aAAa,EAC7D;AACD,OAAK,QAAQ,aAAa,QAAQ,IAAI;IACrC,CAAC,IAAI,CAAC"}