@file-viewer/web-full 2.1.3 → 2.1.4
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/flyfish-file-viewer-web-full.iife.js +10 -11643
- package/dist/flyfish-viewer-manifest.json +1 -1
- package/dist/global.d.ts +4 -2
- package/dist/global.js +4 -2
- package/dist/iife.d.ts +40 -0
- package/dist/iife.js +325 -0
- package/dist/renderers/archive.iife.js +358 -0
- package/dist/renderers/cad.iife.js +198 -0
- package/dist/renderers/data.iife.js +154 -0
- package/dist/renderers/drawing.iife.js +3389 -0
- package/dist/renderers/ebook.iife.js +95 -0
- package/dist/renderers/eda.iife.js +146 -0
- package/dist/renderers/email.iife.js +95 -0
- package/dist/renderers/geo.iife.js +30 -0
- package/dist/renderers/image.iife.js +88 -0
- package/dist/renderers/media.iife.js +89 -0
- package/dist/renderers/mindmap.iife.js +57 -0
- package/dist/renderers/model.iife.js +4288 -0
- package/dist/renderers/ofd.iife.js +31 -0
- package/dist/renderers/pdf.iife.js +2097 -0
- package/dist/renderers/presentation.iife.js +108 -0
- package/dist/renderers/spreadsheet.iife.js +121 -0
- package/dist/renderers/text.iife.js +284 -0
- package/dist/renderers/typst.iife.js +109 -0
- package/dist/renderers/word.iife.js +458 -0
- package/package.json +23 -3
package/dist/global.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FILE_VIEWER_ELEMENT_TAG, FileViewerFullElement, fileViewerFullPreset, getDefaultFullAssetBaseUrl, mountViewer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions } from './
|
|
1
|
+
import { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FILE_VIEWER_ELEMENT_TAG, FileViewerFullElement, fileViewerFullPreset, getDefaultFullAssetBaseUrl, getFullRendererScriptUrl, mountViewer, preloadFullRenderer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions } from './iife';
|
|
2
2
|
declare const FlyfishFileViewerWebFull: {
|
|
3
3
|
createViewerControllerHandle: (getController: import("@file-viewer/web").ViewerControllerAccessor, dispose: () => void) => import("@file-viewer/web").ViewerControllerHandle;
|
|
4
4
|
defineFileViewerElement: typeof defineFileViewerElement;
|
|
@@ -7,7 +7,9 @@ declare const FlyfishFileViewerWebFull: {
|
|
|
7
7
|
FILE_VIEWER_ELEMENT_TAG: string;
|
|
8
8
|
fileViewerFullPreset: import("@file-viewer/core").FileViewerRendererPreset<(buffer: ArrayBuffer, target: HTMLDivElement, type?: string, context?: import("@file-viewer/core").FileRenderContext) => Promise<import("@file-viewer/core").FileViewerRenderedInstance>>;
|
|
9
9
|
getDefaultFullAssetBaseUrl: typeof getDefaultFullAssetBaseUrl;
|
|
10
|
+
getFullRendererScriptUrl: typeof getFullRendererScriptUrl;
|
|
10
11
|
mountViewer: typeof mountViewer;
|
|
12
|
+
preloadFullRenderer: typeof preloadFullRenderer;
|
|
11
13
|
setDefaultFullAssetBaseUrl: typeof setDefaultFullAssetBaseUrl;
|
|
12
14
|
withFullMountOptions: typeof withFullMountOptions;
|
|
13
15
|
withFullViewerOptions: typeof withFullViewerOptions;
|
|
@@ -18,5 +20,5 @@ declare global {
|
|
|
18
20
|
FlyfishFileViewerWebFull?: FlyfishFileViewerWebFullGlobal;
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
|
-
export { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FileViewerFullElement, FILE_VIEWER_ELEMENT_TAG, fileViewerFullPreset, getDefaultFullAssetBaseUrl, mountViewer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions };
|
|
23
|
+
export { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FileViewerFullElement, FILE_VIEWER_ELEMENT_TAG, fileViewerFullPreset, getDefaultFullAssetBaseUrl, getFullRendererScriptUrl, mountViewer, preloadFullRenderer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions };
|
|
22
24
|
export default FlyfishFileViewerWebFull;
|
package/dist/global.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FILE_VIEWER_ELEMENT_TAG, FileViewerFullElement, fileViewerFullPreset, getDefaultFullAssetBaseUrl, mountViewer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions } from './
|
|
1
|
+
import { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FILE_VIEWER_ELEMENT_TAG, FileViewerFullElement, fileViewerFullPreset, getDefaultFullAssetBaseUrl, getFullRendererScriptUrl, mountViewer, preloadFullRenderer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions } from './iife';
|
|
2
2
|
const FlyfishFileViewerWebFull = {
|
|
3
3
|
createViewerControllerHandle,
|
|
4
4
|
defineFileViewerElement,
|
|
@@ -7,7 +7,9 @@ const FlyfishFileViewerWebFull = {
|
|
|
7
7
|
FILE_VIEWER_ELEMENT_TAG,
|
|
8
8
|
fileViewerFullPreset,
|
|
9
9
|
getDefaultFullAssetBaseUrl,
|
|
10
|
+
getFullRendererScriptUrl,
|
|
10
11
|
mountViewer,
|
|
12
|
+
preloadFullRenderer,
|
|
11
13
|
setDefaultFullAssetBaseUrl,
|
|
12
14
|
withFullMountOptions,
|
|
13
15
|
withFullViewerOptions
|
|
@@ -16,5 +18,5 @@ if (typeof window !== 'undefined') {
|
|
|
16
18
|
window.FlyfishFileViewerWebFull = FlyfishFileViewerWebFull;
|
|
17
19
|
defineFileViewerElement();
|
|
18
20
|
}
|
|
19
|
-
export { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FileViewerFullElement, FILE_VIEWER_ELEMENT_TAG, fileViewerFullPreset, getDefaultFullAssetBaseUrl, mountViewer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions };
|
|
21
|
+
export { createViewerControllerHandle, defineFileViewerElement, FileViewerElement, FileViewerFullElement, FILE_VIEWER_ELEMENT_TAG, fileViewerFullPreset, getDefaultFullAssetBaseUrl, getFullRendererScriptUrl, mountViewer, preloadFullRenderer, setDefaultFullAssetBaseUrl, withFullMountOptions, withFullViewerOptions };
|
|
20
22
|
export default FlyfishFileViewerWebFull;
|
package/dist/iife.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type FileRenderHandler, type FileViewerRenderedInstance, type FileViewerRendererPlugin, type FileViewerRendererPreset } from '@file-viewer/core';
|
|
2
|
+
import { createViewerControllerHandle, FileViewerElement, FILE_VIEWER_ELEMENT_TAG } from '@file-viewer/web';
|
|
3
|
+
import type { ViewerController, ViewerCoreOptions, FileViewerElementSource, ViewerMountOptions, ViewerOptions } from '@file-viewer/web';
|
|
4
|
+
export * from '@file-viewer/web';
|
|
5
|
+
export { createViewerControllerHandle, FileViewerElement, FILE_VIEWER_ELEMENT_TAG };
|
|
6
|
+
type BrowserRendererHandler = FileRenderHandler<FileViewerRenderedInstance, HTMLDivElement>;
|
|
7
|
+
export declare function getDefaultFullAssetBaseUrl(): string | undefined;
|
|
8
|
+
export declare function setDefaultFullAssetBaseUrl(assetBaseUrl?: string | URL | null): void;
|
|
9
|
+
export declare function getFullRendererScriptUrl(rendererOrExtension: string, assetBaseUrl?: string | URL | null | undefined): string | undefined;
|
|
10
|
+
export declare const fileViewerFullPreset: FileViewerRendererPreset<BrowserRendererHandler>;
|
|
11
|
+
export declare function preloadFullRenderer(rendererOrExtension: string): Promise<FileViewerRendererPlugin<BrowserRendererHandler>>;
|
|
12
|
+
export declare function withFullViewerOptions(options?: ViewerOptions, assetBaseUrl?: string | URL | null | undefined): ViewerOptions;
|
|
13
|
+
export declare function withFullMountOptions(options?: ViewerMountOptions, assetBaseUrl?: string | URL | null | undefined): ViewerMountOptions;
|
|
14
|
+
export declare function mountViewer(container: HTMLElement, initialOptions?: ViewerMountOptions, coreOptions?: ViewerCoreOptions): ViewerController;
|
|
15
|
+
export declare class FileViewerFullElement extends FileViewerElement {
|
|
16
|
+
get options(): ViewerOptions | undefined;
|
|
17
|
+
set options(value: ViewerOptions | undefined);
|
|
18
|
+
connectedCallback(): void;
|
|
19
|
+
load(options: ViewerMountOptions): Promise<void>;
|
|
20
|
+
update(options?: ViewerMountOptions): Promise<void>;
|
|
21
|
+
get source(): FileViewerElementSource;
|
|
22
|
+
set source(value: FileViewerElementSource | undefined);
|
|
23
|
+
}
|
|
24
|
+
export declare function defineFileViewerElement(tagName?: string): CustomElementConstructor | undefined;
|
|
25
|
+
declare const FlyfishFileViewerWebFull: {
|
|
26
|
+
fileViewerFullPreset: FileViewerRendererPreset<BrowserRendererHandler>;
|
|
27
|
+
getDefaultFullAssetBaseUrl: typeof getDefaultFullAssetBaseUrl;
|
|
28
|
+
getFullRendererScriptUrl: typeof getFullRendererScriptUrl;
|
|
29
|
+
preloadFullRenderer: typeof preloadFullRenderer;
|
|
30
|
+
setDefaultFullAssetBaseUrl: typeof setDefaultFullAssetBaseUrl;
|
|
31
|
+
withFullViewerOptions: typeof withFullViewerOptions;
|
|
32
|
+
withFullMountOptions: typeof withFullMountOptions;
|
|
33
|
+
defineFileViewerElement: typeof defineFileViewerElement;
|
|
34
|
+
FileViewerElement: typeof FileViewerFullElement;
|
|
35
|
+
FileViewerFullElement: typeof FileViewerFullElement;
|
|
36
|
+
mountViewer: typeof mountViewer;
|
|
37
|
+
createViewerControllerHandle: (getController: import("@file-viewer/web").ViewerControllerAccessor, dispose: () => void) => import("@file-viewer/web").ViewerControllerHandle;
|
|
38
|
+
FILE_VIEWER_ELEMENT_TAG: string;
|
|
39
|
+
};
|
|
40
|
+
export default FlyfishFileViewerWebFull;
|
package/dist/iife.js
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { DEFAULT_RENDERER_DEFINITIONS } from '@file-viewer/core';
|
|
2
|
+
import FlyfishFileViewerWeb, { createViewerControllerHandle, FileViewerElement, FILE_VIEWER_ELEMENT_TAG, mountViewer as mountBaseViewer } from '@file-viewer/web';
|
|
3
|
+
export * from '@file-viewer/web';
|
|
4
|
+
export { createViewerControllerHandle, FileViewerElement, FILE_VIEWER_ELEMENT_TAG };
|
|
5
|
+
const rendererGlobalKey = 'FlyfishFileViewerWebFullRenderers';
|
|
6
|
+
const lazyRendererLines = [
|
|
7
|
+
{ key: 'word', label: 'Word renderer', scriptName: 'word.iife.js', rendererIds: ['office-word-openxml', 'office-word-binary', 'open-document'] },
|
|
8
|
+
{ key: 'pdf', label: 'PDF renderer', scriptName: 'pdf.iife.js', rendererIds: ['pdf'] },
|
|
9
|
+
{ key: 'ofd', label: 'OFD renderer', scriptName: 'ofd.iife.js', rendererIds: ['ofd'] },
|
|
10
|
+
{ key: 'presentation', label: 'Presentation renderer', scriptName: 'presentation.iife.js', rendererIds: ['office-presentation'] },
|
|
11
|
+
{ key: 'spreadsheet', label: 'Spreadsheet renderer', scriptName: 'spreadsheet.iife.js', rendererIds: ['spreadsheet-openxml'] },
|
|
12
|
+
{ key: 'cad', label: 'CAD renderer', scriptName: 'cad.iife.js', rendererIds: ['cad'] },
|
|
13
|
+
{ key: 'typst', label: 'Typst renderer', scriptName: 'typst.iife.js', rendererIds: ['typst'] },
|
|
14
|
+
{ key: 'drawing', label: 'Drawing renderer', scriptName: 'drawing.iife.js', rendererIds: ['drawing'] },
|
|
15
|
+
{ key: 'model', label: '3D model renderer', scriptName: 'model.iife.js', rendererIds: ['model'] },
|
|
16
|
+
{ key: 'archive', label: 'Archive renderer', scriptName: 'archive.iife.js', rendererIds: ['archive'] },
|
|
17
|
+
{ key: 'email', label: 'Email renderer', scriptName: 'email.iife.js', rendererIds: ['email'] },
|
|
18
|
+
{ key: 'ebook', label: 'Ebook renderer', scriptName: 'ebook.iife.js', rendererIds: ['epub', 'umd'] },
|
|
19
|
+
{ key: 'text', label: 'Text renderer', scriptName: 'text.iife.js', rendererIds: ['code', 'markdown'] },
|
|
20
|
+
{ key: 'image', label: 'Image renderer', scriptName: 'image.iife.js', rendererIds: ['image'] },
|
|
21
|
+
{ key: 'media', label: 'Media renderer', scriptName: 'media.iife.js', rendererIds: ['audio', 'video'] },
|
|
22
|
+
{ key: 'mindmap', label: 'Mind map renderer', scriptName: 'mindmap.iife.js', rendererIds: ['mindmap'] },
|
|
23
|
+
{ key: 'geo', label: 'Geo renderer', scriptName: 'geo.iife.js', rendererIds: ['geo'] },
|
|
24
|
+
{ key: 'data', label: 'Data asset renderer', scriptName: 'data.iife.js', rendererIds: ['data-asset'] },
|
|
25
|
+
{ key: 'eda', label: 'EDA renderer', scriptName: 'eda.iife.js', rendererIds: ['eda'] }
|
|
26
|
+
];
|
|
27
|
+
const lazyRendererById = new Map();
|
|
28
|
+
const lazyRendererByExtension = new Map();
|
|
29
|
+
const rendererScriptPromises = new Map();
|
|
30
|
+
for (const line of lazyRendererLines) {
|
|
31
|
+
for (const rendererId of line.rendererIds) {
|
|
32
|
+
lazyRendererById.set(rendererId, line);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (const definition of DEFAULT_RENDERER_DEFINITIONS) {
|
|
36
|
+
const line = lazyRendererById.get(definition.id);
|
|
37
|
+
if (!line) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
for (const extension of definition.extensions) {
|
|
41
|
+
lazyRendererByExtension.set(extension, line);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
let defaultFullAssetBaseUrl = detectCurrentScriptBaseUrl();
|
|
45
|
+
function normalizeAssetBaseUrl(baseUrl) {
|
|
46
|
+
if (!baseUrl) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const value = String(baseUrl).trim();
|
|
50
|
+
if (!value) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return value.endsWith('/') ? value : `${value}/`;
|
|
54
|
+
}
|
|
55
|
+
function detectCurrentScriptBaseUrl() {
|
|
56
|
+
if (typeof document === 'undefined') {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const currentScript = document.currentScript;
|
|
60
|
+
const scripts = Array.from(document.scripts);
|
|
61
|
+
const script = (currentScript === null || currentScript === void 0 ? void 0 : currentScript.src)
|
|
62
|
+
? currentScript
|
|
63
|
+
: scripts.reverse().find(item => /(?:@file-viewer\/web-full|flyfish-file-viewer-web-full)/.test(item.src));
|
|
64
|
+
if (!(script === null || script === void 0 ? void 0 : script.src)) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return new URL('./', script.src).href;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function createFullAssetOptions(assetBaseUrl) {
|
|
75
|
+
const baseUrl = normalizeAssetBaseUrl(assetBaseUrl);
|
|
76
|
+
if (!baseUrl) {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
archive: {
|
|
81
|
+
workerUrl: `${baseUrl}vendor/libarchive/worker-bundle.js`,
|
|
82
|
+
wasmUrl: `${baseUrl}vendor/libarchive/libarchive.wasm`
|
|
83
|
+
},
|
|
84
|
+
cad: {
|
|
85
|
+
wasmPath: `${baseUrl}wasm/cad/`,
|
|
86
|
+
workerUrl: `${baseUrl}wasm/cad/dwg-worker.js`,
|
|
87
|
+
dwfWasmUrl: `${baseUrl}wasm/cad/dwfv-render.wasm`
|
|
88
|
+
},
|
|
89
|
+
data: {
|
|
90
|
+
sqlWasmUrl: `${baseUrl}wasm/data/sql-wasm.wasm`
|
|
91
|
+
},
|
|
92
|
+
docx: {
|
|
93
|
+
workerUrl: `${baseUrl}vendor/docx/docx.worker.js`,
|
|
94
|
+
workerJsZipUrl: `${baseUrl}vendor/docx/jszip.min.js`
|
|
95
|
+
},
|
|
96
|
+
drawing: {
|
|
97
|
+
viewerScriptUrl: `${baseUrl}vendor/drawio/viewer-static.min.js`
|
|
98
|
+
},
|
|
99
|
+
pdf: {
|
|
100
|
+
workerUrl: `${baseUrl}vendor/pdf/pdf.worker.mjs`,
|
|
101
|
+
cMapUrl: `${baseUrl}vendor/pdf/cmaps/`,
|
|
102
|
+
wasmUrl: `${baseUrl}vendor/pdf/wasm/`,
|
|
103
|
+
standardFontDataUrl: `${baseUrl}vendor/pdf/standard_fonts/`
|
|
104
|
+
},
|
|
105
|
+
spreadsheet: {
|
|
106
|
+
workerUrl: `${baseUrl}vendor/xlsx/sheet.worker.js`
|
|
107
|
+
},
|
|
108
|
+
typst: {
|
|
109
|
+
compilerWasmUrl: `${baseUrl}wasm/typst/typst_ts_web_compiler_bg.wasm`,
|
|
110
|
+
rendererWasmUrl: `${baseUrl}wasm/typst/typst_ts_renderer_bg.wasm`,
|
|
111
|
+
fontAssetsUrl: `${baseUrl}wasm/typst/fonts/`
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function mergeNestedOptions(defaults, overrides) {
|
|
116
|
+
if (!defaults) {
|
|
117
|
+
return overrides;
|
|
118
|
+
}
|
|
119
|
+
if (!overrides) {
|
|
120
|
+
return defaults;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
...defaults,
|
|
124
|
+
...overrides
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function getRendererBucket() {
|
|
128
|
+
const host = globalThis;
|
|
129
|
+
if (!host[rendererGlobalKey]) {
|
|
130
|
+
host[rendererGlobalKey] = {};
|
|
131
|
+
}
|
|
132
|
+
return host[rendererGlobalKey];
|
|
133
|
+
}
|
|
134
|
+
function resolveFullRendererLine(input) {
|
|
135
|
+
const normalized = input.trim().toLowerCase().replace(/^\./, '');
|
|
136
|
+
return lazyRendererLines.find(line => line.key === normalized) ||
|
|
137
|
+
lazyRendererById.get(normalized) ||
|
|
138
|
+
lazyRendererByExtension.get(normalized);
|
|
139
|
+
}
|
|
140
|
+
export function getDefaultFullAssetBaseUrl() {
|
|
141
|
+
return defaultFullAssetBaseUrl;
|
|
142
|
+
}
|
|
143
|
+
export function setDefaultFullAssetBaseUrl(assetBaseUrl) {
|
|
144
|
+
defaultFullAssetBaseUrl = normalizeAssetBaseUrl(assetBaseUrl);
|
|
145
|
+
}
|
|
146
|
+
export function getFullRendererScriptUrl(rendererOrExtension, assetBaseUrl = defaultFullAssetBaseUrl) {
|
|
147
|
+
const line = resolveFullRendererLine(rendererOrExtension);
|
|
148
|
+
if (!line) {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
const baseUrl = normalizeAssetBaseUrl(assetBaseUrl) || './';
|
|
152
|
+
return new URL(`renderers/${line.scriptName}`, baseUrl).href;
|
|
153
|
+
}
|
|
154
|
+
async function loadFullRendererLine(line) {
|
|
155
|
+
const existing = getRendererBucket()[line.key];
|
|
156
|
+
if (existing) {
|
|
157
|
+
return existing;
|
|
158
|
+
}
|
|
159
|
+
const cached = rendererScriptPromises.get(line.key);
|
|
160
|
+
if (cached) {
|
|
161
|
+
return cached;
|
|
162
|
+
}
|
|
163
|
+
const promise = new Promise((resolve, reject) => {
|
|
164
|
+
if (typeof document === 'undefined') {
|
|
165
|
+
reject(new Error(`Cannot load ${line.label} outside a browser document.`));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const scriptUrl = getFullRendererScriptUrl(line.key);
|
|
169
|
+
if (!scriptUrl) {
|
|
170
|
+
reject(new Error(`Cannot resolve script URL for ${line.label}.`));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const previous = document.querySelector(`script[data-file-viewer-full-renderer="${line.key}"]`);
|
|
174
|
+
const onReady = () => {
|
|
175
|
+
const plugin = getRendererBucket()[line.key];
|
|
176
|
+
if (plugin) {
|
|
177
|
+
resolve(plugin);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
reject(new Error(`${line.label} script loaded but did not register a renderer plugin.`));
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
if (previous) {
|
|
184
|
+
previous.addEventListener('load', onReady, { once: true });
|
|
185
|
+
previous.addEventListener('error', () => reject(new Error(`Failed to load ${line.label} from ${scriptUrl}.`)), { once: true });
|
|
186
|
+
if (getRendererBucket()[line.key]) {
|
|
187
|
+
onReady();
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const script = document.createElement('script');
|
|
192
|
+
script.async = true;
|
|
193
|
+
script.src = scriptUrl;
|
|
194
|
+
script.dataset.fileViewerFullRenderer = line.key;
|
|
195
|
+
script.onload = onReady;
|
|
196
|
+
script.onerror = () => reject(new Error(`Failed to load ${line.label} from ${scriptUrl}.`));
|
|
197
|
+
document.head.appendChild(script);
|
|
198
|
+
});
|
|
199
|
+
rendererScriptPromises.set(line.key, promise);
|
|
200
|
+
try {
|
|
201
|
+
return await promise;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
rendererScriptPromises.delete(line.key);
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function createLazyHandler(line, rendererId) {
|
|
209
|
+
return async (buffer, target, type, context) => {
|
|
210
|
+
var _a;
|
|
211
|
+
const plugin = await loadFullRendererLine(line);
|
|
212
|
+
const registration = (_a = plugin.handlers) === null || _a === void 0 ? void 0 : _a.find(item => item.rendererId === rendererId);
|
|
213
|
+
if (!registration) {
|
|
214
|
+
throw new Error(`${line.label} did not provide handler "${rendererId}".`);
|
|
215
|
+
}
|
|
216
|
+
return registration.handler(buffer, target, type, context);
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const createLazyRendererPlugin = (line) => ({
|
|
220
|
+
id: `file-viewer-iife-${line.key}-renderer`,
|
|
221
|
+
label: `Lazy ${line.label}`,
|
|
222
|
+
definitions: DEFAULT_RENDERER_DEFINITIONS.filter(definition => line.rendererIds.includes(definition.id)),
|
|
223
|
+
handlers: line.rendererIds.map(rendererId => ({
|
|
224
|
+
rendererId,
|
|
225
|
+
handler: createLazyHandler(line, rendererId)
|
|
226
|
+
}))
|
|
227
|
+
});
|
|
228
|
+
export const fileViewerFullPreset = {
|
|
229
|
+
id: 'file-viewer-iife-preset-all',
|
|
230
|
+
label: 'Flyfish File Viewer lazy full IIFE preset',
|
|
231
|
+
renderers: lazyRendererLines.map(createLazyRendererPlugin)
|
|
232
|
+
};
|
|
233
|
+
export function preloadFullRenderer(rendererOrExtension) {
|
|
234
|
+
const line = resolveFullRendererLine(rendererOrExtension);
|
|
235
|
+
if (!line) {
|
|
236
|
+
return Promise.reject(new Error(`Unknown File Viewer renderer or extension: ${rendererOrExtension}`));
|
|
237
|
+
}
|
|
238
|
+
return loadFullRendererLine(line);
|
|
239
|
+
}
|
|
240
|
+
export function withFullViewerOptions(options = {}, assetBaseUrl = defaultFullAssetBaseUrl) {
|
|
241
|
+
var _a;
|
|
242
|
+
const { preset = fileViewerFullPreset, rendererMode = 'replace', ...rest } = options;
|
|
243
|
+
const assetOptions = createFullAssetOptions(assetBaseUrl);
|
|
244
|
+
return {
|
|
245
|
+
...rest,
|
|
246
|
+
preset,
|
|
247
|
+
rendererMode,
|
|
248
|
+
autoRenderers: (_a = rest.autoRenderers) !== null && _a !== void 0 ? _a : true,
|
|
249
|
+
archive: mergeNestedOptions(assetOptions.archive, rest.archive),
|
|
250
|
+
cad: mergeNestedOptions(assetOptions.cad, rest.cad),
|
|
251
|
+
data: mergeNestedOptions(assetOptions.data, rest.data),
|
|
252
|
+
docx: mergeNestedOptions(assetOptions.docx, rest.docx),
|
|
253
|
+
drawing: mergeNestedOptions(assetOptions.drawing, rest.drawing),
|
|
254
|
+
pdf: mergeNestedOptions(assetOptions.pdf, rest.pdf),
|
|
255
|
+
spreadsheet: mergeNestedOptions(assetOptions.spreadsheet, rest.spreadsheet),
|
|
256
|
+
typst: mergeNestedOptions(assetOptions.typst, rest.typst)
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
export function withFullMountOptions(options = {}, assetBaseUrl = defaultFullAssetBaseUrl) {
|
|
260
|
+
return {
|
|
261
|
+
...options,
|
|
262
|
+
options: withFullViewerOptions(options.options, assetBaseUrl)
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export function mountViewer(container, initialOptions = {}, coreOptions = {}) {
|
|
266
|
+
return mountBaseViewer(container, withFullMountOptions(initialOptions), coreOptions);
|
|
267
|
+
}
|
|
268
|
+
export class FileViewerFullElement extends FileViewerElement {
|
|
269
|
+
get options() {
|
|
270
|
+
return super.options;
|
|
271
|
+
}
|
|
272
|
+
set options(value) {
|
|
273
|
+
super.options = withFullViewerOptions(value);
|
|
274
|
+
}
|
|
275
|
+
connectedCallback() {
|
|
276
|
+
this.options = super.options;
|
|
277
|
+
super.connectedCallback();
|
|
278
|
+
}
|
|
279
|
+
async load(options) {
|
|
280
|
+
await super.load(withFullMountOptions(options));
|
|
281
|
+
}
|
|
282
|
+
async update(options = {}) {
|
|
283
|
+
await super.update(withFullMountOptions(options));
|
|
284
|
+
}
|
|
285
|
+
get source() {
|
|
286
|
+
return super.source;
|
|
287
|
+
}
|
|
288
|
+
set source(value) {
|
|
289
|
+
if (!value) {
|
|
290
|
+
super.source = value;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const { coreOptions, ...mountOptions } = value;
|
|
294
|
+
super.source = {
|
|
295
|
+
...withFullMountOptions(mountOptions),
|
|
296
|
+
coreOptions
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
export function defineFileViewerElement(tagName = FILE_VIEWER_ELEMENT_TAG) {
|
|
301
|
+
if (typeof window === 'undefined' || !window.customElements) {
|
|
302
|
+
return undefined;
|
|
303
|
+
}
|
|
304
|
+
const existing = window.customElements.get(tagName);
|
|
305
|
+
if (existing) {
|
|
306
|
+
return existing;
|
|
307
|
+
}
|
|
308
|
+
window.customElements.define(tagName, FileViewerFullElement);
|
|
309
|
+
return FileViewerFullElement;
|
|
310
|
+
}
|
|
311
|
+
const FlyfishFileViewerWebFull = {
|
|
312
|
+
...FlyfishFileViewerWeb,
|
|
313
|
+
fileViewerFullPreset,
|
|
314
|
+
getDefaultFullAssetBaseUrl,
|
|
315
|
+
getFullRendererScriptUrl,
|
|
316
|
+
preloadFullRenderer,
|
|
317
|
+
setDefaultFullAssetBaseUrl,
|
|
318
|
+
withFullViewerOptions,
|
|
319
|
+
withFullMountOptions,
|
|
320
|
+
defineFileViewerElement,
|
|
321
|
+
FileViewerElement: FileViewerFullElement,
|
|
322
|
+
FileViewerFullElement,
|
|
323
|
+
mountViewer
|
|
324
|
+
};
|
|
325
|
+
export default FlyfishFileViewerWebFull;
|