@file-viewer/core 2.0.7 → 2.0.9
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.en.md +1 -1
- package/README.md +1 -1
- package/dist/contracts/types.d.ts +32 -0
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/platform/assets.d.ts +21 -3
- package/dist/platform/assets.js +129 -7
- package/dist/registry/formats.d.ts +1 -1
- package/dist/renderers/drawing.d.ts +1 -1
- package/dist/renderers/drawing.js +89 -15
- package/dist/renderers/pdf.d.ts +1 -1
- package/dist/renderers/pdf.js +163 -15
- package/dist/renderers/typst.js +123 -62
- package/dist/renderers/wordDocx.js +118 -201
- package/dist/renderers/wordDocx.worker.js +2 -2
- package/package.json +8 -10
package/README.en.md
CHANGED
|
@@ -8,7 +8,7 @@ Browser execution belongs inside core only when it remains framework-neutral Typ
|
|
|
8
8
|
|
|
9
9
|
`@file-viewer/core` is the only shared foundation package. It owns the headless contracts plus browser/renderers layers for the direct `createViewer(container, options)` engine, renderer registry, DOM provider registry, print layout helpers, browser asset resolution, and framework-neutral DOM/Canvas/Worker/WASM rendering contracts. Core source is public; the private Gitea aggregate remains available for the complete workspace, unified release automation, sponsorship, and priority support.
|
|
10
10
|
|
|
11
|
-
Migrated browser renderers currently include media, code, Markdown, images, UMD, geospatial data, Word DOCX/DOC, Excel/Spreadsheet, OpenDocument/RTF, PDF, OFD, email, EDA, CAD, Typst, PPTX, EPUB, 3D models, drawing files, data assets, and archives. PPTX rendering is powered by the standalone native `@file-viewer/pptx` engine. Component packages should reuse these handlers instead of carrying framework-specific renderer copies.
|
|
11
|
+
Migrated browser renderers currently include media, code, Markdown, images, UMD, geospatial data, Word DOCX/DOC, Excel/Spreadsheet, OpenDocument/RTF, PDF, OFD, email, EDA, CAD, Typst, PPTX, EPUB, 3D models, drawing files, data assets, and archives. DOCX rendering is powered by the self-maintained `@file-viewer/docx` engine, and PPTX rendering is powered by the standalone native `@file-viewer/pptx` engine. Component packages should reuse these handlers instead of carrying framework-specific renderer copies.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm install @file-viewer/core
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Browser execution belongs inside core only when it remains framework-neutral Typ
|
|
|
8
8
|
|
|
9
9
|
`@file-viewer/core` is the only shared foundation package. It owns the headless contracts plus browser/renderers layers for the direct `createViewer(container, options)` engine, renderer registry, DOM provider registry, print layout helpers, browser asset resolution, and framework-neutral DOM/Canvas/Worker/WASM rendering contracts. Core source is public; the private Gitea aggregate remains available for the complete workspace, unified release automation, sponsorship, and priority support.
|
|
10
10
|
|
|
11
|
-
Current migrated browser renderers include media, code, Markdown, images, UMD, geo data, Word DOCX/DOC, Excel/Spreadsheet, OpenDocument/RTF, PDF, OFD, email, EDA, CAD, Typst, PPTX, EPUB, 3D models, drawing files, data assets and archives. PPTX rendering is provided by the independent native `@file-viewer/pptx` engine. Component packages should reuse these handlers instead of carrying framework-specific renderer copies.
|
|
11
|
+
Current migrated browser renderers include media, code, Markdown, images, UMD, geo data, Word DOCX/DOC, Excel/Spreadsheet, OpenDocument/RTF, PDF, OFD, email, EDA, CAD, Typst, PPTX, EPUB, 3D models, drawing files, data assets and archives. DOCX rendering is powered by the self-maintained `@file-viewer/docx` engine, and PPTX rendering is provided by the independent native `@file-viewer/pptx` engine. Component packages should reuse these handlers instead of carrying framework-specific renderer copies.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm install @file-viewer/core
|
|
@@ -43,18 +43,34 @@ export interface FileViewerPdfOptions {
|
|
|
43
43
|
toolbar?: boolean;
|
|
44
44
|
navigation?: boolean;
|
|
45
45
|
defaultNavigationVisible?: boolean;
|
|
46
|
+
thumbnails?: boolean;
|
|
46
47
|
rotation?: number;
|
|
47
48
|
streaming?: boolean | 'same-origin';
|
|
48
49
|
rangeChunkSize?: number;
|
|
49
50
|
withCredentials?: boolean;
|
|
50
51
|
workerUrl?: string;
|
|
52
|
+
cMapUrl?: string;
|
|
53
|
+
wasmUrl?: string;
|
|
54
|
+
standardFontDataUrl?: string;
|
|
51
55
|
}
|
|
52
56
|
export interface FileViewerDocxOptions {
|
|
53
57
|
worker?: boolean;
|
|
54
58
|
workerUrl?: string;
|
|
59
|
+
workerJsZipUrl?: string;
|
|
55
60
|
progressive?: boolean;
|
|
61
|
+
/** 默认 false,使用连续流式阅读;设为 true 时才启用 DOCX 页式预览。 */
|
|
56
62
|
visualPagination?: boolean;
|
|
57
63
|
workerTimeout?: number;
|
|
64
|
+
renderPageBatchSize?: number;
|
|
65
|
+
renderYieldEveryMs?: number;
|
|
66
|
+
strictWordCompatibility?: boolean;
|
|
67
|
+
paginationTolerance?: number;
|
|
68
|
+
maxDynamicPaginationPasses?: number;
|
|
69
|
+
awaitLayout?: boolean;
|
|
70
|
+
preserveComplexFieldResults?: boolean;
|
|
71
|
+
updatePageReferences?: boolean;
|
|
72
|
+
hideWebHiddenContent?: boolean;
|
|
73
|
+
ignoreLastRenderedPageBreak?: boolean;
|
|
58
74
|
}
|
|
59
75
|
export interface FileViewerSpreadsheetOptions {
|
|
60
76
|
worker?: boolean;
|
|
@@ -112,6 +128,21 @@ export interface FileViewerTypstOptions {
|
|
|
112
128
|
export interface FileViewerDataOptions {
|
|
113
129
|
sqlWasmUrl?: string;
|
|
114
130
|
}
|
|
131
|
+
export interface FileViewerDrawingOptions {
|
|
132
|
+
/**
|
|
133
|
+
* Self-hosted diagrams.net viewer script.
|
|
134
|
+
*
|
|
135
|
+
* The default points to the viewer asset copied under
|
|
136
|
+
* `vendor/drawio/viewer-static.min.js`, so Draw.io uses the official viewer
|
|
137
|
+
* offline without reaching public diagrams.net hosts.
|
|
138
|
+
*/
|
|
139
|
+
viewerScriptUrl?: string;
|
|
140
|
+
/**
|
|
141
|
+
* Defaults to true. Set to false only when a deployment prefers the small
|
|
142
|
+
* built-in SVG fallback over the official diagrams.net viewer runtime.
|
|
143
|
+
*/
|
|
144
|
+
preferOfficial?: boolean;
|
|
145
|
+
}
|
|
115
146
|
export type FileViewerCadRenderer = 'auto' | 'webgl' | 'canvas2d';
|
|
116
147
|
export type FileViewerCadDwfLineWeightMode = 'adaptive' | 'physical' | 'hairline';
|
|
117
148
|
export interface FileViewerCadOptions {
|
|
@@ -169,6 +200,7 @@ export interface FileViewerOptions {
|
|
|
169
200
|
spreadsheet?: FileViewerSpreadsheetOptions;
|
|
170
201
|
typst?: FileViewerTypstOptions;
|
|
171
202
|
data?: FileViewerDataOptions;
|
|
203
|
+
drawing?: FileViewerDrawingOptions;
|
|
172
204
|
cad?: FileViewerCadOptions;
|
|
173
205
|
hooks?: FileViewerLifecycleHooks;
|
|
174
206
|
beforeOperation?: FileViewerBeforeOperation;
|
package/dist/headless.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets';
|
|
1
|
+
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets';
|
|
2
2
|
export type { FileViewerRendererAssetDefinition, FileViewerRendererAssetKind, FileViewerRendererAssetManifest, FileViewerRendererAssetOptionPath, FileViewerRendererAssetTarget, ResolveFileViewerAssetUrlOptions, ResolveFileViewerRendererAssetsOptions, ResolvedFileViewerCadAssetUrls, ResolvedFileViewerRendererAsset, } from './assets';
|
|
3
3
|
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities';
|
|
4
4
|
export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model';
|
package/dist/headless.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// This barrel intentionally re-exports pure helpers, contracts, loading state,
|
|
4
4
|
// lifecycle operations, and renderer registry utilities without importing any
|
|
5
5
|
// framework wrapper. It is the safest entrypoint for React/Vue/Web packages.
|
|
6
|
-
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets.js';
|
|
6
|
+
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets.js';
|
|
7
7
|
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
|
|
8
8
|
export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model.js';
|
|
9
9
|
export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FileRenderContext, FileViewerRenderedInstance } from './contracts/types';
|
|
2
|
-
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets';
|
|
2
|
+
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets';
|
|
3
3
|
export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats';
|
|
4
4
|
export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model';
|
|
5
5
|
export { DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES, applyFileViewerSearchState, cloneFileViewerSearchState, createFileViewerDomSearchController, createFileViewerDomSearchControllerActionHandlers, destroyFileViewerDomSearchController, observeFileViewerDomSearchController, runFileViewerDomSearchControllerAction, syncFileViewerDomSearchControllerState, } from './features/document/search';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets.js';
|
|
1
|
+
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets.js';
|
|
2
2
|
export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats.js';
|
|
3
3
|
export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model.js';
|
|
4
4
|
export { DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES, applyFileViewerSearchState, cloneFileViewerSearchState, createFileViewerDomSearchController, createFileViewerDomSearchControllerActionHandlers, destroyFileViewerDomSearchController, observeFileViewerDomSearchController, runFileViewerDomSearchControllerAction, syncFileViewerDomSearchControllerState, } from './features/document/search.js';
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import type { FileViewerArchiveOptions, FileViewerCadOptions, FileViewerDataOptions, FileViewerDocxOptions, FileViewerOptions, FileViewerSpreadsheetOptions, FileViewerTypstOptions } from '../contracts/types';
|
|
1
|
+
import type { FileViewerArchiveOptions, FileViewerCadOptions, FileViewerDataOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerOptions, FileViewerPdfOptions, FileViewerSpreadsheetOptions, FileViewerTypstOptions } from '../contracts/types';
|
|
2
2
|
export declare const DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH = "vendor/libarchive/worker-bundle.js";
|
|
3
3
|
export declare const DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH = "vendor/libarchive/libarchive.wasm";
|
|
4
4
|
export declare const DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH = "vendor/docx/docx.worker.js";
|
|
5
|
+
export declare const DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH = "vendor/docx/jszip.min.js";
|
|
5
6
|
export declare const DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH = "vendor/xlsx/sheet.worker.js";
|
|
7
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_WORKER_PATH = "vendor/pdf/pdf.worker.mjs";
|
|
8
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_CMAP_PATH = "vendor/pdf/cmaps/";
|
|
9
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_WASM_PATH = "vendor/pdf/wasm/";
|
|
10
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH = "vendor/pdf/standard_fonts/";
|
|
11
|
+
export declare const DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH = "vendor/drawio/viewer-static.min.js";
|
|
12
|
+
export declare const DEFAULT_FILE_VIEWER_DRAWIO_ASSET_PATH = "vendor/drawio/";
|
|
6
13
|
export declare const DEFAULT_FILE_VIEWER_CAD_WASM_PATH = "wasm/cad/";
|
|
7
14
|
export declare const DEFAULT_FILE_VIEWER_CAD_WORKER_PATH = "wasm/cad/dwg-worker.js";
|
|
8
15
|
export declare const DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH = "wasm/cad/dwfv-render.wasm";
|
|
9
16
|
export declare const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL = "wasm/typst/typst_ts_web_compiler_bg.wasm";
|
|
10
17
|
export declare const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL = "wasm/typst/typst_ts_renderer_bg.wasm";
|
|
18
|
+
export declare const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = "wasm/typst/typst_ts_web_compiler_bg.wasm";
|
|
19
|
+
export declare const FALLBACK_FILE_VIEWER_TYPST_RENDERER_WASM_URL = "wasm/typst/typst_ts_renderer_bg.wasm";
|
|
11
20
|
export declare const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_PACKAGE_PATH = "@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm";
|
|
12
21
|
export declare const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH = "@myriaddreamin/typst-ts-renderer/pkg/typst_ts_renderer_bg.wasm";
|
|
13
22
|
export declare const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL = "wasm/data/sql-wasm.wasm";
|
|
@@ -22,9 +31,15 @@ export interface ResolvedFileViewerCadAssetUrls {
|
|
|
22
31
|
workerUrl: string;
|
|
23
32
|
dwfWasmUrl: string;
|
|
24
33
|
}
|
|
25
|
-
export
|
|
34
|
+
export interface ResolvedFileViewerPdfAssetUrls {
|
|
35
|
+
workerUrl: string;
|
|
36
|
+
cMapUrl: string;
|
|
37
|
+
wasmUrl: string;
|
|
38
|
+
standardFontDataUrl: string;
|
|
39
|
+
}
|
|
40
|
+
export type FileViewerRendererAssetKind = 'directory' | 'worker' | 'wasm' | 'wasm-directory' | 'script' | 'bundled-wasm';
|
|
26
41
|
export type FileViewerRendererAssetTarget = 'public' | 'bundled' | 'external';
|
|
27
|
-
export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.rendererWasmUrl';
|
|
42
|
+
export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerJsZipUrl' | 'docx.workerUrl' | 'drawing.viewerScriptUrl' | 'pdf.workerUrl' | 'pdf.cMapUrl' | 'pdf.wasmUrl' | 'pdf.standardFontDataUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.rendererWasmUrl';
|
|
28
43
|
export interface FileViewerRendererAssetDefinition {
|
|
29
44
|
id: string;
|
|
30
45
|
rendererId: string;
|
|
@@ -54,7 +69,10 @@ export declare const resolveFileViewerAssetUrl: (value: string | URL | undefined
|
|
|
54
69
|
export declare const resolveFileViewerArchiveWorkerUrl: (options?: Pick<FileViewerArchiveOptions, "workerUrl"> | null, baseUrl?: string) => string;
|
|
55
70
|
export declare const resolveFileViewerArchiveWasmUrl: (options?: Pick<FileViewerArchiveOptions, "wasmUrl"> | null, fallback?: string) => string;
|
|
56
71
|
export declare const resolveFileViewerCadAssetUrls: (options?: Pick<FileViewerCadOptions, "wasmPath" | "workerUrl" | "dwfWasmUrl"> | null, documentBaseUrl?: string) => ResolvedFileViewerCadAssetUrls;
|
|
72
|
+
export declare const resolveFileViewerPdfAssetUrls: (options?: Pick<FileViewerPdfOptions, "workerUrl" | "cMapUrl" | "wasmUrl" | "standardFontDataUrl"> | null, documentBaseUrl?: string) => ResolvedFileViewerPdfAssetUrls;
|
|
73
|
+
export declare const resolveFileViewerDrawioViewerScriptUrl: (options?: Pick<FileViewerDrawingOptions, "viewerScriptUrl"> | null, documentBaseUrl?: string) => string;
|
|
57
74
|
export declare const resolveFileViewerDocxWorkerUrl: (options?: Pick<FileViewerDocxOptions, "workerUrl"> | null, documentBaseUrl?: string) => string;
|
|
75
|
+
export declare const resolveFileViewerDocxWorkerJsZipUrl: (options?: Pick<FileViewerDocxOptions, "workerJsZipUrl"> | null, documentBaseUrl?: string) => string;
|
|
58
76
|
export declare const resolveFileViewerSpreadsheetWorkerUrl: (options?: Pick<FileViewerSpreadsheetOptions, "workerUrl"> | null, documentBaseUrl?: string) => string;
|
|
59
77
|
export declare const resolveFileViewerTypstCompilerWasmUrl: (options?: Pick<FileViewerTypstOptions, "compilerWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
|
|
60
78
|
export declare const resolveFileViewerTypstRendererWasmUrl: (options?: Pick<FileViewerTypstOptions, "rendererWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
|
package/dist/platform/assets.js
CHANGED
|
@@ -1,17 +1,97 @@
|
|
|
1
1
|
export const DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH = 'vendor/libarchive/worker-bundle.js';
|
|
2
2
|
export const DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH = 'vendor/libarchive/libarchive.wasm';
|
|
3
3
|
export const DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH = 'vendor/docx/docx.worker.js';
|
|
4
|
+
export const DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH = 'vendor/docx/jszip.min.js';
|
|
4
5
|
export const DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH = 'vendor/xlsx/sheet.worker.js';
|
|
6
|
+
export const DEFAULT_FILE_VIEWER_PDF_WORKER_PATH = 'vendor/pdf/pdf.worker.mjs';
|
|
7
|
+
export const DEFAULT_FILE_VIEWER_PDF_CMAP_PATH = 'vendor/pdf/cmaps/';
|
|
8
|
+
export const DEFAULT_FILE_VIEWER_PDF_WASM_PATH = 'vendor/pdf/wasm/';
|
|
9
|
+
export const DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH = 'vendor/pdf/standard_fonts/';
|
|
10
|
+
export const DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH = 'vendor/drawio/viewer-static.min.js';
|
|
11
|
+
export const DEFAULT_FILE_VIEWER_DRAWIO_ASSET_PATH = 'vendor/drawio/';
|
|
5
12
|
export const DEFAULT_FILE_VIEWER_CAD_WASM_PATH = 'wasm/cad/';
|
|
6
13
|
export const DEFAULT_FILE_VIEWER_CAD_WORKER_PATH = 'wasm/cad/dwg-worker.js';
|
|
7
14
|
export const DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH = 'wasm/cad/dwfv-render.wasm';
|
|
8
15
|
export const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL = 'wasm/typst/typst_ts_web_compiler_bg.wasm';
|
|
9
16
|
export const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL = 'wasm/typst/typst_ts_renderer_bg.wasm';
|
|
17
|
+
// Compatibility aliases kept for older imports. They intentionally resolve to
|
|
18
|
+
// local viewer assets; the preview runtime must not fall back to a public CDN.
|
|
19
|
+
export const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL;
|
|
20
|
+
export const FALLBACK_FILE_VIEWER_TYPST_RENDERER_WASM_URL = DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL;
|
|
10
21
|
export const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_PACKAGE_PATH = '@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm';
|
|
11
22
|
export const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH = '@myriaddreamin/typst-ts-renderer/pkg/typst_ts_renderer_bg.wasm';
|
|
12
23
|
export const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL = 'wasm/data/sql-wasm.wasm';
|
|
13
24
|
export const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_PACKAGE_PATH = 'sql.js/dist/sql-wasm.wasm';
|
|
14
25
|
export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
|
|
26
|
+
{
|
|
27
|
+
rendererId: 'drawing',
|
|
28
|
+
assets: [
|
|
29
|
+
{
|
|
30
|
+
id: 'drawio-viewer-script',
|
|
31
|
+
rendererId: 'drawing',
|
|
32
|
+
kind: 'script',
|
|
33
|
+
target: 'public',
|
|
34
|
+
required: true,
|
|
35
|
+
defaultPath: DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH,
|
|
36
|
+
optionPath: 'drawing.viewerScriptUrl',
|
|
37
|
+
description: 'Official diagrams.net viewer-static.min.js self-hosted for offline Draw.io rendering.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'drawio-offline-assets',
|
|
41
|
+
rendererId: 'drawing',
|
|
42
|
+
kind: 'directory',
|
|
43
|
+
target: 'public',
|
|
44
|
+
required: true,
|
|
45
|
+
defaultPath: DEFAULT_FILE_VIEWER_DRAWIO_ASSET_PATH,
|
|
46
|
+
description: 'Official diagrams.net styles, shapes, stencils, images, mxGraph and math assets for offline rendering.',
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
rendererId: 'pdf',
|
|
52
|
+
assets: [
|
|
53
|
+
{
|
|
54
|
+
id: 'pdf-worker',
|
|
55
|
+
rendererId: 'pdf',
|
|
56
|
+
kind: 'worker',
|
|
57
|
+
target: 'public',
|
|
58
|
+
required: true,
|
|
59
|
+
defaultPath: DEFAULT_FILE_VIEWER_PDF_WORKER_PATH,
|
|
60
|
+
optionPath: 'pdf.workerUrl',
|
|
61
|
+
description: 'PDF.js module worker copied into viewer assets for offline PDF rendering.',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'pdf-cmaps',
|
|
65
|
+
rendererId: 'pdf',
|
|
66
|
+
kind: 'directory',
|
|
67
|
+
target: 'public',
|
|
68
|
+
required: true,
|
|
69
|
+
defaultPath: DEFAULT_FILE_VIEWER_PDF_CMAP_PATH,
|
|
70
|
+
optionPath: 'pdf.cMapUrl',
|
|
71
|
+
description: 'PDF.js packed CMaps used for CJK and embedded text decoding.',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 'pdf-wasm',
|
|
75
|
+
rendererId: 'pdf',
|
|
76
|
+
kind: 'wasm-directory',
|
|
77
|
+
target: 'public',
|
|
78
|
+
required: true,
|
|
79
|
+
defaultPath: DEFAULT_FILE_VIEWER_PDF_WASM_PATH,
|
|
80
|
+
optionPath: 'pdf.wasmUrl',
|
|
81
|
+
description: 'PDF.js WebAssembly helper directory for fully self-hosted PDF rendering.',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'pdf-standard-fonts',
|
|
85
|
+
rendererId: 'pdf',
|
|
86
|
+
kind: 'directory',
|
|
87
|
+
target: 'public',
|
|
88
|
+
required: true,
|
|
89
|
+
defaultPath: DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH,
|
|
90
|
+
optionPath: 'pdf.standardFontDataUrl',
|
|
91
|
+
description: 'PDF.js standard font data used when PDF files reference base fonts.',
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
},
|
|
15
95
|
{
|
|
16
96
|
rendererId: 'archive',
|
|
17
97
|
assets: [
|
|
@@ -83,7 +163,17 @@ export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
|
|
|
83
163
|
required: false,
|
|
84
164
|
defaultPath: DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH,
|
|
85
165
|
optionPath: 'docx.workerUrl',
|
|
86
|
-
description: 'Optional
|
|
166
|
+
description: 'Optional @file-viewer/docx worker for off-main-thread DOCX ZIP/XML parsing.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: 'docx-worker-jszip',
|
|
170
|
+
rendererId: 'office-word-openxml',
|
|
171
|
+
kind: 'script',
|
|
172
|
+
target: 'public',
|
|
173
|
+
required: false,
|
|
174
|
+
defaultPath: DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH,
|
|
175
|
+
optionPath: 'docx.workerJsZipUrl',
|
|
176
|
+
description: 'JSZip runtime loaded by the @file-viewer/docx worker for fully offline DOCX parsing.',
|
|
87
177
|
},
|
|
88
178
|
],
|
|
89
179
|
},
|
|
@@ -182,11 +272,31 @@ export const resolveFileViewerCadAssetUrls = (options, documentBaseUrl) => {
|
|
|
182
272
|
}),
|
|
183
273
|
};
|
|
184
274
|
};
|
|
275
|
+
export const resolveFileViewerPdfAssetUrls = (options, documentBaseUrl) => {
|
|
276
|
+
return {
|
|
277
|
+
workerUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, {
|
|
278
|
+
documentBaseUrl,
|
|
279
|
+
}),
|
|
280
|
+
cMapUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.cMapUrl, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, {
|
|
281
|
+
documentBaseUrl,
|
|
282
|
+
}),
|
|
283
|
+
wasmUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.wasmUrl, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, {
|
|
284
|
+
documentBaseUrl,
|
|
285
|
+
}),
|
|
286
|
+
standardFontDataUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.standardFontDataUrl, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, { documentBaseUrl }),
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
export const resolveFileViewerDrawioViewerScriptUrl = (options, documentBaseUrl) => {
|
|
290
|
+
return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.viewerScriptUrl, DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH, { documentBaseUrl });
|
|
291
|
+
};
|
|
185
292
|
export const resolveFileViewerDocxWorkerUrl = (options, documentBaseUrl) => {
|
|
186
293
|
return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, {
|
|
187
294
|
documentBaseUrl,
|
|
188
295
|
});
|
|
189
296
|
};
|
|
297
|
+
export const resolveFileViewerDocxWorkerJsZipUrl = (options, documentBaseUrl) => {
|
|
298
|
+
return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerJsZipUrl, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, { documentBaseUrl });
|
|
299
|
+
};
|
|
190
300
|
export const resolveFileViewerSpreadsheetWorkerUrl = (options, documentBaseUrl) => {
|
|
191
301
|
return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, {
|
|
192
302
|
documentBaseUrl,
|
|
@@ -208,7 +318,7 @@ export const getFileViewerRendererAssetManifest = (rendererId) => {
|
|
|
208
318
|
return DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS.find(manifest => manifest.rendererId === rendererId) || null;
|
|
209
319
|
};
|
|
210
320
|
const getRendererAssetOptionValue = (options, optionPath) => {
|
|
211
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
321
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
212
322
|
switch (optionPath) {
|
|
213
323
|
case 'archive.workerUrl':
|
|
214
324
|
return (_a = options === null || options === void 0 ? void 0 : options.archive) === null || _a === void 0 ? void 0 : _a.workerUrl;
|
|
@@ -222,14 +332,26 @@ const getRendererAssetOptionValue = (options, optionPath) => {
|
|
|
222
332
|
return (_e = options === null || options === void 0 ? void 0 : options.cad) === null || _e === void 0 ? void 0 : _e.dwfWasmUrl;
|
|
223
333
|
case 'data.sqlWasmUrl':
|
|
224
334
|
return (_f = options === null || options === void 0 ? void 0 : options.data) === null || _f === void 0 ? void 0 : _f.sqlWasmUrl;
|
|
335
|
+
case 'docx.workerJsZipUrl':
|
|
336
|
+
return (_g = options === null || options === void 0 ? void 0 : options.docx) === null || _g === void 0 ? void 0 : _g.workerJsZipUrl;
|
|
225
337
|
case 'docx.workerUrl':
|
|
226
|
-
return (
|
|
338
|
+
return (_h = options === null || options === void 0 ? void 0 : options.docx) === null || _h === void 0 ? void 0 : _h.workerUrl;
|
|
339
|
+
case 'drawing.viewerScriptUrl':
|
|
340
|
+
return (_j = options === null || options === void 0 ? void 0 : options.drawing) === null || _j === void 0 ? void 0 : _j.viewerScriptUrl;
|
|
341
|
+
case 'pdf.workerUrl':
|
|
342
|
+
return (_k = options === null || options === void 0 ? void 0 : options.pdf) === null || _k === void 0 ? void 0 : _k.workerUrl;
|
|
343
|
+
case 'pdf.cMapUrl':
|
|
344
|
+
return (_l = options === null || options === void 0 ? void 0 : options.pdf) === null || _l === void 0 ? void 0 : _l.cMapUrl;
|
|
345
|
+
case 'pdf.wasmUrl':
|
|
346
|
+
return (_m = options === null || options === void 0 ? void 0 : options.pdf) === null || _m === void 0 ? void 0 : _m.wasmUrl;
|
|
347
|
+
case 'pdf.standardFontDataUrl':
|
|
348
|
+
return (_o = options === null || options === void 0 ? void 0 : options.pdf) === null || _o === void 0 ? void 0 : _o.standardFontDataUrl;
|
|
227
349
|
case 'spreadsheet.workerUrl':
|
|
228
|
-
return (
|
|
350
|
+
return (_p = options === null || options === void 0 ? void 0 : options.spreadsheet) === null || _p === void 0 ? void 0 : _p.workerUrl;
|
|
229
351
|
case 'typst.compilerWasmUrl':
|
|
230
|
-
return (
|
|
352
|
+
return (_q = options === null || options === void 0 ? void 0 : options.typst) === null || _q === void 0 ? void 0 : _q.compilerWasmUrl;
|
|
231
353
|
case 'typst.rendererWasmUrl':
|
|
232
|
-
return (
|
|
354
|
+
return (_r = options === null || options === void 0 ? void 0 : options.typst) === null || _r === void 0 ? void 0 : _r.rendererWasmUrl;
|
|
233
355
|
default:
|
|
234
356
|
return undefined;
|
|
235
357
|
}
|
|
@@ -250,7 +372,7 @@ export const resolveFileViewerRendererAssets = (rendererId, resolveOptions = {})
|
|
|
250
372
|
resolved.url = resolveFileViewerAssetUrl(raw, raw, {
|
|
251
373
|
baseUrl: resolveOptions.baseUrl,
|
|
252
374
|
documentBaseUrl: resolveOptions.documentBaseUrl,
|
|
253
|
-
trimTrailingSlash: asset.kind === 'wasm-directory' || resolveOptions.trimTrailingSlash,
|
|
375
|
+
trimTrailingSlash: asset.kind === 'directory' || asset.kind === 'wasm-directory' || resolveOptions.trimTrailingSlash,
|
|
254
376
|
});
|
|
255
377
|
}
|
|
256
378
|
return resolved;
|
|
@@ -302,4 +302,4 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
|
|
|
302
302
|
readonly search: true;
|
|
303
303
|
};
|
|
304
304
|
}];
|
|
305
|
-
export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "wasm" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "pcd" | "wrl" | "vrml" | "xyz" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "jpeg" | "bmp" | "tiff" | "tif" | "png" | "svg" | "webp" | "avif" | "ico" | "heic" | "heif" | "jxl" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xltm" | "csv" | "ods" | "fods" | "numbers" | "
|
|
305
|
+
export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "wasm" | "pdf" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "pcd" | "wrl" | "vrml" | "xyz" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "jpeg" | "bmp" | "tiff" | "tif" | "png" | "svg" | "webp" | "avif" | "ico" | "heic" | "heif" | "jxl" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xltm" | "csv" | "ods" | "fods" | "numbers" | "ofd" | "typ" | "eml" | "msg" | "mbox" | "olb" | "dra" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "epub" | "umd" | "md" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "ttf" | "otf" | "woff" | "woff2" | "psd" | "ai" | "eps" | "sqlite" | "parquet" | "avro" | "webarchive")[];
|
|
@@ -7,4 +7,4 @@ declare global {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
export default function renderDrawing(buffer: ArrayBuffer, target: HTMLDivElement, type?: string,
|
|
10
|
+
export default function renderDrawing(buffer: ArrayBuffer, target: HTMLDivElement, type?: string, context?: FileRenderContext): Promise<FileViewerRenderedInstance>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from '../features/document/dom/index.js';
|
|
2
2
|
import { createFileViewerZoomChangeEmitter } from '../features/document/zoom.js';
|
|
3
3
|
import { waitForFileViewerNextPaint } from '../output/export.js';
|
|
4
|
+
import { resolveFileViewerDrawioViewerScriptUrl } from '../platform/assets.js';
|
|
4
5
|
import { readFileViewerText } from '../source/index.js';
|
|
5
|
-
const DIAGRAMS_VIEWER_URL = 'https://viewer.diagrams.net/js/viewer-static.min.js';
|
|
6
6
|
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
7
7
|
const EXCALIDRAW_OFFICIAL_TIMEOUT = 6000;
|
|
8
8
|
const DRAWIO_OFFICIAL_TIMEOUT = 6000;
|
|
@@ -62,30 +62,98 @@ const toNumber = (value, fallback = 0) => {
|
|
|
62
62
|
const isTransparent = (color) => {
|
|
63
63
|
return !color || color === 'transparent' || color === 'rgba(0, 0, 0, 0)';
|
|
64
64
|
};
|
|
65
|
-
const
|
|
65
|
+
const resolveDrawingViewerScriptUrl = (options, documentRef) => {
|
|
66
|
+
return resolveFileViewerDrawioViewerScriptUrl(options, (documentRef === null || documentRef === void 0 ? void 0 : documentRef.baseURI) || (documentRef === null || documentRef === void 0 ? void 0 : documentRef.URL));
|
|
67
|
+
};
|
|
68
|
+
const resolveDirectoryUrl = (url) => {
|
|
69
|
+
try {
|
|
70
|
+
return new URL('.', url).href;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
const slashIndex = url.lastIndexOf('/');
|
|
74
|
+
return slashIndex >= 0 ? url.slice(0, slashIndex + 1) : '';
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const configureOfflineDiagramsViewerAssets = (documentRef, scriptUrl) => {
|
|
78
|
+
const ownerWindow = documentRef.defaultView || (typeof window !== 'undefined' ? window : undefined);
|
|
79
|
+
if (!ownerWindow) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const viewerWindow = ownerWindow;
|
|
83
|
+
const baseUrl = resolveDirectoryUrl(scriptUrl);
|
|
84
|
+
const setDefault = (key, value) => {
|
|
85
|
+
if (viewerWindow[key] === undefined || viewerWindow[key] === '') {
|
|
86
|
+
viewerWindow[key] = value;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
// viewer-static.min.js still contains public diagrams.net defaults. Setting
|
|
90
|
+
// these before the script executes keeps every secondary asset on the same
|
|
91
|
+
// self-hosted directory as the viewer script.
|
|
92
|
+
setDefault('PROXY_URL', `${baseUrl}proxy`);
|
|
93
|
+
setDefault('STYLE_PATH', `${baseUrl}styles`);
|
|
94
|
+
setDefault('SHAPES_PATH', `${baseUrl}shapes`);
|
|
95
|
+
setDefault('STENCIL_PATH', `${baseUrl}stencils`);
|
|
96
|
+
setDefault('DRAW_MATH_URL', `${baseUrl}math4/es5`);
|
|
97
|
+
setDefault('GRAPH_IMAGE_PATH', `${baseUrl}img`);
|
|
98
|
+
setDefault('mxImageBasePath', `${baseUrl}mxgraph/images`);
|
|
99
|
+
setDefault('mxBasePath', `${baseUrl}mxgraph/`);
|
|
100
|
+
setDefault('mxLoadStylesheets', false);
|
|
101
|
+
setDefault('DRAWIO_BASE_URL', baseUrl.replace(/\/$/, ''));
|
|
102
|
+
setDefault('DRAWIO_LIGHTBOX_URL', baseUrl.replace(/\/$/, ''));
|
|
103
|
+
setDefault('DRAWIO_SERVER_URL', baseUrl);
|
|
104
|
+
setDefault('DRAWIO_VIEWER_URL', `${baseUrl}viewer-static.min.js`);
|
|
105
|
+
setDefault('DRAWIO_LOG_URL', '');
|
|
106
|
+
setDefault('EXPORT_URL', `${baseUrl}export`);
|
|
107
|
+
setDefault('PLANT_URL', `${baseUrl}plant`);
|
|
108
|
+
setDefault('VSS_CONVERT_URL', `${baseUrl}VsdConverter/api/converter`);
|
|
109
|
+
setDefault('DRAWIO_GITLAB_URL', baseUrl);
|
|
110
|
+
setDefault('DRAWIO_GITHUB_URL', baseUrl);
|
|
111
|
+
setDefault('DRAWIO_GITHUB_API_URL', baseUrl);
|
|
112
|
+
setDefault('RT_WEBSOCKET_URL', `${baseUrl}rt`);
|
|
113
|
+
setDefault('NOTIFICATIONS_URL', `${baseUrl}notifications`);
|
|
114
|
+
};
|
|
115
|
+
const getDiagramsViewerPromiseMap = (documentRef) => {
|
|
116
|
+
let promiseMap = diagramsViewerPromises.get(documentRef);
|
|
117
|
+
if (!promiseMap) {
|
|
118
|
+
promiseMap = new Map();
|
|
119
|
+
diagramsViewerPromises.set(documentRef, promiseMap);
|
|
120
|
+
}
|
|
121
|
+
return promiseMap;
|
|
122
|
+
};
|
|
123
|
+
const deleteDiagramsViewerPromise = (documentRef, scriptUrl) => {
|
|
124
|
+
const promiseMap = diagramsViewerPromises.get(documentRef);
|
|
125
|
+
promiseMap === null || promiseMap === void 0 ? void 0 : promiseMap.delete(scriptUrl);
|
|
126
|
+
if (promiseMap && promiseMap.size === 0) {
|
|
127
|
+
diagramsViewerPromises.delete(documentRef);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const loadDiagramsViewer = (documentRef, scriptUrl) => {
|
|
66
131
|
const ownerWindow = documentRef.defaultView || (typeof window !== 'undefined' ? window : undefined);
|
|
67
132
|
if (ownerWindow === null || ownerWindow === void 0 ? void 0 : ownerWindow.GraphViewer) {
|
|
68
133
|
return Promise.resolve();
|
|
69
134
|
}
|
|
70
|
-
|
|
135
|
+
configureOfflineDiagramsViewerAssets(documentRef, scriptUrl);
|
|
136
|
+
const promiseMap = getDiagramsViewerPromiseMap(documentRef);
|
|
137
|
+
const existingPromise = promiseMap.get(scriptUrl);
|
|
71
138
|
if (existingPromise) {
|
|
72
139
|
return existingPromise;
|
|
73
140
|
}
|
|
74
141
|
const nextPromise = new Promise((resolve, reject) => {
|
|
75
|
-
const existed = documentRef.
|
|
142
|
+
const existed = Array.from(documentRef.querySelectorAll('script[src]'))
|
|
143
|
+
.find(script => script.src === scriptUrl);
|
|
76
144
|
if (existed) {
|
|
77
145
|
existed.addEventListener('load', () => resolve(), { once: true });
|
|
78
146
|
existed.addEventListener('error', () => reject(new Error('diagrams.net viewer 加载失败')), { once: true });
|
|
79
147
|
return;
|
|
80
148
|
}
|
|
81
149
|
const script = documentRef.createElement('script');
|
|
82
|
-
script.src =
|
|
150
|
+
script.src = scriptUrl;
|
|
83
151
|
script.async = true;
|
|
84
152
|
script.onload = () => resolve();
|
|
85
153
|
script.onerror = () => reject(new Error('diagrams.net viewer 加载失败'));
|
|
86
154
|
documentRef.head.appendChild(script);
|
|
87
155
|
});
|
|
88
|
-
|
|
156
|
+
promiseMap.set(scriptUrl, nextPromise);
|
|
89
157
|
return nextPromise;
|
|
90
158
|
};
|
|
91
159
|
const runWithTimeout = async (task, timeout, message) => {
|
|
@@ -638,9 +706,9 @@ const renderDrawioFallback = (documentRef, text, target) => {
|
|
|
638
706
|
}
|
|
639
707
|
appendRenderedSvg(target, svg, 'rough');
|
|
640
708
|
};
|
|
641
|
-
const renderOfficialDrawio = async (documentRef, text, target) => {
|
|
709
|
+
const renderOfficialDrawio = async (documentRef, text, target, scriptUrl) => {
|
|
642
710
|
const ownerWindow = documentRef.defaultView || (typeof window !== 'undefined' ? window : undefined);
|
|
643
|
-
await loadDiagramsViewer(documentRef);
|
|
711
|
+
await loadDiagramsViewer(documentRef, scriptUrl);
|
|
644
712
|
await waitForFileViewerNextPaint(ownerWindow);
|
|
645
713
|
const host = createElement(documentRef, 'div', 'mxgraph drawing-mxgraph');
|
|
646
714
|
host.setAttribute('data-mxgraph', JSON.stringify({
|
|
@@ -663,19 +731,24 @@ const renderOfficialDrawio = async (documentRef, text, target) => {
|
|
|
663
731
|
ownerWindow.GraphViewer.createViewerForElement(host);
|
|
664
732
|
markRendered(target, 'official');
|
|
665
733
|
};
|
|
666
|
-
const renderDrawio = async (documentRef, text, target) => {
|
|
734
|
+
const renderDrawio = async (documentRef, text, target, options) => {
|
|
735
|
+
if ((options === null || options === void 0 ? void 0 : options.preferOfficial) === false) {
|
|
736
|
+
renderDrawioFallback(documentRef, text, target);
|
|
737
|
+
return;
|
|
738
|
+
}
|
|
739
|
+
const scriptUrl = resolveDrawingViewerScriptUrl(options, documentRef);
|
|
667
740
|
try {
|
|
668
|
-
await runWithTimeout(renderOfficialDrawio(documentRef, text, target), DRAWIO_OFFICIAL_TIMEOUT, 'diagrams.net 官方 Viewer 加载超时,自动切换本地 SVG 预览');
|
|
741
|
+
await runWithTimeout(renderOfficialDrawio(documentRef, text, target, scriptUrl), DRAWIO_OFFICIAL_TIMEOUT, 'diagrams.net 官方 Viewer 加载超时,自动切换本地 SVG 预览');
|
|
669
742
|
}
|
|
670
743
|
catch (error) {
|
|
671
744
|
console.warn(error);
|
|
672
|
-
|
|
745
|
+
deleteDiagramsViewerPromise(documentRef, scriptUrl);
|
|
673
746
|
delete target.dataset.drawingRendered;
|
|
674
747
|
target.replaceChildren();
|
|
675
748
|
renderDrawioFallback(documentRef, text, target);
|
|
676
749
|
}
|
|
677
750
|
};
|
|
678
|
-
export default async function renderDrawing(buffer, target, type = 'drawio',
|
|
751
|
+
export default async function renderDrawing(buffer, target, type = 'drawio', context) {
|
|
679
752
|
const documentRef = target.ownerDocument || document;
|
|
680
753
|
const kind = normalizeDrawingType(type);
|
|
681
754
|
const zoomEmitter = createFileViewerZoomChangeEmitter();
|
|
@@ -689,7 +762,7 @@ export default async function renderDrawing(buffer, target, type = 'drawio', _co
|
|
|
689
762
|
const title = createElement(documentRef, 'div', 'drawing-title');
|
|
690
763
|
title.append(createElement(documentRef, 'span', undefined, formatDrawingLabel(type)), createElement(documentRef, 'strong', undefined, kind === 'excalidraw'
|
|
691
764
|
? 'Excalidraw 官方 SVG 预览'
|
|
692
|
-
: '
|
|
765
|
+
: 'Draw.io 离线 SVG 预览'));
|
|
693
766
|
const actions = createElement(documentRef, 'div', 'drawing-actions');
|
|
694
767
|
const zoomOutButton = createElement(documentRef, 'button', undefined, '-');
|
|
695
768
|
const zoomLabel = createElement(documentRef, 'span');
|
|
@@ -748,10 +821,11 @@ export default async function renderDrawing(buffer, target, type = 'drawio', _co
|
|
|
748
821
|
state.classList.toggle('error', status === 'error');
|
|
749
822
|
state.textContent = status === 'error'
|
|
750
823
|
? errorMessage
|
|
751
|
-
: '
|
|
824
|
+
: '正在加载绘图预览...';
|
|
752
825
|
applyZoom();
|
|
753
826
|
};
|
|
754
827
|
const loadDrawing = async () => {
|
|
828
|
+
var _a;
|
|
755
829
|
status = 'loading';
|
|
756
830
|
errorMessage = '';
|
|
757
831
|
zoom = 1;
|
|
@@ -766,7 +840,7 @@ export default async function renderDrawing(buffer, target, type = 'drawio', _co
|
|
|
766
840
|
await renderExcalidraw(documentRef, text, canvas);
|
|
767
841
|
}
|
|
768
842
|
else {
|
|
769
|
-
await renderDrawio(documentRef, text, canvas);
|
|
843
|
+
await renderDrawio(documentRef, text, canvas, (_a = context === null || context === void 0 ? void 0 : context.options) === null || _a === void 0 ? void 0 : _a.drawing);
|
|
770
844
|
}
|
|
771
845
|
if (disposed) {
|
|
772
846
|
return;
|
package/dist/renderers/pdf.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { FileRenderContext, FileViewerRenderedInstance } from '../contracts/types';
|
|
2
|
-
export declare const DEFAULT_FILE_VIEWER_PDF_WORKER_URL
|
|
2
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_WORKER_URL = "vendor/pdf/pdf.worker.mjs";
|
|
3
3
|
export default function renderPdf(buffer: ArrayBuffer, target: HTMLDivElement, context?: FileRenderContext): Promise<FileViewerRenderedInstance>;
|