{"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"}