@file-viewer/core 2.0.11 → 2.1.0
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 +2 -2
- package/README.md +2 -2
- package/dist/config/options.d.ts +1 -1
- package/dist/config/options.js +1 -1
- package/dist/contracts/types.d.ts +71 -1
- package/dist/headless.d.ts +2 -2
- package/dist/headless.js +1 -1
- package/dist/index.d.ts +9 -6
- package/dist/index.js +105 -48
- package/dist/platform/assets.d.ts +3 -1
- package/dist/platform/assets.js +18 -2
- package/dist/registry/capabilities.d.ts +2 -2
- package/dist/registry/capabilities.js +2 -1
- package/dist/registry/formats.d.ts +20 -7
- package/dist/registry/formats.js +14 -5
- package/dist/registry/registry.d.ts +8 -1
- package/dist/registry/registry.js +29 -0
- package/dist/renderers/image.js +1 -10
- package/dist/renderers/index.d.ts +320 -2
- package/dist/renderers/index.js +27 -157
- package/dist/viewer/createViewer.js +86 -3
- package/package.json +17 -44
- package/dist/renderers/archive.d.ts +0 -2
- package/dist/renderers/archive.js +0 -547
- package/dist/renderers/archiveCache.d.ts +0 -10
- package/dist/renderers/archiveCache.js +0 -96
- package/dist/renderers/archiveFallback.d.ts +0 -7
- package/dist/renderers/archiveFallback.js +0 -166
- package/dist/renderers/archiveShared.d.ts +0 -23
- package/dist/renderers/archiveShared.js +0 -71
- package/dist/renderers/audio.d.ts +0 -8
- package/dist/renderers/audio.js +0 -219
- package/dist/renderers/cad.d.ts +0 -2
- package/dist/renderers/cad.js +0 -446
- package/dist/renderers/code.d.ts +0 -11
- package/dist/renderers/code.js +0 -233
- package/dist/renderers/data.d.ts +0 -7
- package/dist/renderers/data.js +0 -370
- package/dist/renderers/drawing.d.ts +0 -10
- package/dist/renderers/drawing.js +0 -882
- package/dist/renderers/eda.d.ts +0 -2
- package/dist/renderers/eda.js +0 -434
- package/dist/renderers/edaParser.d.ts +0 -77
- package/dist/renderers/edaParser.js +0 -569
- package/dist/renderers/email.d.ts +0 -2
- package/dist/renderers/email.js +0 -463
- package/dist/renderers/epub.d.ts +0 -2
- package/dist/renderers/epub.js +0 -331
- package/dist/renderers/geo.d.ts +0 -2
- package/dist/renderers/geo.js +0 -284
- package/dist/renderers/markdown.d.ts +0 -2
- package/dist/renderers/markdown.js +0 -83
- package/dist/renderers/model.d.ts +0 -2
- package/dist/renderers/model.js +0 -567
- package/dist/renderers/ofd.d.ts +0 -2
- package/dist/renderers/ofd.js +0 -256
- package/dist/renderers/openDocument.d.ts +0 -2
- package/dist/renderers/openDocument.js +0 -122
- package/dist/renderers/pdf.d.ts +0 -3
- package/dist/renderers/pdf.js +0 -1001
- package/dist/renderers/pdfStyles.d.ts +0 -1
- package/dist/renderers/pdfStyles.js +0 -1
- package/dist/renderers/pptx.d.ts +0 -2
- package/dist/renderers/pptx.js +0 -217
- package/dist/renderers/spreadsheet/state.d.ts +0 -80
- package/dist/renderers/spreadsheet/state.js +0 -96
- package/dist/renderers/spreadsheet/view.d.ts +0 -25
- package/dist/renderers/spreadsheet/view.js +0 -833
- package/dist/renderers/spreadsheet/worker/index.d.ts +0 -2
- package/dist/renderers/spreadsheet/worker/index.js +0 -1
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +0 -73
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +0 -623
- package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +0 -2
- package/dist/renderers/spreadsheet/worker/sheetjs/color.js +0 -73
- package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +0 -1
- package/dist/renderers/spreadsheet/worker/sheetjs/index.js +0 -1
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +0 -18
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +0 -106
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +0 -1
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +0 -11
- package/dist/renderers/spreadsheet/worker/type.d.ts +0 -57
- package/dist/renderers/spreadsheet/worker/type.js +0 -1
- package/dist/renderers/spreadsheet.d.ts +0 -3
- package/dist/renderers/spreadsheet.js +0 -929
- package/dist/renderers/typst.d.ts +0 -8
- package/dist/renderers/typst.js +0 -547
- package/dist/renderers/umd/parser.d.ts +0 -30
- package/dist/renderers/umd/parser.js +0 -408
- package/dist/renderers/umd.d.ts +0 -2
- package/dist/renderers/umd.js +0 -297
- package/dist/renderers/video.d.ts +0 -8
- package/dist/renderers/video.js +0 -108
- package/dist/renderers/wordDoc.d.ts +0 -5
- package/dist/renderers/wordDoc.js +0 -284
- package/dist/renderers/wordDocx.d.ts +0 -5
- package/dist/renderers/wordDocx.js +0 -985
- package/dist/renderers/wordDocx.worker.d.ts +0 -1
- package/dist/renderers/wordDocx.worker.js +0 -96
- package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +0 -183
- package/vendor/ofd/dltech/jbig2/ccitt.js +0 -1070
- package/vendor/ofd/dltech/jbig2/compatibility.js +0 -12
- package/vendor/ofd/dltech/jbig2/core_utils.js +0 -180
- package/vendor/ofd/dltech/jbig2/is_node.js +0 -27
- package/vendor/ofd/dltech/jbig2/jbig2.js +0 -2589
- package/vendor/ofd/dltech/jbig2/jbig2_stream.js +0 -81
- package/vendor/ofd/dltech/jbig2/primitives.js +0 -387
- package/vendor/ofd/dltech/jbig2/stream.js +0 -1348
- package/vendor/ofd/dltech/jbig2/util.js +0 -972
- package/vendor/ofd/dltech/ofd/ofd.d.ts +0 -11
- package/vendor/ofd/dltech/ofd/ofd.js +0 -100
- package/vendor/ofd/dltech/ofd/ofd_parser.js +0 -395
- package/vendor/ofd/dltech/ofd/ofd_render.js +0 -473
- package/vendor/ofd/dltech/ofd/ofd_util.js +0 -350
- package/vendor/ofd/dltech/ofd/pipeline.js +0 -26
package/dist/renderers/index.js
CHANGED
|
@@ -14,34 +14,6 @@ const createWrapper = (el) => ({
|
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
16
|
export const coreBrowserRendererHandlers = [
|
|
17
|
-
{
|
|
18
|
-
rendererId: 'code',
|
|
19
|
-
handler: async (buffer, target, type) => {
|
|
20
|
-
const { default: renderCode } = await import('./code.js');
|
|
21
|
-
return renderCode(buffer, target, type);
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
rendererId: 'markdown',
|
|
26
|
-
handler: async (buffer, target) => {
|
|
27
|
-
const { default: renderMarkdown } = await import('./markdown.js');
|
|
28
|
-
return renderMarkdown(buffer, target);
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
rendererId: 'video',
|
|
33
|
-
handler: async (buffer, target, type, context) => {
|
|
34
|
-
const { default: renderVideo } = await import('./video.js');
|
|
35
|
-
return renderVideo(buffer, target, type, context);
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
rendererId: 'audio',
|
|
40
|
-
handler: async (buffer, target, type) => {
|
|
41
|
-
const { default: renderAudio } = await import('./audio.js');
|
|
42
|
-
return renderAudio(buffer, target, type);
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
17
|
{
|
|
46
18
|
rendererId: 'image',
|
|
47
19
|
handler: async (buffer, target, type) => {
|
|
@@ -49,133 +21,30 @@ export const coreBrowserRendererHandlers = [
|
|
|
49
21
|
return renderImage(buffer, target, type);
|
|
50
22
|
},
|
|
51
23
|
},
|
|
52
|
-
{
|
|
53
|
-
rendererId: 'umd',
|
|
54
|
-
handler: async (buffer, target) => {
|
|
55
|
-
const { default: renderUmd } = await import('./umd.js');
|
|
56
|
-
return renderUmd(buffer, target);
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
rendererId: 'geo',
|
|
61
|
-
handler: async (buffer, target, type) => {
|
|
62
|
-
const { default: renderGeo } = await import('./geo.js');
|
|
63
|
-
return renderGeo(buffer, target, type);
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
rendererId: 'open-document',
|
|
68
|
-
handler: async (buffer, target, type) => {
|
|
69
|
-
const { default: renderOpenDocument } = await import('./openDocument.js');
|
|
70
|
-
return renderOpenDocument(buffer, target, type);
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
rendererId: 'ofd',
|
|
75
|
-
handler: async (buffer, target, _type, context) => {
|
|
76
|
-
const { default: renderOfd } = await import('./ofd.js');
|
|
77
|
-
return renderOfd(buffer, target, context);
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
rendererId: 'pdf',
|
|
82
|
-
handler: async (buffer, target, _type, context) => {
|
|
83
|
-
const { default: renderPdf } = await import('./pdf.js');
|
|
84
|
-
return renderPdf(buffer, target, context);
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
rendererId: 'office-word-openxml',
|
|
89
|
-
handler: async (buffer, target, _type, context) => {
|
|
90
|
-
const { default: renderWordDocx } = await import('./wordDocx.js');
|
|
91
|
-
return renderWordDocx(buffer, target, context);
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
rendererId: 'office-word-binary',
|
|
96
|
-
handler: async (buffer, target, _type, context) => {
|
|
97
|
-
const { default: renderWordDoc } = await import('./wordDoc.js');
|
|
98
|
-
return renderWordDoc(buffer, target, context);
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
rendererId: 'spreadsheet-openxml',
|
|
103
|
-
handler: async (buffer, target, type, context) => {
|
|
104
|
-
const { default: renderSpreadsheet } = await import('./spreadsheet.js');
|
|
105
|
-
return renderSpreadsheet(buffer, target, type, context);
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
rendererId: 'email',
|
|
110
|
-
handler: async (buffer, target, type, context) => {
|
|
111
|
-
const { default: renderEmail } = await import('./email.js');
|
|
112
|
-
return renderEmail(buffer, target, type, context);
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
rendererId: 'eda',
|
|
117
|
-
handler: async (buffer, target, type, context) => {
|
|
118
|
-
const { default: renderEda } = await import('./eda.js');
|
|
119
|
-
return renderEda(buffer, target, type, context);
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
rendererId: 'cad',
|
|
124
|
-
handler: async (buffer, target, type, context) => {
|
|
125
|
-
const { default: renderCad } = await import('./cad.js');
|
|
126
|
-
return renderCad(buffer, target, type, context);
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
rendererId: 'typst',
|
|
131
|
-
handler: async (buffer, target, type, context) => {
|
|
132
|
-
const { default: renderTypst } = await import('./typst.js');
|
|
133
|
-
return renderTypst(buffer, target, type, context);
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
rendererId: 'office-presentation',
|
|
138
|
-
handler: async (buffer, target, type, context) => {
|
|
139
|
-
const { default: renderPptx } = await import('./pptx.js');
|
|
140
|
-
return renderPptx(buffer, target, type, context);
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
rendererId: 'epub',
|
|
145
|
-
handler: async (buffer, target) => {
|
|
146
|
-
const { default: renderEpub } = await import('./epub.js');
|
|
147
|
-
return renderEpub(buffer, target);
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
rendererId: 'model',
|
|
152
|
-
handler: async (buffer, target, type, context) => {
|
|
153
|
-
const { default: renderModel } = await import('./model.js');
|
|
154
|
-
return renderModel(buffer, target, type, context);
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
rendererId: 'drawing',
|
|
159
|
-
handler: async (buffer, target, type, context) => {
|
|
160
|
-
const { default: renderDrawing } = await import('./drawing.js');
|
|
161
|
-
return renderDrawing(buffer, target, type, context);
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
rendererId: 'data-asset',
|
|
166
|
-
handler: async (buffer, target, type, context) => {
|
|
167
|
-
const { default: renderDataAsset } = await import('./data.js');
|
|
168
|
-
return renderDataAsset(buffer, target, type, context);
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
rendererId: 'archive',
|
|
173
|
-
handler: async (buffer, target, type, context) => {
|
|
174
|
-
const { default: renderArchive } = await import('./archive.js');
|
|
175
|
-
return renderArchive(buffer, target, type, context);
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
24
|
];
|
|
25
|
+
export const CORE_LITE_RENDERER_IDS = [
|
|
26
|
+
'image',
|
|
27
|
+
];
|
|
28
|
+
export const coreLiteBrowserRendererHandlers = coreBrowserRendererHandlers.filter(handler => CORE_LITE_RENDERER_IDS.includes(handler.rendererId));
|
|
29
|
+
export const coreLiteRendererDefinitions = DEFAULT_RENDERER_DEFINITIONS.filter(definition => CORE_LITE_RENDERER_IDS.includes(definition.id));
|
|
30
|
+
const resolveCoreRendererDefinitions = (preset) => {
|
|
31
|
+
if (preset === 'none') {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
if (preset === 'lite') {
|
|
35
|
+
return coreLiteRendererDefinitions;
|
|
36
|
+
}
|
|
37
|
+
return DEFAULT_RENDERER_DEFINITIONS;
|
|
38
|
+
};
|
|
39
|
+
const resolveCoreRendererHandlers = (preset) => {
|
|
40
|
+
if (preset === 'none') {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
if (preset === 'lite') {
|
|
44
|
+
return coreLiteBrowserRendererHandlers;
|
|
45
|
+
}
|
|
46
|
+
return coreBrowserRendererHandlers;
|
|
47
|
+
};
|
|
179
48
|
const renderUnsupported = async (_buffer, target, type) => {
|
|
180
49
|
const state = createFileViewerUnsupportedState(type);
|
|
181
50
|
const wrapper = document.createElement('div');
|
|
@@ -192,10 +61,11 @@ const renderUnsupported = async (_buffer, target, type) => {
|
|
|
192
61
|
target.replaceChildren(wrapper);
|
|
193
62
|
return createWrapper(target);
|
|
194
63
|
};
|
|
195
|
-
export const createFileViewerCoreRendererRegistry = () => {
|
|
64
|
+
export const createFileViewerCoreRendererRegistry = (options = {}) => {
|
|
65
|
+
const preset = options.builtinRenderers || 'all';
|
|
196
66
|
const bridge = createFileRenderHandlerRegistry({
|
|
197
|
-
definitions:
|
|
198
|
-
handlers:
|
|
67
|
+
definitions: resolveCoreRendererDefinitions(preset),
|
|
68
|
+
handlers: resolveCoreRendererHandlers(preset),
|
|
199
69
|
});
|
|
200
70
|
return {
|
|
201
71
|
...bridge,
|
|
@@ -10,11 +10,13 @@ import { createFileViewerZoomController } from '../features/document/zoom.js';
|
|
|
10
10
|
import { DEFAULT_FILE_VIEWER_DOWNLOAD_FILENAME, DEFAULT_FILE_VIEWER_EXPORT_FILENAME, DEFAULT_FILE_VIEWER_PREVIEW_TITLE, createFileViewerOriginalSourceStateFromNormalizedSource, executeFileViewerDownloadOperation, executeFileViewerExportHtmlOperation, executeFileViewerPrintOperation, resolveFileViewerDisplayFilename, resolveFileViewerOperationFilename, } from './operations.js';
|
|
11
11
|
import { getRendererAvailability, createUnsupportedAvailability } from '../registry/capabilities.js';
|
|
12
12
|
import { buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, runFileViewerBeforeOperation, runFileViewerLifecycleHook, } from '../lifecycle/operations.js';
|
|
13
|
-
import { createRendererRegistry } from '../registry/registry.js';
|
|
14
|
-
import { applyFileViewerRenderSurfaceState, createFileViewerRenderSurfaceState, } from '../rendering/handler.js';
|
|
13
|
+
import { collectFileViewerRendererPlugins, createRendererRegistry, installFileViewerRendererPlugins, } from '../registry/registry.js';
|
|
14
|
+
import { createFileRenderHandlerLoader, applyFileViewerRenderSurfaceState, createFileViewerRenderSurfaceState, } from '../rendering/handler.js';
|
|
15
|
+
import { createFileViewerCoreRendererRegistry } from '../renderers/index.js';
|
|
15
16
|
import { createFileViewerRequestScope } from '../source/loading.js';
|
|
16
17
|
import { normalizeSource } from '../source/index.js';
|
|
17
18
|
import { buildFileViewerWatermarkInlineStyle } from '../features/watermark.js';
|
|
19
|
+
import { createFileViewerUnsupportedState } from './state.js';
|
|
18
20
|
const emitLifecycle = async (options, onEvent, phase, source, version, startedAt, reason) => {
|
|
19
21
|
const now = Date.now();
|
|
20
22
|
const context = buildFileViewerLifecycleContextFromNormalizedSource({
|
|
@@ -30,9 +32,52 @@ const emitLifecycle = async (options, onEvent, phase, source, version, startedAt
|
|
|
30
32
|
});
|
|
31
33
|
onEvent === null || onEvent === void 0 ? void 0 : onEvent({ type: phase, payload: context });
|
|
32
34
|
};
|
|
35
|
+
const createBaseRendererRegistry = (createOptions, options) => {
|
|
36
|
+
if (options.rendererMode === 'replace') {
|
|
37
|
+
return createRendererRegistry([]);
|
|
38
|
+
}
|
|
39
|
+
if (createOptions.registry) {
|
|
40
|
+
return createOptions.registry;
|
|
41
|
+
}
|
|
42
|
+
return createFileViewerCoreRendererRegistry({
|
|
43
|
+
builtinRenderers: options.builtinRenderers,
|
|
44
|
+
}).registry;
|
|
45
|
+
};
|
|
46
|
+
const renderMissingRendererState = (container, type) => {
|
|
47
|
+
const documentRef = container.ownerDocument;
|
|
48
|
+
const state = createFileViewerUnsupportedState(type);
|
|
49
|
+
const wrapper = documentRef.createElement('div');
|
|
50
|
+
wrapper.className = 'file-viewer-missing-renderer';
|
|
51
|
+
wrapper.style.cssText = [
|
|
52
|
+
'display:flex',
|
|
53
|
+
'min-height:260px',
|
|
54
|
+
'height:100%',
|
|
55
|
+
'align-items:center',
|
|
56
|
+
'justify-content:center',
|
|
57
|
+
'padding:32px',
|
|
58
|
+
'box-sizing:border-box',
|
|
59
|
+
'text-align:center',
|
|
60
|
+
'color:#64748b',
|
|
61
|
+
'font:14px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif',
|
|
62
|
+
].join(';');
|
|
63
|
+
const content = documentRef.createElement('div');
|
|
64
|
+
const title = documentRef.createElement('strong');
|
|
65
|
+
title.textContent = state.message;
|
|
66
|
+
title.style.cssText = 'display:block;margin-bottom:8px;color:#172033;font-size:16px;';
|
|
67
|
+
const description = documentRef.createElement('p');
|
|
68
|
+
description.textContent = state.description ||
|
|
69
|
+
'当前内置 renderer 配置没有加载该格式。请安装并传入对应 @file-viewer/renderer-* 包,或使用 @file-viewer/preset-all。';
|
|
70
|
+
description.style.cssText = 'max-width:520px;margin:0;';
|
|
71
|
+
content.append(title, description);
|
|
72
|
+
wrapper.append(content);
|
|
73
|
+
container.replaceChildren(wrapper);
|
|
74
|
+
};
|
|
33
75
|
export const createViewer = (container, createOptions = {}) => {
|
|
34
|
-
const registry = createOptions.registry || createRendererRegistry();
|
|
35
76
|
let options = createOptions.options || {};
|
|
77
|
+
let registry = createBaseRendererRegistry(createOptions, options);
|
|
78
|
+
let installedRendererInput = undefined;
|
|
79
|
+
let installedRendererMode = options.rendererMode || 'extend';
|
|
80
|
+
let installedBuiltinRenderers = options.builtinRenderers || 'all';
|
|
36
81
|
let currentSource = null;
|
|
37
82
|
const renderSurfaceState = createFileViewerRenderSurfaceState();
|
|
38
83
|
const requestScope = createFileViewerRequestScope();
|
|
@@ -40,6 +85,42 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
40
85
|
anchors: { value: [] },
|
|
41
86
|
state: createEmptyFileViewerSearchState(),
|
|
42
87
|
};
|
|
88
|
+
const ensureRendererPluginsInstalled = async () => {
|
|
89
|
+
const nextMode = options.rendererMode || 'extend';
|
|
90
|
+
const nextRendererInput = options.renderers;
|
|
91
|
+
const nextBuiltinRenderers = options.builtinRenderers || 'all';
|
|
92
|
+
if (nextMode === installedRendererMode &&
|
|
93
|
+
nextRendererInput === installedRendererInput &&
|
|
94
|
+
nextBuiltinRenderers === installedBuiltinRenderers) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
registry = createBaseRendererRegistry(createOptions, options);
|
|
98
|
+
installedRendererMode = nextMode;
|
|
99
|
+
installedRendererInput = nextRendererInput;
|
|
100
|
+
installedBuiltinRenderers = nextBuiltinRenderers;
|
|
101
|
+
const plugins = collectFileViewerRendererPlugins(nextRendererInput);
|
|
102
|
+
if (!plugins.length) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const registerHandler = (registration) => {
|
|
106
|
+
const definition = registry.getById(registration.rendererId);
|
|
107
|
+
if (!definition) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
registry.register({
|
|
111
|
+
...definition,
|
|
112
|
+
load: createFileRenderHandlerLoader({
|
|
113
|
+
handler: registration.handler,
|
|
114
|
+
getTarget: context => context.surface.container,
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
await installFileViewerRendererPlugins({
|
|
119
|
+
registry,
|
|
120
|
+
plugins,
|
|
121
|
+
registerHandler,
|
|
122
|
+
});
|
|
123
|
+
};
|
|
43
124
|
const buildCurrentLifecycleContext = () => {
|
|
44
125
|
const source = currentSource || normalizeSource({});
|
|
45
126
|
return buildFileViewerLifecycleContextFromNormalizedSource({
|
|
@@ -139,6 +220,7 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
139
220
|
container,
|
|
140
221
|
async load(source) {
|
|
141
222
|
await destroyCurrent('replace');
|
|
223
|
+
await ensureRendererPluginsInstalled();
|
|
142
224
|
const normalized = normalizeSource(source);
|
|
143
225
|
currentSource = normalized;
|
|
144
226
|
const version = requestScope.requestController.createVersion();
|
|
@@ -146,6 +228,7 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
146
228
|
const startedAt = Date.now();
|
|
147
229
|
await emitLifecycle(options, createOptions.onEvent, 'load-start', normalized, version, startedAt);
|
|
148
230
|
if (!(renderer === null || renderer === void 0 ? void 0 : renderer.load)) {
|
|
231
|
+
renderMissingRendererState(container, normalized.extension);
|
|
149
232
|
applyFileViewerRenderSurfaceState(renderSurfaceState, { session: null });
|
|
150
233
|
emitOperationAvailabilityChange();
|
|
151
234
|
emitZoomChange();
|
package/package.json
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@file-viewer/core",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
|
-
"description": "Framework-neutral TypeScript core for Flyfish File Viewer",
|
|
6
|
+
"description": "Framework-neutral modular TypeScript core for Flyfish File Viewer renderer orchestration, lifecycle APIs, search, zoom, print, and export",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"file-viewer",
|
|
9
9
|
"document-preview",
|
|
10
10
|
"typescript",
|
|
11
|
-
"core"
|
|
11
|
+
"core",
|
|
12
|
+
"document-viewer",
|
|
13
|
+
"file-preview",
|
|
14
|
+
"self-hosted",
|
|
15
|
+
"browser",
|
|
16
|
+
"wasm",
|
|
17
|
+
"office-viewer",
|
|
18
|
+
"pdf-viewer"
|
|
12
19
|
],
|
|
13
20
|
"publishConfig": {
|
|
14
21
|
"access": "public",
|
|
@@ -23,6 +30,13 @@
|
|
|
23
30
|
"url": "git+https://github.com/flyfish-dev/file-viewer-core.git",
|
|
24
31
|
"directory": "packages/core"
|
|
25
32
|
},
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/flyfish-dev/file-viewer-core/issues"
|
|
35
|
+
},
|
|
36
|
+
"funding": {
|
|
37
|
+
"type": "individual",
|
|
38
|
+
"url": "https://dev.flyfish.group/shop"
|
|
39
|
+
},
|
|
26
40
|
"homepage": "https://doc.file-viewer.app/",
|
|
27
41
|
"main": "./dist/index.js",
|
|
28
42
|
"module": "./dist/index.js",
|
|
@@ -57,48 +71,7 @@
|
|
|
57
71
|
"README.en.md",
|
|
58
72
|
"LICENSE"
|
|
59
73
|
],
|
|
60
|
-
"dependencies": {
|
|
61
|
-
"@excalidraw/excalidraw": "^0.18.1",
|
|
62
|
-
"@file-viewer/docx": "^0.3.12",
|
|
63
|
-
"@file-viewer/pptx": "^2.0.11",
|
|
64
|
-
"@flyfish-dev/cad-viewer": "^0.6.4",
|
|
65
|
-
"@kenjiuno/msgreader": "^1.28.0",
|
|
66
|
-
"@myriaddreamin/typst-ts-renderer": "0.7.0",
|
|
67
|
-
"@myriaddreamin/typst-ts-web-compiler": "0.7.0",
|
|
68
|
-
"@myriaddreamin/typst.ts": "0.7.0",
|
|
69
|
-
"@tmcw/togeojson": "^7.1.2",
|
|
70
|
-
"@tonejs/midi": "^2.0.28",
|
|
71
|
-
"@xmldom/xmldom": "^0.9.10",
|
|
72
|
-
"ag-psd": "^30.1.1",
|
|
73
|
-
"avsc": "^5.7.9",
|
|
74
|
-
"cfb": "^1.2.2",
|
|
75
|
-
"e-virt-table": "^1.3.26",
|
|
76
|
-
"epubjs": "^0.3.93",
|
|
77
|
-
"heic2any": "^0.0.4",
|
|
78
|
-
"highlight.js": "^11.11.1",
|
|
79
|
-
"hls.js": "^1.6.16",
|
|
80
|
-
"hyparquet": "^1.26.0",
|
|
81
|
-
"jszip": "^3.10.1",
|
|
82
|
-
"libarchive.js": "^2.0.2",
|
|
83
|
-
"linkedom": "^0.18.12",
|
|
84
|
-
"marked": "^18.0.5",
|
|
85
|
-
"msdoc-viewer": "^0.2.0",
|
|
86
|
-
"ofd-xml-parser": "^0.0.6",
|
|
87
|
-
"pako": "^2.1.0",
|
|
88
|
-
"pdfjs-dist": "^6.0.227",
|
|
89
|
-
"postal-mime": "^2.7.4",
|
|
90
|
-
"roughjs": "^4.6.6",
|
|
91
|
-
"rtf.js": "^3.0.9",
|
|
92
|
-
"shpjs": "^6.2.0",
|
|
93
|
-
"sql.js": "^1.14.1",
|
|
94
|
-
"styled-exceljs": "0.21.1",
|
|
95
|
-
"three": "^0.184.0",
|
|
96
|
-
"tinycolor2": "^1.6.0"
|
|
97
|
-
},
|
|
98
74
|
"devDependencies": {
|
|
99
|
-
"@types/pako": "^2.0.4",
|
|
100
|
-
"@types/three": "^0.184.1",
|
|
101
|
-
"@types/tinycolor2": "^1.4.6",
|
|
102
75
|
"typescript": "^6.0.3"
|
|
103
76
|
},
|
|
104
77
|
"license": "Apache-2.0",
|