{"version":3,"file":"FileViewer.mjs","names":["React","useMemo","PDFViewer","ImageSlider","validateFilesImageType","useTranslation","AmbientAlert","defaultFieldMapping","filePath","blobFile","fileName","fileExtension","primaryText","secondaryText","FileViewer","props","data","fieldMapping","acceptedFileExtensions","otherProps","t","filteredData","length","Array","filter","item","includes","fileType","type","viewer","defaultValue"],"sources":["../../../src/UI/fileViewer/FileViewer.jsx"],"sourcesContent":["/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { useMemo } from 'react';\nimport { PDFViewer } from './pdfViewer/PDFViewer';\nimport { ImageSlider } from './imageSlider/ImageSlider';\nimport { validateFilesImageType } from './utils/fileUtils';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientAlert } from '../feedback/AmbientAlert';\n\nconst defaultFieldMapping = {\n  filePath: 'filePath',\n  blobFile: 'blobFile',\n  fileName: 'fileName',\n  fileExtension: 'fileExtension',\n  primaryText: 'primaryText',\n  secondaryText: 'secondaryText',\n};\n\nexport const FileViewer = props => {\n  const {\n    data,\n    fieldMapping = defaultFieldMapping,\n    acceptedFileExtensions,\n    ...otherProps\n  } = props;\n  const { t } = useTranslation();\n\n  //filter data\n  const filteredData = useMemo(() => {\n    if (!acceptedFileExtensions || acceptedFileExtensions?.length === 0)\n      return data;\n    if (data instanceof Array && data?.length > 0) {\n      return data?.filter(item =>\n        acceptedFileExtensions?.includes(item?.[fieldMapping?.fileExtension])\n      );\n    } else {\n      return acceptedFileExtensions?.includes(\n        data?.[fieldMapping?.fileExtension]\n      )\n        ? data\n        : null;\n    }\n  }, [acceptedFileExtensions, data, fieldMapping]);\n\n  // check if the data is an array. If yes, currently only image viewer accept this list,\n  // we need to validate if all the file in the list is image\n  const fileType = useMemo(() => {\n    if (filteredData instanceof Array) {\n      const type = validateFilesImageType(\n        filteredData,\n        fieldMapping?.fileExtension\n      );\n      return type;\n    }\n    return filteredData?.[fieldMapping?.fileExtension];\n  }, [fieldMapping, filteredData]);\n\n  const viewer = useMemo(() => {\n    switch (fileType) {\n      case 'pdf':\n        return (\n          <PDFViewer\n            fileUrl={filteredData?.[fieldMapping?.filePath]}\n            blobPDF={filteredData?.[fieldMapping?.blobFile]}\n            {...otherProps}\n          />\n        );\n      case 'image':\n        return (\n          <ImageSlider\n            images={filteredData}\n            fieldMapping={fieldMapping}\n            {...otherProps}\n          />\n        );\n      default:\n        return (\n          <AmbientAlert\n            alertMessage={t('fileViewer.unableToViewFile', {\n              defaultValue: 'Unable to view file'\n            })}\n            showAlert\n            alertSeverity=\"error\"\n          />\n        );\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [fileType, data, fieldMapping, otherProps]);\n\n  return <>{viewer}</>;\n};\n"],"mappings":";;;;;;;AAQA,MAAMO,sBAAsB;CAC1BC,UAAU;CACVC,UAAU;CACVC,UAAU;CACVC,eAAe;CACfC,aAAa;CACbC,eAAe;CAChB;AAED,MAAaC,cAAaC,UAAS;CACjC,MAAM,EACJC,MACAC,eAAeV,qBACfW,wBACA,GAAGC,eACDJ;CACJ,MAAM,EAAEK,MAAMf,gBAAgB;CAG9B,MAAMgB,eAAepB,cAAc;AACjC,MAAI,CAACiB,0BAA0BA,wBAAwBI,WAAW,EAChE,QAAON;AACT,MAAIA,gBAAgBO,SAASP,MAAMM,SAAS,EAC1C,QAAON,MAAMQ,QAAOC,SAClBP,wBAAwBQ,SAASD,OAAOR,cAAcN,eACxD,CAAC;MAED,QAAOO,wBAAwBQ,SAC7BV,OAAOC,cAAcN,eACtB,GACGK,OACA;IAEL;EAACE;EAAwBF;EAAMC;EAAa,CAAC;CAIhD,MAAMU,WAAW1B,cAAc;AAC7B,MAAIoB,wBAAwBE,MAK1B,QAJanB,uBACXiB,cACAJ,cAAcN,cACf;AAGH,SAAOU,eAAeJ,cAAcN;IACnC,CAACM,cAAcI,aAAa,CAAC;CAEhC,MAAMQ,SAAS5B,cAAc;AAC3B,UAAQ0B,UAAR;GACE,KAAK,MACH,QACE,sBAAA,cAAC,WAAD;IACE,SAASN,eAAeJ,cAAcT;IACtC,SAASa,eAAeJ,cAAcR;IACtC,GAAIU;IACJ,CAAA;GAEN,KAAK,QACH,QACE,sBAAA,cAAC,aAAD;IACE,QAAQE;IACMJ;IACd,GAAIE;IACJ,CAAA;GAEN,QACE,QACE,sBAAA,cAAC,cAAD;IACE,cAAcC,EAAE,+BAA+B,EAC7CU,cAAc,uBACf,CAAC;IACF,WAAA;IACA,eAAc;IACd,CAAA;;IAIP;EAACH;EAAUX;EAAMC;EAAcE;EAAW,CAAC;AAE9C,QAAO,sBAAA,cAAA,MAAA,UAAA,MAAGU,OAAU"}