{"version":3,"mappings":"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","names":["DownloadIcon","DownloadIconBlack","DefaultImage","EmptySection","React","lazy","__vitePreload","n","DownloadSection","documents","solutionOwner","current_user","is_claimed","isRmcAdmin","tracking","useTracking","handleDownload","file","confirmDialogue","trackEvent","event_name","page_url","window","location","pathname","event_loggable_type","additional_attributes","content_type","split","event_type","file_name","filename","media_type","link","document","createElement","href","document_url","setAttribute","body","appendChild","click","removeChild","conditionsForEmptyDownloadsSection","id","every","obj","className","children","_jsx","src","heading","paragraph","map","index","_jsxs","image_url","alt","title","onClick","EditDownloadSection","solution","setData","data","token","useToken","editableDocumentIndex","setEditableDocumentIndex","useState","activeIndex","setActiveIndex","openModal","setOpenModal","modalFor","setModalFor","setSrc","fileInputRefs","useRef","openCropModal","setOpenCropModal","imageWidth","useMobileDetect","screenSize","MOBILE_SCREEN_SIZE","showValidationErrors","errors","length","toast","error","position","autoClose","hideProgressBar","closeOnClick","bodyClassName","handleDocumentImageChange","document_image","documentId","axios","post","document_id","headers","Accept","newImageName","name","prevData","updatedDocuments","documents_attributes","image","imagename","handleTitleChange","document_title","handleDocumentFileChange","useCallback","document_file","newFileName","validationErrors","documentValidation","doc_file_changed","handleEditableClick","_destroy","handleDelete","handleModalInput","modalHeading","handleButtonClick","current","handleScreenshotImage","screenshot","imageValidation","TrashIcon","PlusIcon","type","accept","style","display","ref","el","onChange","e","target","files","Input","label","labelHtmlFor","containerClass","upload","trash","value","onTrashClick","onUploadClick","maxLength","Button","variant","size","AddMarketingMaterialModal","handleFileChange","CropModal","maxImageSize","MAX_FILE_SIZE_BYTES"],"sources":["../../../app/assets/images/arrow-down-tray.svg","../../../app/assets/images/arrow-down-tray-black.svg","../../../app/assets/images/Default-Download-CoverImage-Solutions.png","../../../app/javascript/components/atoms/OfficialMediaSection/DownloadSection.tsx"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='heroicons-outline/arrow-down-tray'%3e%3cpath%20id='Vector'%20d='M3%2017.3712V19.6212C3%2020.8639%204.00736%2021.8712%205.25%2021.8712H18.75C19.9926%2021.8712%2021%2020.8639%2021%2019.6212V17.3712M16.5%2012.8712L12%2017.3712M12%2017.3712L7.5%2012.8712M12%2017.3712V3.87122'%20stroke='%238A8DA0'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='heroicons-outline/arrow-down-tray'%3e%3cpath%20id='Vector'%20d='M3%2017.3712V19.6212C3%2020.8639%204.00736%2021.8712%205.25%2021.8712H18.75C19.9926%2021.8712%2021%2020.8639%2021%2019.6212V17.3712M16.5%2012.8712L12%2017.3712M12%2017.3712L7.5%2012.8712M12%2017.3712V3.87122'%20stroke='%23222427'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/png;base64,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\"","import React, { useCallback, useState, useRef } from 'react'\nimport DownloadIcon from '../../../../assets/images/arrow-down-tray.svg'\nimport DownloadIconBlack from '../../../../assets/images/arrow-down-tray-black.svg'\nimport PlusIcon from '../../../../assets/images/plus.svg'\nimport Input from '@/components/atoms/inputs/Input'\nimport Button from '@components/atoms/buttons/Button'\nimport TrashIcon from '../../../../assets/images/trash.svg'\nimport axios from 'axios'\nimport { useToken } from '@/components/atoms/forms/Form'\nimport AddMarketingMaterialModal from '@/components/molecules/modals/AddMarketingMaterialModal'\nconst EmptySection = React.lazy(() => import('../../atoms/widgets/EmptySection'))\nimport { documentValidation, imageValidation } from '@/utils/fileValidations'\nimport { toast } from 'react-toastify'\nimport { confirmDialogue } from '@/utils/confirmDialogue'\nimport { useTracking } from 'react-tracking'\nimport DefaultImage from '../../../../assets/images/Default-Download-CoverImage-Solutions.png'\nimport CropModal from '@/components/molecules/modals/CropModal'\nimport { MAX_FILE_SIZE_BYTES } from '@/utils/fileMaxSizes'\nimport { useMobileDetect } from '@/utils/detectMobile'\nimport { MOBILE_SCREEN_SIZE } from '@/utils/constants'\n\ntype DownloadsSectionProps = {\n  solution: schema.Solution\n  documents: schema.Document[]\n  handleSubmit: (e: React.FormEvent) => Promise<void>\n  setData: any\n  solutionOwner?: schema.User\n  current_user?: schema.User\n  is_claimed: boolean\n  isRmcAdmin: boolean\n}\n\nexport const DownloadSection = ({ documents, solutionOwner, current_user, is_claimed, isRmcAdmin }: DownloadsSectionProps) => {\n  const tracking = useTracking()\n  const handleDownload = (file) => {\n    if (!confirmDialogue('Are you sure you want to download this document?')) {\n      return\n    }\n    tracking.trackEvent({\n      event_name: 'Offical Media Section',\n      page_url: window.location.pathname,\n      event_loggable_type: 'RmcEvents::MediaLog',\n      additional_attributes: {\n        content_type: file.content_type.split('/')[1],\n        event_type: 'download',\n        file_name: file.filename,\n        media_type: 'docs'\n      }\n    })\n    const link = document.createElement('a')\n    link.href = file.document_url\n    link.setAttribute('download', '')\n    document.body.appendChild(link)\n    link.click()\n    document.body.removeChild(link)\n  }\n\n  const conditionsForEmptyDownloadsSection = () => {\n    return ((is_claimed || isRmcAdmin) && current_user && (current_user?.id === solutionOwner?.id || isRmcAdmin) && documents?.every(obj => obj.id === null))\n  }\n  return (\n    <div className={!documents?.every(obj => obj.id === null) || conditionsForEmptyDownloadsSection() ? 'sm:p-8 p-4' : ''}>\n      {\n        (!documents?.every(obj => obj.id === null) || conditionsForEmptyDownloadsSection()) ?\n          <div className='flex'>\n            <img src={DownloadIcon} />\n            <p className='text-base font-semibold mx-2'>Downloads</p>\n          </div>\n          :\n          null\n      }\n      <div>\n        <div>\n          {conditionsForEmptyDownloadsSection() ?\n            <div className=''>\n              <div className='sm:mt-3 mt-4'>\n                <EmptySection heading='No Downloads Yet' paragraph='Click the pencil icon to add a download to your profile.' />\n              </div>\n            </div>\n            :\n            <div>\n              <div className='grid lg:grid-cols-3 md:grid-cols-2 cols-1 lg:gap-3 md:gap-2'>\n                {documents.map((document, index) => (\n                  document.id !== null &&\n                  <div className='border-[1.5px] rounded-xl sm:mt-5 mt-4' key={index}>\n                    <img src={document.image_url ? document.image_url : DefaultImage} alt='download-thumbnail' className='xl:w-[368px] xl:h-[204px] w-[100%] h-[204px] rounded-t-xl object-cover' />\n                    <div className='flex justify-between p-4'>\n                      <p className='sm:text-md text-sm'>{document.title}</p>\n                      <img src={DownloadIconBlack} alt='download' className='hover:cursor-pointer' onClick={() => handleDownload(document)} />\n                    </div>\n                  </div>\n                ))}\n              </div>\n            </div>\n          }\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport const EditDownloadSection = ({ solution, setData, data }) => {\n  const token = useToken()\n  const [editableDocumentIndex, setEditableDocumentIndex] = useState(null)\n  const [activeIndex, setActiveIndex] = useState(0)\n  const [openModal, setOpenModal] = useState(false)\n  const [modalFor, setModalFor] = useState('')\n  const [src, setSrc] = useState('')\n  const fileInputRefs = useRef([])\n  const [openCropModal, setOpenCropModal] = useState(false)\n  const isMobile = useMobileDetect({ screenSize: MOBILE_SCREEN_SIZE })\n  const imageWidth = isMobile ? 300 : 700\n  const showValidationErrors = (errors) => {\n    if (errors.length > 0) {\n      toast(\n        <div>\n\n          {errors.map((error) => {\n            return <p>{error}</p>\n          })}\n        </div>,\n        {\n          position: 'top-right',\n          autoClose: 5000,\n          hideProgressBar: true,\n          closeOnClick: true,\n          className:\n            'bg-red-200 text-md text-black p-4 md:p-6 md:rounded-xl md:w-[400px] md:right-[80px]',\n          bodyClassName: 'p-0 min-w-[324px]',\n        }\n      )\n      setOpenModal(false)\n      return\n    }\n  }\n  const handleDocumentImageChange = (document_image, index = activeIndex, documentId?) => {\n    if (document_image === null) {\n      if (!confirmDialogue('Are you sure you want to delete this image?')) {\n        return\n      }\n      axios.post(`/solutions/${solution.id}/purge_document_image`, {\n        document_id: documentId,\n      }, {\n        headers: {\n          'X-CSRF-Token': token,\n          Accept: 'application/json',\n          'Content-Type': 'application/json',\n        },\n      })\n    }\n    const newImageName = document_image !== null ? document_image.name : ''\n    setData((prevData) => {\n      const updatedDocuments = prevData.documents_attributes.map(\n        (document, position) => {\n          if (position === index) {\n            return { ...document, image: document_image, imagename: newImageName, image_url: null }\n          }\n          return document\n        }\n      )\n      return { ...prevData, documents_attributes: updatedDocuments }\n    })\n    setOpenCropModal(false)\n  }\n\n  const handleTitleChange = (document_title, index) => {\n    setData((prevData) => {\n      const updatedDocuments = prevData.documents_attributes.map(\n        (document, position) => {\n          if (position === index) {\n            return { ...document, title: document_title }\n          }\n          return document\n        }\n      )\n      return { ...prevData, documents_attributes: updatedDocuments }\n    })\n  }\n\n  const handleDocumentFileChange = useCallback((document_file, index) => {\n    const newFileName = document_file !== null ? document_file.name : ''\n    let validationErrors = null\n    if (document_file !== null) {\n      validationErrors = documentValidation(document_file)\n      if (validationErrors.length > 0) {\n        showValidationErrors(validationErrors)\n        return\n      }\n    }\n    setData((prevData) => {\n      const updatedDocuments = prevData.documents_attributes.map(\n        (document, position) => {\n          if (position === index) {\n            return { ...document, document_file: document_file, filename: newFileName, document_url: null, doc_file_changed: true }\n          }\n          return document\n        }\n      )\n      return { ...prevData, documents_attributes: updatedDocuments }\n    })\n    setOpenModal(false)\n  }, [])\n\n  const handleEditableClick = (index: number) => {\n    setEditableDocumentIndex(index)\n    setActiveIndex(index)\n    setData((prevData) => {\n      const updatedDocuments = prevData.documents_attributes.map(\n        (document, position) => {\n          if (position === index) {\n            return { ...document, filename: '', title: '', document_url: null, imagename: '', image: null, image_url: null, _destroy: false, doc_file_changed: true }\n          }\n          return document\n        }\n      )\n      return { ...prevData, documents_attributes: updatedDocuments }\n    })\n  }\n\n  const handleDelete = (documentId) => {\n    setData((prevData) => {\n      const updatedDocuments = prevData.documents_attributes.map((document) => {\n        if (document.id === documentId) {\n          return { ...document, _destroy: true }\n        }\n        return document\n      })\n      return { ...prevData, documents_attributes: updatedDocuments }\n    })\n  }\n\n  const handleModalInput = (modalHeading, index) => {\n    setActiveIndex(index)\n    setEditableDocumentIndex(index)\n    setModalFor(modalHeading)\n    setOpenModal(true)\n  }\n\n  const handleButtonClick = (index) => {\n    setActiveIndex(index)\n    fileInputRefs.current[index]?.click()\n  }\n  const handleScreenshotImage = (screenshot) => {\n    let validationErrors = null\n    if (screenshot !== null) {\n      validationErrors = imageValidation(screenshot)\n      if (validationErrors.length > 0) {\n        showValidationErrors(validationErrors)\n        return\n      }\n    }\n    setSrc(screenshot)\n    setOpenCropModal(true)\n  }\n\n  return (\n    <div className='sm:p-8 p-4'>\n      <div className='flex'>\n        <img src={DownloadIcon} alt='Download' />\n        <p className='text-base font-semibold mx-2'>Downloads</p>\n      </div>\n      <div className='grid lg:grid-cols-3 md:grid-cols-2 cols-1 lg:gap-3 md:gap-2 pt-5'>\n        {data.documents_attributes.map((document, index) => (\n          (document.id !== null || editableDocumentIndex === index ||\n            document.document_file !== null || document.image !== null ||\n            document.title !== '') && !document._destroy ?\n            <div className='rounded-xl relative' key={index}>\n              {\n                document.imagename !== '' && document.image_url !== null ?\n                  <div>\n                    <div className='absolute top-[155px] right-2 flex items-center justify-center bg-white rounded-full w-10 h-10 hover:cursor-pointer'>\n                      <img src={TrashIcon} alt='trash' className='w-6 h-6' onClick={(e) => handleDocumentImageChange(null, index, document.id)} />\n                    </div>\n                    <img src={document.image_url} alt='download-thumbnail' className='xl:w-[368px] xl:h-[204px] w-[100%] h-[204px] rounded-xl' />\n                  </div>\n                  :\n                  <div className='xl:w-[368px] xl:h-[204px] w-[100%] h-[204px] rounded-xl bg-gray-100 border-spacing-y-4 border-[1px] sm:mt-0 mt-5'>\n                    <div className='flex flex-col items-center justify-center h-full'>\n                      <div className='w-10 h-10 bg-gray-200 rounded-full flex items-center justify-center hover:cursor-pointer'>\n                        {document.imagename === '' ?\n                          <img src={PlusIcon} id={document.id}\n                            alt='plus icon'\n                            onClick={() => {\n                              handleButtonClick(index)\n                            }}\n                          />\n                          :\n                          <img src={TrashIcon} alt='trash icon' id={document.id} onClick={(e) => handleDocumentImageChange(null, index, document.id)} />\n                        }\n                      </div>\n                      {document.imagename === '' ? <h2 className='text-[#222427] text-muted mt-2'>Add Cover Image(Optional)</h2> : <h2 className='text-[#222427] text-muted mt-2'>{document.image.name}</h2>}\n                      <input\n                        type='file'\n                        id={`fileInput_${index}`}\n                        accept='.jpg,.png,.jpeg'\n                        style={{ display: 'none' }}\n                        ref={(el) => (fileInputRefs.current[index] = el)}\n                        onChange={(e) =>\n                          handleScreenshotImage(e.target.files[0])\n                        }\n                      />\n                    </div>\n                  </div>\n              }\n\n              <Input\n                type={'text'}\n                label='File:'\n                labelHtmlFor={`document_file_${index}`}\n                id={`document_file_${index}`}\n                name={`document_file_${index}`}\n                containerClass='mb-7'\n                upload={document.filename !== '' ? false : true}\n                trash={document.filename !== '' ? true : false}\n                value={document.filename !== '' ? document.filename : 'No File Chosen'}\n                onTrashClick={() => handleDocumentFileChange(null, index)}\n                onUploadClick={() => handleModalInput('File', index)}\n              />\n              <Input\n                type='text'\n                label='Document Title:'\n                labelHtmlFor={`document_title_${index}`}\n                id={`document_title_${index}`}\n                name={`document_title_${index}`}\n                value={document.title}\n                containerClass='mb-7'\n                onChange={(e) =>\n                  handleTitleChange(e.target.value, index)\n                }\n                maxLength={24}\n                className={document.title == '' ? 'focus:border-red-700 border-red-700' : ''}\n              />\n              <div className='flex'>\n                <div\n                  className={`font-manrope text-xs font-medium ${document.title.length > 24\n                      ? 'text-danger-red'\n                      : 'text-[#8A8DA0]'\n                    }`}\n                >\n                  Max 24 characters\n                </div>\n                <div\n                  className={`font-manrope ml-auto text-xs font-medium ${document.title.length > 24\n                      ? 'text-danger-red'\n                      : 'text-[#8A8DA0]'\n                    }`}\n                >\n                  {document.title.length}\n                </div>\n              </div>\n              {document.id != null &&\n                <Button variant='dangerLight' size='md' className='my-[1.5rem]' onClick={() => handleDelete(document.id)}>\n                  Delete Item\n                </Button>\n              }\n            </div>\n            :\n            <div>\n              <div className='xl:w-[368px] xl:h-[204px] w-[100%] h-[204px] rounded-xl border-dashed border-[#8A8DA0] border-spacing-y-4 border-[1px] sm:mt-0 mt-5'>\n                <div className='flex flex-col items-center justify-center h-full'>\n                  <div className='w-10 h-10 bg-gray-200 rounded-full flex items-center justify-center hover:cursor-pointer'>\n                    <img src={PlusIcon} alt='plus icon' onClick={() => handleEditableClick(index)} id={document.id} />\n                  </div>\n                  <h1 className='pt-2'>Add New</h1>\n                </div>\n              </div>\n            </div>\n        ))}\n      </div>\n      <AddMarketingMaterialModal openModal={openModal} setOpenModal={setOpenModal} index={activeIndex} modalFor={modalFor} handleFileChange={handleDocumentFileChange} />\n      <CropModal\n        openModal={openCropModal}\n        setOpenModal={setOpenCropModal}\n        src={src}\n        handleFileChange={handleDocumentImageChange}\n        maxImageSize={MAX_FILE_SIZE_BYTES}\n        imageWidth={imageWidth}\n      />\n    </div>\n  )\n}\n"],"file":"assets/DownloadSection-Af7IA7oa.js"}