![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"5660.8458c5287e40e5311b92.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/pdf_preview.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport debounce from 'lodash/debounce';\nimport type {PDFDocumentProxy, PDFPageProxy} from 'pdfjs-dist';\nimport * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';\nimport 'pdfjs-dist/build/pdf.worker.min.mjs';\nimport type {RenderParameters} from 'pdfjs-dist/types/src/display/api';\nimport React from 'react';\n\nimport type {FileInfo} from '@mattermost/types/files';\n\nimport {getFileDownloadUrl} from 'mattermost-redux/utils/file_utils';\n\nimport FileInfoPreview from 'components/file_info_preview';\nimport LoadingSpinner from 'components/widgets/loading/loading_spinner';\n\nimport {getSiteURL} from 'utils/url';\n\nconst INITIAL_RENDERED_PAGES = 3;\n\nexport type Props = {\n\n /**\n * Compare file types\n */\n fileInfo: FileInfo;\n\n /**\n * URL of pdf file to output and compare to update props url\n */\n fileUrl: string;\n scale: number;\n handleBgClose: (e: React.MouseEvent<Element, MouseEvent>) => void;\n}\n\ntype State = {\n pdf: PDFDocumentProxy | null;\n pdfPages: Record<number, PDFPageProxy>;\n pdfPagesLoaded: Record<number, boolean>;\n numPages: number;\n loading: boolean;\n success: boolean;\n prevFileUrl: string;\n}\n\nexport default class PDFPreview extends React.PureComponent<Props, State> {\n public pdfPagesRendered: Record<number, boolean>;\n public container: React.RefObject<HTMLDivElement>;\n public parentNode: HTMLElement|null = null;\n public pdfCanvasRef: {[key: string]: React.RefObject<HTMLCanvasElement>} = {};\n\n constructor(props: Props) {\n super(props);\n\n this.pdfPagesRendered = {};\n this.container = React.createRef();\n\n this.state = {\n pdf: null,\n pdfPages: [],\n pdfPagesLoaded: {},\n numPages: 0,\n loading: true,\n success: false,\n prevFileUrl: '',\n };\n }\n\n componentDidMount() {\n this.getPdfDocument();\n if (this.container.current) {\n this.parentNode = this.container.current.parentElement;\n this.parentNode?.addEventListener('scroll', this.handleScroll);\n }\n }\n\n componentWillUnmount() {\n if (this.parentNode) {\n this.parentNode.removeEventListener('scroll', this.handleScroll);\n }\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.fileUrl !== state.prevFileUrl) {\n return {\n pdf: null,\n pdfPages: {},\n pdfPagesLoaded: {},\n numPages: 0,\n loading: true,\n success: false,\n prevFileUrl: props.fileUrl,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.props.fileUrl !== prevProps.fileUrl) {\n this.getPdfDocument();\n this.pdfPagesRendered = {};\n }\n if (this.props.scale !== prevProps.scale) {\n this.pdfPagesRendered = {};\n if (this.state.success) {\n for (let i = 0; i < this.state.numPages; i++) {\n this.renderPDFPage(i);\n }\n }\n }\n\n if (!prevState.success && this.state.success) {\n for (let i = 0; i < this.state.numPages; i++) {\n this.renderPDFPage(i);\n }\n }\n }\n\n downloadFile = (e: React.FormEvent) => {\n const fileDownloadUrl = this.props.fileInfo.link || getFileDownloadUrl(this.props.fileInfo.id);\n e.preventDefault();\n window.location.href = fileDownloadUrl;\n };\n\n isInViewport = (page: Element) => {\n const bounding = page.getBoundingClientRect();\n const viewportTop = this.container.current?.scrollTop ?? 0;\n const viewportBottom = viewportTop + (this.parentNode?.clientHeight ?? 0);\n return (\n (bounding.top >= viewportTop && bounding.top <= viewportBottom) ||\n (bounding.bottom >= viewportTop && bounding.bottom <= viewportBottom) ||\n (bounding.top <= viewportTop && bounding.bottom >= viewportBottom)\n );\n };\n\n renderPDFPage = async (pageIndex: number) => {\n const canvas = this.pdfCanvasRef[`pdfCanvasRef-${pageIndex}`].current;\n if (!canvas) {\n // Refs are undefined when testing\n return;\n }\n\n // Always render the first INITIAL_RENDERED_PAGES pages to avoid\n // problems detecting isInViewport during the open animation\n if (pageIndex >= INITIAL_RENDERED_PAGES && !this.isInViewport(canvas)) {\n return;\n }\n\n if (this.pdfPagesRendered[pageIndex]) {\n return;\n }\n\n const page = await this.loadPage(this.state.pdf!, pageIndex);\n const context = canvas.getContext('2d');\n const viewport = page.getViewport({scale: this.props.scale});\n canvas.height = viewport.height;\n canvas.width = viewport.width;\n\n const renderContext = {\n canvasContext: context as object,\n viewport,\n } as RenderParameters;\n\n await page.render(renderContext).promise;\n this.pdfPagesRendered[pageIndex] = true;\n };\n\n getPdfDocument = async () => {\n try {\n const pdf = await pdfjsLib.getDocument({\n url: this.props.fileUrl,\n cMapUrl: getSiteURL() + '/static/cmaps/',\n cMapPacked: true,\n }).promise;\n this.onDocumentLoad(pdf);\n } catch (err) {\n this.onDocumentLoadError(err);\n }\n };\n\n onDocumentLoad = (pdf: PDFDocumentProxy) => {\n this.setState({pdf, numPages: pdf.numPages});\n for (let i = 0; i < pdf.numPages; i++) {\n this.pdfCanvasRef[`pdfCanvasRef-${i}`] = React.createRef();\n }\n this.setState({loading: false, success: true});\n };\n\n onDocumentLoadError = (reason: string) => {\n console.log('Unable to load PDF preview: ' + reason); //eslint-disable-line no-console\n this.setState({loading: false, success: false});\n };\n\n loadPage = async (pdf: PDFDocumentProxy, pageIndex: number) => {\n if (this.state.pdfPagesLoaded[pageIndex]) {\n return this.state.pdfPages[pageIndex];\n }\n\n const page = await pdf.getPage(pageIndex + 1);\n\n const pdfPages = Object.assign({}, this.state.pdfPages);\n pdfPages[pageIndex] = page;\n\n const pdfPagesLoaded = Object.assign({}, this.state.pdfPagesLoaded);\n pdfPagesLoaded[pageIndex] = true;\n this.setState({pdfPages, pdfPagesLoaded});\n\n return page;\n };\n\n handleScroll = debounce(() => {\n if (this.state.success) {\n for (let i = 0; i < this.state.numPages; i++) {\n this.renderPDFPage(i);\n }\n }\n }, 100);\n\n render() {\n if (this.state.loading) {\n return (\n <div\n ref={this.container}\n className='view-image__loading'\n >\n <LoadingSpinner/>\n </div>\n );\n }\n\n if (!this.state.success) {\n return (\n <FileInfoPreview\n fileInfo={this.props.fileInfo}\n fileUrl={this.props.fileUrl}\n />\n );\n }\n\n const pdfCanvases = [];\n for (let i = 0; i < this.state.numPages; i++) {\n pdfCanvases.push(\n <canvas\n ref={this.pdfCanvasRef[`pdfCanvasRef-${i}`]}\n key={'previewpdfcanvas' + i}\n />,\n );\n\n if (i < this.state.numPages - 1 && this.state.numPages > 1) {\n pdfCanvases.push(\n <div\n key={'previewpdfspacer' + i}\n className='pdf-preview-spacer'\n />,\n );\n }\n }\n\n return (\n <div\n ref={this.container}\n className='post-code'\n onClick={this.props.handleBgClose}\n >\n {pdfCanvases}\n </div>\n );\n }\n}\n"],"names":["PDFPreview","React","constructor","props","super","_defineProperty","e","fileDownloadUrl","this","fileInfo","link","getFileDownloadUrl","id","preventDefault","window","location","href","page","_this$container$curre","_this$container$curre2","_this$parentNode$clie","_this$parentNode","bounding","getBoundingClientRect","viewportTop","container","current","scrollTop","viewportBottom","parentNode","clientHeight","top","bottom","async","canvas","pdfCanvasRef","concat","pageIndex","isInViewport","pdfPagesRendered","loadPage","state","pdf","context","getContext","viewport","getViewport","scale","height","width","renderContext","canvasContext","render","promise","pdfjsLib","url","fileUrl","cMapUrl","getSiteURL","cMapPacked","onDocumentLoad","err","onDocumentLoadError","setState","numPages","i","loading","success","reason","console","log","pdfPagesLoaded","pdfPages","getPage","Object","assign","debounce","renderPDFPage","prevFileUrl","componentDidMount","_this$parentNode2","getPdfDocument","parentElement","addEventListener","handleScroll","componentWillUnmount","removeEventListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","ref","className","LoadingSpinner","FileInfoPreview","pdfCanvases","push","key","onClick","handleBgClose","_pt","isRequired"],"sourceRoot":""}