@flyfish-group/file-viewer-react 1.0.14 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +16 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
React 文件预览组件。只提供私有化部署路线: 依赖的 `@flyfish-group/file-viewer-web` 会随包携带 Vue 基线 viewer 产物;使用 `npm install` 或已允许 pnpm 安装脚本后,会复制到宿主项目 `public/file-viewer`。React 组件默认加载 `/file-viewer/index.html`,不依赖任何外部服务。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm install @flyfish-group/file-viewer-react@1.0.
|
|
6
|
+
npm install @flyfish-group/file-viewer-react@1.0.17
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
pnpm 10 默认会拦截依赖包的 `postinstall`。如果安装后提示 `Ignored build scripts: @flyfish-group/file-viewer-web`,请执行 `pnpm approve-builds` 允许该包,或运行 `pnpm exec file-viewer-copy-assets ./public/file-viewer`。
|
|
@@ -16,6 +16,9 @@ export function Preview() {
|
|
|
16
16
|
<div style={{ height: '100vh' }}>
|
|
17
17
|
<FileViewer
|
|
18
18
|
url="https://example.com/demo.docx"
|
|
19
|
+
onViewerEvent={(event) => {
|
|
20
|
+
console.log(event.type, event.event, event.payload)
|
|
21
|
+
}}
|
|
19
22
|
options={{
|
|
20
23
|
toolbar: true,
|
|
21
24
|
watermark: { text: '内部预览', opacity: 0.14 },
|
|
@@ -42,4 +45,4 @@ export function Preview() {
|
|
|
42
45
|
<FileViewer viewerUrl="/vendor/file-viewer/index.html" url={url} />
|
|
43
46
|
```
|
|
44
47
|
|
|
45
|
-
`options` 会透传给 Vue 基线预览器,可配置下载/打印/导出 HTML 操作栏、文字或图片水印,以及压缩包预览的 `libarchive.js` Worker、IndexedDB
|
|
48
|
+
`options` 会透传给 Vue 基线预览器,可配置下载/打印/导出 HTML 操作栏、文字或图片水印,以及压缩包预览的 `libarchive.js` Worker、IndexedDB 缓存和体积上限。打印按钮会按当前格式和渲染链路动态显隐;Word / PDF 打印和导出会生成完整页面,不依赖当前 iframe 视口或已渲染 canvas。生命周期、操作能力变化和内置操作事件会通过 `onViewerEvent` 回传给宿主,适合记录加载耗时、审计下载/打印尝试和同步外部状态。
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type IframeHTMLAttributes } from 'react';
|
|
2
|
-
import { type FileRef, type ViewerFrameOptions } from '@flyfish-group/file-viewer-web';
|
|
3
|
-
export type { FileRef, ViewerFrameOptions } from '@flyfish-group/file-viewer-web';
|
|
2
|
+
import { type FileRef, type ViewerFrameEventHandler, type ViewerFrameOptions } from '@flyfish-group/file-viewer-web';
|
|
3
|
+
export type { FileRef, ViewerFrameEventHandler, ViewerFrameOptions } from '@flyfish-group/file-viewer-web';
|
|
4
4
|
export interface FileViewerHandle {
|
|
5
5
|
iframe: HTMLIFrameElement | null;
|
|
6
6
|
postFile(): boolean;
|
|
@@ -41,6 +41,10 @@ export interface FileViewerProps extends Omit<IframeHTMLAttributes<HTMLIFrameEle
|
|
|
41
41
|
* 透传给 Vue 基线预览器的运行时选项,例如水印、工具栏和压缩包缓存限制。
|
|
42
42
|
*/
|
|
43
43
|
options?: ViewerFrameOptions['options'];
|
|
44
|
+
/**
|
|
45
|
+
* iframe 模式下接收基线预览器抛出的生命周期和操作事件。
|
|
46
|
+
*/
|
|
47
|
+
onViewerEvent?: ViewerFrameEventHandler;
|
|
44
48
|
}
|
|
45
49
|
export declare const FileViewer: import("react").ForwardRefExoticComponent<FileViewerProps & import("react").RefAttributes<FileViewerHandle>>;
|
|
46
50
|
export default FileViewer;
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ const defaultStyle = {
|
|
|
8
8
|
display: 'block'
|
|
9
9
|
};
|
|
10
10
|
export const FileViewer = forwardRef((props, forwardedRef) => {
|
|
11
|
-
const { viewerUrl, url, file, name, from, targetOrigin, params, options, onLoad, style, title = 'Flyfish Viewer 文件预览', ...iframeProps } = props;
|
|
11
|
+
const { viewerUrl, url, file, name, from, targetOrigin, params, options, onViewerEvent, onLoad, style, title = 'Flyfish Viewer 文件预览', ...iframeProps } = props;
|
|
12
12
|
const iframeRef = useRef(null);
|
|
13
13
|
const [frameReady, setFrameReady] = useState(false);
|
|
14
14
|
const frameOptions = useMemo(() => ({
|
|
@@ -45,6 +45,21 @@ export const FileViewer = forwardRef((props, forwardedRef) => {
|
|
|
45
45
|
postFile();
|
|
46
46
|
}
|
|
47
47
|
}, [frameReady, postFile]);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
const handleMessage = (event) => {
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
if (event.source !== ((_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (((_b = event.data) === null || _b === void 0 ? void 0 : _b.type) !== 'flyfish-viewer:lifecycle' &&
|
|
55
|
+
((_c = event.data) === null || _c === void 0 ? void 0 : _c.type) !== 'flyfish-viewer:operation') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
onViewerEvent === null || onViewerEvent === void 0 ? void 0 : onViewerEvent(event.data, event);
|
|
59
|
+
};
|
|
60
|
+
window.addEventListener('message', handleMessage);
|
|
61
|
+
return () => window.removeEventListener('message', handleMessage);
|
|
62
|
+
}, [onViewerEvent]);
|
|
48
63
|
const handleLoad = useCallback((event) => {
|
|
49
64
|
setFrameReady(true);
|
|
50
65
|
onLoad === null || onLoad === void 0 ? void 0 : onLoad(event);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flyfish-group/file-viewer-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Private-deploy React component for Flyfish Viewer",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"react": ">=17 <20"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@flyfish-group/file-viewer-web": "^1.0.
|
|
50
|
+
"@flyfish-group/file-viewer-web": "^1.0.17"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/react": "^19.2.14",
|