{"version":3,"sources":["webpack:///./packages/console-app/src/components/file-upload/file-upload-context.ts","webpack:///./packages/console-app/src/components/file-upload/file-upload-utils.ts"],"names":["FileUploadContext","fileUpload","undefined","setFileUpload","extensions","FileUploadContextProvider","Provider","useValuesFileUploadContext","t","fileUploadExtensions","resolved","toastContext","namespace","file","setFile","fileExtensions","map","e","properties","ext","toLowerCase","f","length","requiredFileExtension","name","handler","addToast","variant","warning","title","content","fileName","toString","timeout","dismissible","getRequiredFileUploadExtension","find","ex","supportedFileTypes","extension","lastIndexOf","split","pop","getFileType","includes","isFileSupported"],"mappings":"4FAAA,sPAeO,MAAMA,EAAoB,gBAA2C,CAC1EC,gBAAYC,EACZC,cAAe,OACfC,WAAY,KAGDC,EAA4BL,EAAkBM,SAE9CC,EAA6B,KACxC,MAAM,EAAEC,GAAM,4BACPC,EAAsBC,GAAY,aAAkC,MACrEC,EAAe,eACdC,GAAa,gCACbC,EAAMC,GAAW,gBAAqBZ,GACvCa,EAAiB,UACrB,IACEL,EACI,IAAUD,EAAqBO,IAAKC,GAAMA,EAAEC,WAAWH,iBAAiBC,IAAKG,GAC3EA,EAAIC,eAEN,GACN,CAACX,EAAsBC,IAgCzB,MAAO,CACLT,WAAYY,EACZV,cA/BoB,cACnBkB,IACC,GAAKA,GAEE,GAAIN,EAAeO,OAAS,EAAG,CACpC,MAAMC,EAAwB,YAA+Bd,EAAsBY,EAAEG,MACjFD,GACFT,EAAQO,GACRE,EAAsBL,WAAWO,QAAQJ,EAAGT,IAE5CD,EAAae,SAAS,CACpBC,QAAS,IAAaC,QACtBC,MAAOrB,EAAE,sCACTsB,QAAStB,EACP,wHACA,CACEuB,SAAUV,EAAEG,KACZT,eAAgBA,EAAeiB,aAGnCC,SAAS,EACTC,aAAa,UAlBjBpB,OAAQZ,IAuBZ,CAACY,EAASC,EAAgBP,EAAGI,EAAWD,EAAcF,IAMtDL,WAAYW,K,kCCrEhB,kCAAO,MAeMoB,EAAiC,CAC5C1B,EACAsB,K,MAEA,OAA0F,QAA1F,EAAAtB,EAAqB2B,KAAMC,GAZE,EAACN,EAAkBO,KAChD,MAAMC,EARmB,CAACR,IACS,IAA/BA,EAASS,YAAY,KAChB,KAEFT,EAASU,MAAM,KAAKC,MAITC,CAAYZ,GAC9B,SAAKQ,GAAkC,IAArBA,EAAUjB,SAGrBgB,EAAmBM,SAASL,EAAUnB,gBAOXyB,CAAgBd,EAAUM,EAAGnB,WAAWH,wBAAgB,QAC1F","file":"app/code-refs/fileUploadContext-chunk-57cf7a61063a4b236c68.min.js","sourcesContent":["import * as React from 'react';\nimport { AlertVariant } from '@patternfly/react-core';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { FileUpload, isFileUpload, useResolvedExtensions } from '@console/dynamic-plugin-sdk';\nimport { useToast } from '@console/shared/src/components/toast';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { getRequiredFileUploadExtension } from './file-upload-utils';\n\nexport type FileUploadContextType = {\n extensions: string[];\n fileUpload: File;\n setFileUpload: (file: File) => void;\n};\n\nexport const FileUploadContext = React.createContext({\n fileUpload: undefined,\n setFileUpload: () => {},\n extensions: [],\n});\n\nexport const FileUploadContextProvider = FileUploadContext.Provider;\n\nexport const useValuesFileUploadContext = (): FileUploadContextType => {\n const { t } = useTranslation();\n const [fileUploadExtensions, resolved] = useResolvedExtensions(isFileUpload);\n const toastContext = useToast();\n const [namespace] = useActiveNamespace();\n const [file, setFile] = React.useState(undefined);\n const fileExtensions = React.useMemo(\n () =>\n resolved\n ? _.flatten(fileUploadExtensions.map((e) => e.properties.fileExtensions)).map((ext) =>\n ext.toLowerCase(),\n )\n : [],\n [fileUploadExtensions, resolved],\n );\n\n const setFileUpload = React.useCallback(\n (f: File): void => {\n if (!f) {\n setFile(undefined);\n } else if (fileExtensions.length > 0) {\n const requiredFileExtension = getRequiredFileUploadExtension(fileUploadExtensions, f.name);\n if (requiredFileExtension) {\n setFile(f);\n requiredFileExtension.properties.handler(f, namespace);\n } else {\n toastContext.addToast({\n variant: AlertVariant.warning,\n title: t('console-app~Incompatible file type'),\n content: t(\n 'console-app~{{fileName}} cannot be uploaded. Only {{fileExtensions}} files are supported currently. Try another file.',\n {\n fileName: f.name,\n fileExtensions: fileExtensions.toString(),\n },\n ),\n timeout: true,\n dismissible: true,\n });\n }\n }\n },\n [setFile, fileExtensions, t, namespace, toastContext, fileUploadExtensions],\n );\n\n return {\n fileUpload: file,\n setFileUpload,\n extensions: fileExtensions,\n };\n};\n","import { ResolvedExtension, FileUpload } from '@console/dynamic-plugin-sdk';\n\nexport const getFileType = (fileName: string): string => {\n if (fileName.lastIndexOf('.') === -1) {\n return null;\n }\n return fileName.split('.').pop();\n};\n\nexport const isFileSupported = (fileName: string, supportedFileTypes: string[]): boolean => {\n const extension = getFileType(fileName);\n if (!extension || extension.length === 0) {\n return false;\n }\n return supportedFileTypes.includes(extension.toLowerCase());\n};\n\nexport const getRequiredFileUploadExtension = (\n fileUploadExtensions: ResolvedExtension[],\n fileName: string,\n) =>\n fileUploadExtensions.find((ex) => isFileSupported(fileName, ex.properties.fileExtensions)) ??\n null;\n"],"sourceRoot":""}