UNPKG

mui-component

Version:

some custom mui components

142 lines (141 loc) 4.79 kB
import { type MutableRefObject } from "react"; import { type DialogContentProps } from "@mui/material"; import { pdfjs } from "react-pdf"; import "react-pdf/dist/esm/Page/AnnotationLayer.css"; import type { DocumentProps } from "react-pdf"; import type { ModalProps } from "../../feedback"; import "./index.scss"; type IPdf = string | File | Blob | ArrayBuffer; export interface PdfModalViewerProps extends ModalProps { /** 必要,传入的文件,支持url/base64/File/ArrayBuffer */ file: IPdf | (() => IPdf) | (() => Promise<IPdf>); /** 手动指定的文件名(用于标题展示和下载) */ fileName?: string; /** 全屏(仅初始值有效,改变不会更新,应由内部工具栏控制)? */ fullScreen?: boolean; /** 获取内部setOpen操作方法的ref */ setOpenRef?: MutableRefObject<{ setOpen: (open: boolean) => void; }>; /** 传递给react-pdf的Document组件的props */ documentProps?: DocumentProps; /** 显示顶部工具条? * @default true */ showToolbar?: boolean; /** 传递给toolbar顶层的className(拥有1个默认cls:pdf-viewer-toolbar) */ toolbarClassName?: string; /** 显示控制全屏的按钮? * @default true */ showFullScreen?: boolean; /** 初始fullScreen状态 */ defaultFullScreen?: boolean; /** 响应式全屏?(低于断点自动全屏,高于断点自动退出全屏) * @default true */ responsive?: boolean; /** 响应式断点 * @default 'sm' */ breakpoint?: "xs" | "sm" | "md" | "lg" | "xl" | number; /** 显示旋转页面按钮? * @default true */ showRotate?: boolean; /** 默认旋转角度 * @default 0 */ defaulRotate?: number; /** 角度变化时触发 */ onRotateChange?: (rawRotate: number, newRotate: number) => void; /** 显示当前缩放比例? * @default true */ showScale?: boolean; /** 默认缩放比例 * @default 1 */ defaultScale?: number; /** 最大放大比例 * @default 10 */ maxScale?: number; /** 最小缩小比例 * @default 1 */ minScale?: number; /** 显示旋转角度的步进按钮? * @default true */ showScaleStep?: boolean; /** 缩放比例时触发 */ onScaleChange?: (rawScale: number, newScale: number) => void; /** 显示当前页码? * @default true, */ showPagination?: boolean; /** 初始页码 */ defaultPageNumber?: number; /** 显示跳转到首页按钮? * @default true */ showFirstPage?: boolean; /** 显示跳转到尾页按钮 * @default true */ showLastPage?: boolean; /** 显示上一页/下一页按钮? * @default true */ showPageStep?: boolean; /** 页码变动时触发 */ onPageNumberChange?: (rawPageNumber: number, newPageNubmer: number) => void; /** 滚动页面时更新页码显示? * @default true */ updatePageOnScroll?: boolean; /** 显示重置设置按钮? * @default true */ showReset?: boolean; /** 点击重置触发 */ onReset?: () => void; /** 显示重载文件按钮? * @default true */ showReload?: boolean; /** 重载文件后触发 */ onReload?: () => void; /** 当该值变化时会触发文件重载(因为只要获取了文件,默认不会再触发重载了,此prop为了实现外部自动触发文件重载) * @default 0 */ shouldReload?: any; /** 显示下载按钮? * @default true */ showDownload?: boolean; /** 下载成功时触发 */ onDownloadSuccess?: (pdf: IPdf, fileName?: string) => void | Promise<void>; /** 现在失败时触发 */ onDownloadFail?: (pdf: IPdf, fileName?: string) => void | Promise<void>; /** 点击下载开始时触发,可以处理一些消息提醒之类的(如果返回值是false则不会开始下载) */ onDownloadStart?: (pdf: IPdf, fileName?: string) => void | boolean; /** React-pdf的Document加载成功后触发,可以用来处理记录文件已阅等操作 */ onPdfLoadSuccess?: (pdf: IPdf, fileName?: string) => void; /** 从file-prop获取pdf资源错误时触发 */ onPdfFetchError?: (file: IPdf | (() => IPdf) | (() => Promise<IPdf>), fileName?: string) => void; defaultRotate?: number; pdfToolbarProps?: DialogContentProps; } export { pdfjs }; /** 使用前必须自定义worker * @example * ``` * // vite: import { pdfjs } from 'mui-component' import pdfWorker from 'pdfjs-dist/build/pdf.worker.min.js?url'; pdfjs.GlobalWorkerOptions.workerSrc = pdfWorker; * ``` */ export declare const PdfModalViewer: (props: PdfModalViewerProps) => import("react/jsx-runtime").JSX.Element;