@file-viewer/renderer-word 2.2.5 → 2.2.6
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/dist/wordDocx.d.ts +7 -1
- package/dist/wordDocx.js +31 -4
- package/package.json +3 -3
package/dist/wordDocx.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Options, renderAsync } from '@file-viewer/docx';
|
|
2
|
-
import { type FileRenderContext, type FileViewerRenderedInstance as AppWrapper } from '@file-viewer/core';
|
|
2
|
+
import { type FileRenderContext, type FileViewerDocxOptions, type FileViewerRenderedInstance as AppWrapper } from '@file-viewer/core';
|
|
3
3
|
type DocxRenderAsync = typeof renderAsync;
|
|
4
|
+
type DocxExternalLinkPolicy = NonNullable<FileViewerDocxOptions['externalLinkPolicy']>;
|
|
5
|
+
type DocxRenderOptions = Partial<Options> & {
|
|
6
|
+
externalLinkPolicy: DocxExternalLinkPolicy;
|
|
7
|
+
};
|
|
4
8
|
export declare const isMissingDocxHeaderFooterRootError: (error: unknown) => boolean;
|
|
5
9
|
/**
|
|
6
10
|
* Some malformed or partially generated DOCX files reference a header/footer
|
|
@@ -16,6 +20,8 @@ export declare const renderDocxWithHeaderFooterFallback: (render: DocxRenderAsyn
|
|
|
16
20
|
*/
|
|
17
21
|
export declare const resolveDocxPageBackgroundImage: (buffer: ArrayBuffer, createXmlParser?: () => Pick<DOMParser, "parseFromString">) => Promise<string | undefined>;
|
|
18
22
|
export declare const applyDocxPageBackgroundImage: (target: HTMLDivElement, imageUrl: string | undefined) => number;
|
|
23
|
+
export declare const applyDocxExternalLinkPolicy: (target: Pick<ParentNode, "querySelectorAll">, policy: DocxExternalLinkPolicy) => number;
|
|
24
|
+
export declare const createDocxOptions: (target: HTMLDivElement, context: FileRenderContext | undefined, notifyProgressiveRender: () => void) => DocxRenderOptions;
|
|
19
25
|
/**
|
|
20
26
|
* 渲染docx文件
|
|
21
27
|
*/
|
package/dist/wordDocx.js
CHANGED
|
@@ -260,8 +260,27 @@ const appendDocxVendorAssetVersion = (url, explicitUrl) => {
|
|
|
260
260
|
}
|
|
261
261
|
return `${url}${url.includes('?') ? '&' : '?'}file-viewer-docx=${DOCX_VENDOR_ASSET_VERSION}`;
|
|
262
262
|
};
|
|
263
|
-
const
|
|
264
|
-
|
|
263
|
+
export const applyDocxExternalLinkPolicy = (target, policy) => {
|
|
264
|
+
if (policy === 'allow') {
|
|
265
|
+
return 0;
|
|
266
|
+
}
|
|
267
|
+
let blocked = 0;
|
|
268
|
+
target.querySelectorAll('a[href]').forEach(anchor => {
|
|
269
|
+
const href = anchor.getAttribute('href');
|
|
270
|
+
if (!href || href.startsWith('#')) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
if (!anchor.hasAttribute('data-docx-external-href')) {
|
|
274
|
+
anchor.setAttribute('data-docx-external-href', href);
|
|
275
|
+
}
|
|
276
|
+
anchor.removeAttribute('href');
|
|
277
|
+
anchor.setAttribute('aria-disabled', 'true');
|
|
278
|
+
blocked += 1;
|
|
279
|
+
});
|
|
280
|
+
return blocked;
|
|
281
|
+
};
|
|
282
|
+
export const createDocxOptions = (target, context, notifyProgressiveRender) => {
|
|
283
|
+
var _a, _b, _c;
|
|
265
284
|
const docxOptions = (_a = context === null || context === void 0 ? void 0 : context.options) === null || _a === void 0 ? void 0 : _a.docx;
|
|
266
285
|
const documentBaseUrl = resolveFileViewerRuntimeAssetBaseUrl(target.ownerDocument);
|
|
267
286
|
const useWorker = shouldUseDocxWorker(target, docxOptions);
|
|
@@ -272,12 +291,19 @@ const createDocxOptions = (target, context, notifyProgressiveRender) => {
|
|
|
272
291
|
notifyProgressiveRender();
|
|
273
292
|
}
|
|
274
293
|
};
|
|
294
|
+
const externalLinkPolicy = (_b = docxOptions === null || docxOptions === void 0 ? void 0 : docxOptions.externalLinkPolicy) !== null && _b !== void 0 ? _b : 'block';
|
|
275
295
|
const options = {
|
|
276
296
|
useWorker,
|
|
277
297
|
breakPages: usePagedLayout,
|
|
278
|
-
ignoreLastRenderedPageBreak: (
|
|
298
|
+
ignoreLastRenderedPageBreak: (_c = docxOptions === null || docxOptions === void 0 ? void 0 : docxOptions.ignoreLastRenderedPageBreak) !== null && _c !== void 0 ? _c : !usePagedLayout,
|
|
299
|
+
externalLinkPolicy,
|
|
279
300
|
darkMode,
|
|
280
|
-
progress
|
|
301
|
+
progress: event => {
|
|
302
|
+
if (event.phase === 'render' || event.phase === 'layout' || event.phase === 'done') {
|
|
303
|
+
applyDocxExternalLinkPolicy(target, externalLinkPolicy);
|
|
304
|
+
}
|
|
305
|
+
progress(event);
|
|
306
|
+
}
|
|
281
307
|
};
|
|
282
308
|
if (useWorker) {
|
|
283
309
|
options.workerUrl = appendDocxVendorAssetVersion(resolveFileViewerDocxWorkerUrl(docxOptions, documentBaseUrl), !!(docxOptions === null || docxOptions === void 0 ? void 0 : docxOptions.workerUrl));
|
|
@@ -692,6 +718,7 @@ export default async function (buffer, target, context) {
|
|
|
692
718
|
...defaultOptions,
|
|
693
719
|
...docxOptions
|
|
694
720
|
});
|
|
721
|
+
applyDocxExternalLinkPolicy(target, docxOptions.externalLinkPolicy);
|
|
695
722
|
target.dataset.docxHeaderFooterFallback = usedHeaderFooterFallback ? 'true' : 'false';
|
|
696
723
|
target.dataset.docxPageBackground =
|
|
697
724
|
applyDocxPageBackgroundImage(target, pageBackgroundImage) > 0 ? 'true' : 'false';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@file-viewer/renderer-word",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Standalone Word and compatible document renderer plugin for File Viewer powered by @file-viewer/docx, @file-viewer/doc, and RTF/ODF parsing.",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"LICENSE"
|
|
58
58
|
],
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@file-viewer/core": "2.2.
|
|
61
|
-
"@file-viewer/doc": "2.2.
|
|
60
|
+
"@file-viewer/core": "2.2.6",
|
|
61
|
+
"@file-viewer/doc": "2.2.6",
|
|
62
62
|
"@file-viewer/docx": "^0.3.26",
|
|
63
63
|
"jszip": "^3.10.1",
|
|
64
64
|
"rtf.js": "^3.0.9"
|