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