{"version":3,"file":"PDFViewer.mjs","names":["React","FC","useEffect","useState","Document","Page","pdfjs","ControlPanel","LinearProgress","makeStyles","useStyles","theme","pdfSection","props","PDFContainerProps","minWidth","documentContainer","display","justifyContent","width","height","overflowX","overflowY","loadingBox","isPDFOpen","fileUrl","blobPDF","Blob","closePDF","onClickDownload","PDFViewer","t0","$","_c","t1","undefined","scale","setScale","numPages","setNumPages","pageNumber","setPageNumber","resolvedFile","setResolvedFile","t2","classes","_temp","t3","t4","url","URL","createObjectURL","revokeObjectURL","length","t5","Symbol","for","onDocumentLoadSuccess","t6","numPages_0","t7","GlobalWorkerOptions","workerSrc","version"],"sources":["../../../../src/UI/fileViewer/pdfViewer/PDFViewer.tsx"],"sourcesContent":["import React, { FC, useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport ControlPanel from './ControlPanel';\nimport { LinearProgress } from '../../loading/LinearProgress';\nimport { makeStyles } from '@material-ui/core';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/esm/Page/TextLayer.css';\n\nconst useStyles = makeStyles((theme) => ({\n  pdfSection: (props: PDFContainerProps) => ({\n    minWidth: props?.minWidth\n  }),\n  documentContainer: {\n    display: 'flex',\n    justifyContent: 'center',\n    width: '100%',\n    height: '100%',\n    overflowX: 'auto',\n    overflowY: 'hidden'\n  },\n  loadingBox: {\n    width: '100%'\n  }\n}));\n\ninterface PDFContainerProps {\n  isPDFOpen?: boolean;\n  fileUrl?: string;\n  blobPDF?: Blob | string;\n  closePDF?: () => void;\n  onClickDownload?: () => void;\n  minWidth?: number | string;\n}\n\nexport const PDFViewer: FC<PDFContainerProps> = ({\n  isPDFOpen = true,\n  fileUrl,\n  blobPDF,\n  closePDF,\n  onClickDownload,\n  minWidth\n}) => {\n  const [scale, setScale] = useState(1.0);\n  const [numPages, setNumPages] = useState<number | null>(null);\n  const [pageNumber, setPageNumber] = useState(1);\n  const [resolvedFile, setResolvedFile] = useState<string | Blob | null>(null);\n  const classes = useStyles({ minWidth });\n\n  useEffect(() => {\n    pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n  });\n\n  useEffect(() => {\n    // Priority: fileUrl > blobPDF > base64 string\n    if (fileUrl) {\n      setResolvedFile(fileUrl);\n      return;\n    }\n\n    if (blobPDF instanceof Blob) {\n      const url = URL.createObjectURL(blobPDF);\n      setResolvedFile(url);\n\n      return () => {\n        URL.revokeObjectURL(url);\n      };\n    }\n\n    // Handle base64 PDF string\n    if (typeof blobPDF === 'string' && blobPDF.length > 0) {\n      setResolvedFile(`data:application/pdf;base64,${blobPDF}`);\n      return;\n    }\n\n    setResolvedFile(null);\n  }, [fileUrl, blobPDF]);\n\n  function onDocumentLoadSuccess({ numPages }: { numPages: number }) {\n    setNumPages(numPages);\n  }\n\n  return (\n    <div>\n      {isPDFOpen && resolvedFile && (\n        <div id='pdf-section' className={classes.pdfSection}>\n          <ControlPanel\n            scale={scale}\n            setScale={setScale}\n            numPages={numPages}\n            pageNumber={pageNumber}\n            setPageNumber={setPageNumber}\n            file={resolvedFile}\n            closePDF={closePDF}\n            onClickDownload={onClickDownload}\n          />\n          <div className={classes.documentContainer}>\n            <Document file={resolvedFile} onLoadSuccess={onDocumentLoadSuccess}>\n              <Page\n                pageNumber={pageNumber}\n                scale={scale}\n                loading={\n                  <div className={classes.loadingBox}>\n                    <LinearProgress />\n                  </div>\n                }\n              />\n            </Document>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n"],"mappings":"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"}