@file-viewer/core 2.0.8 → 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 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;
@@ -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,15 +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";
11
- export declare const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = "https://cdn.jsdelivr.net/npm/@myriaddreamin/typst-ts-web-compiler@0.7.0/pkg/typst_ts_web_compiler_bg.wasm";
12
- export declare const FALLBACK_FILE_VIEWER_TYPST_RENDERER_WASM_URL = "https://cdn.jsdelivr.net/npm/@myriaddreamin/typst-ts-renderer@0.7.0/pkg/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";
13
20
  export declare const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_PACKAGE_PATH = "@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm";
14
21
  export declare const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH = "@myriaddreamin/typst-ts-renderer/pkg/typst_ts_renderer_bg.wasm";
15
22
  export declare const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL = "wasm/data/sql-wasm.wasm";
@@ -24,9 +31,15 @@ export interface ResolvedFileViewerCadAssetUrls {
24
31
  workerUrl: string;
25
32
  dwfWasmUrl: string;
26
33
  }
27
- export type FileViewerRendererAssetKind = 'worker' | 'wasm' | 'wasm-directory' | 'script' | 'bundled-wasm';
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';
28
41
  export type FileViewerRendererAssetTarget = 'public' | 'bundled' | 'external';
29
- 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';
30
43
  export interface FileViewerRendererAssetDefinition {
31
44
  id: string;
32
45
  rendererId: string;
@@ -56,7 +69,10 @@ export declare const resolveFileViewerAssetUrl: (value: string | URL | undefined
56
69
  export declare const resolveFileViewerArchiveWorkerUrl: (options?: Pick<FileViewerArchiveOptions, "workerUrl"> | null, baseUrl?: string) => string;
57
70
  export declare const resolveFileViewerArchiveWasmUrl: (options?: Pick<FileViewerArchiveOptions, "wasmUrl"> | null, fallback?: string) => string;
58
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;
59
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;
60
76
  export declare const resolveFileViewerSpreadsheetWorkerUrl: (options?: Pick<FileViewerSpreadsheetOptions, "workerUrl"> | null, documentBaseUrl?: string) => string;
61
77
  export declare const resolveFileViewerTypstCompilerWasmUrl: (options?: Pick<FileViewerTypstOptions, "compilerWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
62
78
  export declare const resolveFileViewerTypstRendererWasmUrl: (options?: Pick<FileViewerTypstOptions, "rendererWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
@@ -1,19 +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';
10
- export const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = 'https://cdn.jsdelivr.net/npm/@myriaddreamin/typst-ts-web-compiler@0.7.0/pkg/typst_ts_web_compiler_bg.wasm';
11
- export const FALLBACK_FILE_VIEWER_TYPST_RENDERER_WASM_URL = 'https://cdn.jsdelivr.net/npm/@myriaddreamin/typst-ts-renderer@0.7.0/pkg/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;
12
21
  export const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_PACKAGE_PATH = '@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm';
13
22
  export const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH = '@myriaddreamin/typst-ts-renderer/pkg/typst_ts_renderer_bg.wasm';
14
23
  export const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL = 'wasm/data/sql-wasm.wasm';
15
24
  export const DEFAULT_FILE_VIEWER_DATA_SQL_WASM_PACKAGE_PATH = 'sql.js/dist/sql-wasm.wasm';
16
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
+ },
17
95
  {
18
96
  rendererId: 'archive',
19
97
  assets: [
@@ -85,7 +163,17 @@ export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
85
163
  required: false,
86
164
  defaultPath: DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH,
87
165
  optionPath: 'docx.workerUrl',
88
- description: 'Optional DOCX worker for off-main-thread docx-preview parsing and HTML assembly.',
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.',
89
177
  },
90
178
  ],
91
179
  },
@@ -184,11 +272,31 @@ export const resolveFileViewerCadAssetUrls = (options, documentBaseUrl) => {
184
272
  }),
185
273
  };
186
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
+ };
187
292
  export const resolveFileViewerDocxWorkerUrl = (options, documentBaseUrl) => {
188
293
  return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, {
189
294
  documentBaseUrl,
190
295
  });
