{"version":3,"file":"index-d-LFQcyx.cjs","sources":["../../../react-integration/src/SvgImage.tsx","../../../react-integration/src/SvgIcon.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type SVGAttributes } from \"react\";\nimport { onSrcUpdate as onSrcUpdateRaw, onUnmount, SvgImageProps as SvgImagePropsRaw } from \"integration-utils\";\n\nexport interface SvgImageProps extends SVGAttributes<SVGElement>, SvgImagePropsRaw {}\n\nexport function SvgImage({ src, useElAttrs, ...attrs }: SvgImageProps) {\n  const actualId = useRef(\"\"); // Actual ID for cleanup on unmount\n  const prevSrc = useRef(\"\");\n\n  const [id, setId] = useState(actualId.current);\n  const [svgAttrs, setSvgAttrs] = useState<SVGAttributes<SVGElement>>({});\n\n  const onSrcUpdate = () => {\n    const res = onSrcUpdateRaw(prevSrc.current, src);\n\n    if (res.id) {\n      setId(res.id);\n      actualId.current = res.id;\n    }\n\n    if (res.attrs) {\n      setSvgAttrs(res.attrs);\n    }\n\n    prevSrc.current = src;\n  };\n\n  useEffect(() => {\n    onSrcUpdate(); // When component is \"mounted\"\n\n    // When component is \"unmounted\"\n    return () => {\n      onUnmount(actualId.current);\n\n      // onSrcUpdateRaw() checks if current src is equal to previous and doesn't do anything if source didn't change.\n      // It would be fine if this useEffect() hack ran on actual unmount. However! When dev setup+cleanup cycle\n      // is running, previous component instance is used, and prevSrc is not being cleared. This results in images\n      // disappearing in dev mode. So we have to reset this ref manually. Why, React, why?! Just add actual damn hooks\n      // like Vue did!\n      prevSrc.current = \"\";\n    };\n  }, []);\n\n  useEffect(onSrcUpdate, [src]); // When src is updated\n\n  return (\n    <svg {...{ ...attrs, ...svgAttrs }}>\n      <use {...{ ...useElAttrs, href: \"#\" + id }} />\n    </svg>\n  );\n}\n","import { useEffect, useState, AllHTMLAttributes } from \"react\";\nimport { SvgImage } from \"./SvgImage\";\nimport { getSvgIconStyle, initSvgIcons, SvgIconProps as SvgIconPropsRaw } from \"integration-utils\";\n\nexport interface SvgIconProps extends SvgIconPropsRaw, Omit<AllHTMLAttributes<HTMLSpanElement>, \"size\" | \"src\"> {}\n\nexport function SvgIcon({ src, size, color, colorTransition, ...attrs }: SvgIconProps) {\n  const getIconStyle = () => getSvgIconStyle({ size, color, colorTransition });\n  const [iconStyle, setIconStyle] = useState(getIconStyle());\n  useEffect(() => setIconStyle(getIconStyle()), [size, color, colorTransition]);\n  useEffect(initSvgIcons, []); // Init icons when component is mounted\n\n  return (\n    <span\n      {...attrs}\n      className={\"vite-awesome-svg-loader-icon \" + attrs.className}\n      style={{ ...attrs.style, ...iconStyle }}\n    >\n      <SvgImage\n        src={src}\n        aria-hidden=\"true\"\n      />\n    </span>\n  );\n}\n"],"names":["SvgImage","src","useElAttrs","attrs","actualId","useRef","prevSrc","id","setId","useState","svgAttrs","setSvgAttrs","onSrcUpdate","res","onSrcUpdateRaw","useEffect","onUnmount","u","SvgIcon","size","color","colorTransition","getIconStyle","getSvgIconStyle","iconStyle","setIconStyle","initSvgIcons","jsx"],"mappings":"0HAKO,SAASA,EAAS,CAAE,IAAAC,EAAK,WAAAC,EAAY,GAAGC,GAAwB,CACrE,MAAMC,EAAWC,SAAO,EAAE,EACpBC,EAAUD,EAAAA,OAAO,EAAE,EAEnB,CAACE,EAAIC,CAAK,EAAIC,EAAAA,SAASL,EAAS,OAAO,EACvC,CAACM,EAAUC,CAAW,EAAIF,WAAoC,CAAA,CAAE,EAEhEG,EAAc,IAAM,CACxB,MAAMC,EAAMC,EAAAA,EAAeR,EAAQ,QAASL,CAAG,EAE3CY,EAAI,KACNL,EAAMK,EAAI,EAAE,EACZT,EAAS,QAAUS,EAAI,IAGrBA,EAAI,OACNF,EAAYE,EAAI,KAAK,EAGvBP,EAAQ,QAAUL,CACpB,EAEA,OAAAc,EAAAA,UAAU,KACRH,EAAAA,EAGO,IAAM,CACXI,EAAAA,EAAUZ,EAAS,OAAO,EAO1BE,EAAQ,QAAU,EACpB,GACC,CAAA,CAAE,EAELS,EAAAA,UAAUH,EAAa,CAACX,CAAG,CAAC,EAAAgB,EAAAA,IAGzB,MAAA,CAAU,GAAGd,EAAO,GAAGO,EACtB,SAAAO,MAAC,MAAA,CAAU,GAAGf,EAAY,KAAM,IAAMK,CAAAA,CAAM,EAC9C,CAEJ,CC5CO,SAASW,EAAQ,CAAE,IAAAjB,EAAK,KAAAkB,EAAM,MAAAC,EAAO,gBAAAC,EAAiB,GAAGlB,CAAAA,EAAuB,CACrF,MAAMmB,EAAe,IAAMC,EAAAA,EAAgB,CAAE,KAAAJ,EAAM,MAAAC,EAAO,gBAAAC,CAAAA,CAAiB,EACrE,CAACG,EAAWC,CAAY,EAAIhB,EAAAA,SAASa,GAAc,EACzD,OAAAP,EAAAA,UAAU,IAAMU,EAAaH,EAAAA,CAAc,EAAG,CAACH,EAAMC,EAAOC,CAAe,CAAC,EAC5EN,EAAAA,UAAUW,EAAAA,EAAc,CAAA,CAAE,EAGxBC,EAAAA,IAAC,OAAA,CACE,GAAGxB,EACJ,UAAW,gCAAkCA,EAAM,UACnD,MAAO,CAAE,GAAGA,EAAM,MAAO,GAAGqB,CAAAA,EAE5B,SAAAG,EAAAA,IAAC3B,EAAA,CACC,IAAAC,EACA,cAAY,MAAA,CAAA,CAAA,CACd,CAGN"}