{"version":3,"file":"SolutionLogo-14Y5LdOn.js","sources":["../../../app/javascript/components/molecules/solution/SolutionLogo.tsx"],"sourcesContent":["import { useState, useRef } from 'react'\nimport { MdOutlineEdit as EditIcon } from 'react-icons/md'\nimport solutionLogoPlaceholder from 'app/assets/images/solution-logo-placeholder.svg'\nimport { handleLogoRequest, handleLogoValidation } from '@/utils/helperFunctions'\nimport { useToken } from '../../atoms/forms/Form'\nimport clsx from 'clsx'\nimport { MAX_FILE_SIZE_BYTES } from '@/utils/fileMaxSizes'\nimport CropModal from '@components/molecules/modals/CropModal'\n\ntype SolutionLogoProps = {\n  currentUser: schema.User\n  solutionOwner: schema.User\n  logoUrl: string\n  company: schema.Company;\n  solution: schema.Solution\n  isRmcAdmin: boolean\n}\n\nconst SolutionLogo = ({\n  currentUser,\n  solutionOwner,\n  logoUrl,\n  company,\n  solution,\n  isRmcAdmin\n}: SolutionLogoProps ) => {\n  const token = useToken()\n  const fileInputRef = useRef(null)\n  \n  const [logoPreviewUrl, setLogoPreviewUrl] = useState(null)\n  const [openModal, setOpenModal] = useState(false)\n  const [cropImage, setCropImage] = useState(null)\n\n  const handleLogoButtonClick = () => {\n    fileInputRef.current?.click()\n  }\n\n  const handleLogoChange =  (file) => {\n    handleLogoRequest(file, solution, token, setLogoPreviewUrl)\n    setOpenModal(false)\n  }\n\n  const handleLogoImageChange = async (event) => {\n    const result = handleLogoValidation(event.target.files[0])\n    if (result) {\n      setCropImage(URL.createObjectURL(event.target.files[0]))\n      setOpenModal(true)\n      setTimeout(() => {\n        event.target.value = ''\n      }, 0)\n    }\n  }\n\n  return (\n    <div className='relative'>\n      {((solution.claimed && currentUser?.id === solutionOwner?.id) || isRmcAdmin) && (\n        <div className='absolute right-0 rounded-full bg-gray-100 p-1'>\n          <EditIcon className='text-dark-blue cursor-pointer' onClick={handleLogoButtonClick} />\n          <input\n            id='image-input'\n            type='file'\n            accept='.jpg,.png,.jpeg'\n            onChange={(event) => handleLogoImageChange(event)}\n            ref={fileInputRef}\n            className='hidden'\n          />\n        </div>\n      )}\n      <a\n        href={solution.website || company?.website}\n        target='_blank'\n        className='flex h-[80px] md:h-[100px]'\n        rel='noreferrer'\n      >\n        <img\n          src={logoPreviewUrl || logoUrl || solutionLogoPlaceholder}\n          alt='solution logo'\n          className={clsx(\n            'h-[60px] w-[60px] rounded-full md:h-[90px] md:w-[90px] object-contain',\n            !logoUrl && 'border border-medium-gray',\n          )}\n        />\n      </a>\n      <CropModal \n        openModal={openModal}\n        setOpenModal={setOpenModal}\n        src={cropImage}\n        handleFileChange={handleLogoChange}\n        previewUrlSetter={setLogoPreviewUrl}\n        maxImageSize={MAX_FILE_SIZE_BYTES}\n      />\n    </div>\n  )\n}\nexport default SolutionLogo\n"],"names":["SolutionLogo","currentUser","solutionOwner","logoUrl","company","solution","isRmcAdmin","token","useToken","fileInputRef","useRef","logoPreviewUrl","setLogoPreviewUrl","useState","openModal","setOpenModal","cropImage","setCropImage","handleLogoButtonClick","current","click","handleLogoChange","file","handleLogoImageChange","event","handleLogoValidation","target","files","URL","createObjectURL","setTimeout","value","className","children","claimed","id","_jsxs","_jsx","EditIcon","onClick","type","accept","onChange","ref","href","website","rel","src","solutionLogoPlaceholder","alt","clsx","CropModal","handleFileChange","previewUrlSetter","maxImageSize","MAX_FILE_SIZE_BYTES"],"mappings":"qJAkBA,MAAMA,EAAeA,CAAC,CACpBC,YAAAA,EACAC,cAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,SAAAA,EACAC,WAAAA,CACiB,IAAO,CACxB,MAAMC,EAAQC,IACRC,EAAeC,SAAO,IAAI,EAE1B,CAACC,EAAgBC,CAAiB,EAAIC,WAAS,IAAI,EACnD,CAACC,EAAWC,CAAY,EAAIF,WAAS,EAAK,EAC1C,CAACG,EAAWC,CAAY,EAAIJ,WAAS,IAAI,EAEzCK,EAAwBA,IAAM,QAClCT,EAAAA,EAAaU,UAAbV,MAAAA,EAAsBW,OAAM,EAGxBC,EAA8BC,GAAA,CAChBA,EAAAA,EAAMjB,EAAUE,EAAOK,CAAiB,EAC1DG,EAAa,EAAK,CAAA,EAGdQ,EAAwB,MAAOC,GAAU,CAC9BC,EAAqBD,EAAME,OAAOC,MAAM,CAAC,CAAC,IAEvDV,EAAaW,IAAIC,gBAAgBL,EAAME,OAAOC,MAAM,CAAC,CAAC,CAAC,EACvDZ,EAAa,EAAI,EACjBe,WAAW,IAAM,CACfN,EAAME,OAAOK,MAAQ,IACpB,CAAC,EACN,EAGF,SACE,MAAA,CAAKC,UAAU,WAAUC,WACpB5B,EAAS6B,UAAWjC,GAAAA,YAAAA,EAAakC,OAAOjC,GAAAA,YAAAA,EAAeiC,KAAO7B,IAC/D8B,EAAA,MAAA,CAAKJ,UAAU,gDAA+CC,SAAA,CAC5DI,EAACC,EAAQ,CAACN,UAAU,gCAAgCO,QAASrB,CAAAA,CAAwB,EACrFmB,EAAA,QAAA,CACEF,GAAG,cACHK,KAAK,OACLC,OAAO,kBACPC,SAAqBnB,GAAAA,EAAsBC,CAAK,EAChDmB,IAAKlC,EACLuB,UAAU,QAAA,CACX,CAAC,CAAA,CACC,EAEPK,EAAA,IAAA,CACEO,KAAMvC,EAASwC,UAAWzC,GAAAA,YAAAA,EAASyC,SACnCnB,OAAO,SACPM,UAAU,6BACVc,IAAI,aAAYb,WAEhB,MAAA,CACEc,IAAKpC,GAAkBR,GAAW6C,EAClCC,IAAI,gBACJjB,UAAWkB,EACT,wEACA,CAAC/C,GAAW,2BACd,CAAA,CACD,CAAA,CACA,EACHkC,EAACc,EAAS,CACRrC,UAAAA,EACAC,aAAAA,EACAgC,IAAK/B,EACLoC,iBAAkB/B,EAClBgC,iBAAkBzC,EAClB0C,aAAcC,CAAAA,CACf,CAAC,CAAA,CACC,CAET"}