191
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
+ };
192
300
  export const resolveFileViewerSpreadsheetWorkerUrl = (options, documentBaseUrl) => {
193
301
  return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, {
194
302
  documentBaseUrl,
@@ -210,7 +318,7 @@ export const getFileViewerRendererAssetManifest = (rendererId) => {
210
318
  return DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS.find(manifest => manifest.rendererId === rendererId) || null;
211
319
  };
212
320
  const getRendererAssetOptionValue = (options, optionPath) => {
213
- 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;
214
322
  switch (optionPath) {
215
323
  case 'archive.workerUrl':
216
324
  return (_a = options === null || options === void 0 ? void 0 : options.archive) === null || _a === void 0 ? void 0 : _a.workerUrl;
@@ -224,14 +332,26 @@ const getRendererAssetOptionValue = (options, optionPath) => {
224
332
  return (_e = options === null || options === void 0 ? void 0 : options.cad) === null || _e === void 0 ? void 0 : _e.dwfWasmUrl;
225
333
  case 'data.sqlWasmUrl':
226
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;
227
337
  case 'docx.workerUrl':
228
- return (_g = options === null || options === void 0 ? void 0 : options.docx) === null || _g === void 0 ? void 0 : _g.workerUrl;
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;
229
349
  case 'spreadsheet.workerUrl':
230
- return (_h = options === null || options === void 0 ? void 0 : options.spreadsheet) === null || _h === void 0 ? void 0 : _h.workerUrl;
350
+ return (_p = options === null || options === void 0 ? void 0 : options.spreadsheet) === null || _p === void 0 ? void 0 : _p.workerUrl;
231
351
  case 'typst.compilerWasmUrl':
232
- return (_j = options === null || options === void 0 ? void 0 : options.typst) === null || _j === void 0 ? void 0 : _j.compilerWasmUrl;
352
+ return (_q = options === null || options === void 0 ? void 0 : options.typst) === null || _q === void 0 ? void 0 : _q.compilerWasmUrl;
233
353
  case 'typst.rendererWasmUrl':
234
- return (_k = options === null || options === void 0 ? void 0 : options.typst) === null || _k === void 0 ? void 0 : _k.rendererWasmUrl;
354
+ return (_r = options === null || options === void 0 ? void 0 : options.typst) === null || _r === void 0 ? void 0 : _r.rendererWasmUrl;
235
355
  default:
236
356
  return undefined;
237
357
  }
@@ -252,7 +372,7 @@ export const resolveFileViewerRendererAssets = (rendererId, resolveOptions = {})
252
372
  resolved.url = resolveFileViewerAssetUrl(raw, raw, {
253
373
  baseUrl: resolveOptions.baseUrl,
254
374
  documentBaseUrl: resolveOptions.documentBaseUrl,
255
- trimTrailingSlash: asset.kind === 'wasm-directory' || resolveOptions.trimTrailingSlash,
375
+ trimTrailingSlash: asset.kind === 'directory' || asset.kind === 'wasm-directory' || resolveOptions.trimTrailingSlash,
256
376
  });
257
377
  }
258
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" | "pdf" | "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")[];
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, _context?: FileRenderContext): Promise<FileViewerRenderedInstance>;
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 loadDiagramsViewer = (documentRef) => {
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
- const existingPromise = diagramsViewerPromises.get(documentRef);
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.querySelector(`script[src="${DIAGRAMS_VIEWER_URL}"]`);
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 = DIAGRAMS_VIEWER_URL;
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
- diagramsViewerPromises.set(documentRef, nextPromise);
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
- diagramsViewerPromises.delete(documentRef);
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', _context) {
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
- : 'diagrams.net 官方 Viewer 预览'));
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;
@@ -1,3 +1,3 @@
1
1
  import type { FileRenderContext, FileViewerRenderedInstance } from '../contracts/types';
2
- export declare const DEFAULT_FILE_VIEWER_PDF_WORKER_URL: string;
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>;