{"version":3,"sources":["components/Corporate/DownloadableFile/StyledListOfFileDownloads.ts","components/Corporate/DownloadableFile/helpers.tsx","components/Corporate/DownloadableFile/index.tsx"],"names":["ListWrapper","styled","div","theme","card","borderRadius","colors","downloads","border","DownloadWrapper","spacing","p","mq","IconWrapper","variation","svg","lessThan","TextWrapper","ml","DownloadIconWrapper","span","element","tertiary","DownloadTitle","heading_s","link","secondary","color","DownloadAttributes","text_xs","mt","quaternary","DownloadDescription","text_s","DownloadLink","a","primary","colorHover","colorVisited","VariationWrapper","VariationDownloadWrapper","heading_xs","EditorDiv","filterDownloads","editMode","f","file","jss","value","title","EditorText","compose","withEditModeNotice","renderDownloadItem","translations","extension","size","src","mimeType","id","lastUpdated","date","variations","description","isVariation","variationsToShow","hasFileAttached","URL","searchParams","has","set","origin","pathname","toString","filter","bind","Fragment","key","format","toLowerCase","getIcon","noticeEnabled","noticeMessage","href","type","download","field","toUpperCase","fileSize","byteConverter","unit","LongForm","ShortForm","renderSize","convertedDate","dateConverter","dateTime","attrDate","visualDate","renderDate","length","map","c","withEditMode","datasource","fields","data","useTranslation","t"],"mappings":"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","file":"static/js/DownloadableFile.260e4f34.chunk.js","sourcesContent":["import styled from 'styled-components';\r\n\r\nimport { spacing } from '_utils/props';\r\nimport { mq, svg, text_s, text_xs, heading_s, heading_xs } from '_utils/styles/';\r\n\r\nexport const ListWrapper = styled.div`\r\n width: 100%;\r\n border-radius: ${({ theme }) => theme.card.borderRadius}px;\r\n border: 1px solid ${({ theme }) => theme.colors.downloads.border};\r\n`;\r\n\r\nexport const DownloadWrapper = styled.div`\r\n display: flex;\r\n ${({ theme }) => spacing({ theme, p: 3 })};\r\n flex-direction: column;\r\n\r\n ${mq('sm')} {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n }\r\n\r\n & + & {\r\n border-top: 1px solid ${({ theme }) => theme.colors.downloads.border};\r\n }\r\n`;\r\n\r\nexport const IconWrapper = styled.div`\r\n ${({ variation = false }) => (variation ? svg(13, 16) : svg(22, 27))}\r\n width: ${({ variation = false }) => (variation ? 13 : 22)}px;\r\n flex-shrink: 0;\r\n\r\n ${({ variation }) => {\r\n if (variation) {\r\n return `\r\n top: 2px;\r\n `;\r\n }\r\n\r\n return `\r\n ${mq.lessThan('sm')} {\r\n margin-bottom: 18px;\r\n }\r\n `;\r\n }}\r\n`;\r\n\r\nexport const TextWrapper = styled.div`\r\n flex-grow: 1;\r\n\r\n ${({ variation = false, theme }) => {\r\n if (variation) {\r\n return spacing({ theme, ml: 2 });\r\n }\r\n\r\n return `\r\n margin: 0;\r\n\r\n ${mq('sm')} {\r\n ${spacing({ theme, ml: 2 })};\r\n }\r\n `;\r\n }}\r\n @media print {\r\n page-break-inside: avoid;\r\n }\r\n`;\r\n\r\nexport const DownloadIconWrapper = styled.span`\r\n ${svg(16, 18)}\r\n width: 16px;\r\n margin-left: 12px;\r\n display: flex;\r\n\r\n path {\r\n fill: ${({ theme }) => theme.colors.element.tertiary};\r\n }\r\n`;\r\n\r\nexport const DownloadTitle = styled.span`\r\n display: block;\r\n margin: 0;\r\n ${heading_s}\r\n color: ${({ theme }) => theme.colors.link.secondary.color};\r\n transition: color 0.2s linear;\r\n`;\r\n\r\nexport const DownloadAttributes = styled.span`\r\n display: block;\r\n ${text_xs};\r\n margin: 0;\r\n ${({ theme }) => spacing({ theme, mt: 1 })};\r\n color: ${({ theme }) => theme.colors.element.quaternary};\r\n`;\r\n\r\nexport const DownloadDescription = styled.p`\r\n ${text_s}\r\n margin: 0;\r\n ${({ theme }) => spacing({ theme, mt: 1 })};\r\n color: ${({ theme }) => theme.colors.element.quaternary};\r\n`;\r\n\r\nexport const DownloadLink = styled.a`\r\n flex: 1 0 auto;\r\n display: flex;\r\n text-decoration: none;\r\n color: ${({ theme }) => theme.colors.element.primary};\r\n\r\n &:hover,\r\n &:active {\r\n color: ${({ theme }) => theme.colors.link.secondary.colorHover};\r\n }\r\n\r\n &:visited {\r\n color: ${({ theme }) => theme.colors.link.secondary.colorVisited};\r\n }\r\n`;\r\n\r\nexport const VariationWrapper = styled(ListWrapper)`\r\n ${({ theme }) => spacing({ theme, p: 2, mt: 3 })};\r\n`;\r\n\r\nexport const VariationDownloadWrapper = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n\r\n & + & {\r\n ${({ theme }) => spacing({ theme, mt: 2 })};\r\n }\r\n\r\n ${DownloadTitle} {\r\n ${heading_xs}\r\n font-weight: normal;\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nexport const EditorDiv = styled.div``;\r\n","import React, { ReactNode } from 'react';\r\n\r\nimport { byteConverter, dateConverter } from '_utils/helpers';\r\n\r\nimport { File, Zip, Word, Excel, Movie, PDF, Image } from '_utils/icons';\r\n\r\nconst getIcon = (format: string): ReactNode => {\r\n switch (format.toLowerCase()) {\r\n case 'xls':\r\n case 'xlsm':\r\n return ;\r\n case 'doc':\r\n case 'docm':\r\n case 'docx':\r\n return ;\r\n case 'avi':\r\n case 'mp4':\r\n return ;\r\n case 'pdf':\r\n return ;\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'tiff':\r\n case 'svg':\r\n case 'gif':\r\n return ;\r\n case 'zip':\r\n case 'gz':\r\n case '7z':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n};\r\n\r\nconst filterDownloads = (editMode: boolean, f: any): boolean =>\r\n editMode || (!!f.file?.jss?.value && !!f.title?.jss?.value);\r\n\r\nconst renderSize = (fileSize: string | number): ReactNode => {\r\n const { size, unit } = byteConverter(fileSize);\r\n\r\n return (\r\n \r\n {size} {unit.ShortForm}\r\n \r\n );\r\n};\r\n\r\nconst renderDate = (date: string): ReactNode => {\r\n const convertedDate = dateConverter(date);\r\n\r\n if (convertedDate === null) {\r\n return null;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport { getIcon, filterDownloads, renderDate, renderSize };\r\n","import React, { ReactNode } from 'react';\r\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\r\nimport { compose } from 'ramda';\r\n\r\nimport { withEditMode, withEditModeNotice } from '_containers/BaseComponent';\r\nimport { Download as DownloadIcon } from '_utils/icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ListOfFileDownloadsProps } from './definitions';\r\nimport {\r\n DownloadWrapper,\r\n IconWrapper,\r\n TextWrapper,\r\n DownloadLink,\r\n DownloadTitle,\r\n DownloadAttributes,\r\n DownloadIconWrapper,\r\n DownloadDescription,\r\n VariationWrapper,\r\n VariationDownloadWrapper,\r\n EditorDiv\r\n} from './StyledListOfFileDownloads';\r\n\r\nimport { getIcon, filterDownloads, renderDate, renderSize } from './helpers';\r\n\r\nconst EditorText = compose(withEditModeNotice)(EditorDiv);\r\n\r\nconst renderDownloadItem = (\r\n {\r\n id,\r\n title: { jss: title },\r\n file: { jss: file },\r\n lastUpdated: { date: lastUpdated },\r\n variations,\r\n description\r\n },\r\n editMode,\r\n translations\r\n): ReactNode => {\r\n let isVariation = true;\r\n let variationsToShow = [];\r\n let hasFileAttached = true;\r\n let extension;\r\n let size;\r\n let src;\r\n let mimeType;\r\n\r\n try {\r\n extension = file.value.extension;\r\n size = file.value.size;\r\n mimeType = file.value.mimeType;\r\n\r\n src = file.value.src;\r\n\r\n if (!editMode) {\r\n // Add `download-true` for IE support\r\n src = new URL(file.value.src);\r\n\r\n if (!src.searchParams.has('download')) {\r\n src.searchParams.set('download', 'true');\r\n }\r\n\r\n src = `${src.origin}${src.pathname}?${src.searchParams.toString()}`;\r\n }\r\n } catch {\r\n hasFileAttached = false;\r\n }\r\n\r\n if (typeof variations !== 'undefined') {\r\n isVariation = false;\r\n variationsToShow = variations.filter(filterDownloads.bind(null, editMode));\r\n }\r\n\r\n return (\r\n \r\n {hasFileAttached && getIcon(extension)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isVariation && hasFileAttached && (\r\n \r\n \r\n \r\n )}\r\n \r\n {hasFileAttached && (\r\n \r\n {extension.toUpperCase()} · {renderSize(size)} · {translations.lastUpdated}{' '}\r\n {renderDate(lastUpdated)}\r\n \r\n )}\r\n {!isVariation && (description?.jss?.value || editMode) && (\r\n \r\n \r\n \r\n )}\r\n \r\n {variationsToShow.length > 0 && (\r\n \r\n {variationsToShow.map((c) => (\r\n \r\n {renderDownloadItem(c, editMode, translations)}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst DownloadableFiles: React.FC = ({\r\n fields: {\r\n data: { datasource }\r\n },\r\n editMode\r\n}) => {\r\n const [t] = useTranslation();\r\n const translations = {\r\n lastUpdated: t('downloadable-files-last-updated')\r\n };\r\n\r\n if (datasource === null) {\r\n if (editMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {renderDownloadItem(datasource, editMode, translations)}\r\n \r\n );\r\n};\r\n\r\nexport default compose(withEditMode)(DownloadableFiles);\r\n"],"sourceRoot":""}