@file-viewer/core 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options.d.ts +1 -1
- package/dist/config/options.js +1 -1
- package/dist/contracts/types.d.ts +55 -9
- package/dist/headless.d.ts +3 -1
- package/dist/headless.js +1 -0
- package/dist/i18n/messages.d.ts +19 -0
- package/dist/i18n/messages.js +749 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +2 -1
- package/dist/lifecycle/facade.js +3 -0
- package/dist/lifecycle/operations.d.ts +6 -3
- package/dist/lifecycle/operations.js +15 -6
- package/dist/registry/registry.d.ts +21 -1
- package/dist/registry/registry.js +49 -0
- package/dist/source/loading.d.ts +16 -8
- package/dist/source/loading.js +29 -16
- package/dist/viewer/createViewer.js +18 -7
- package/dist/viewer/loading.d.ts +6 -7
- package/dist/viewer/loading.js +83 -7
- package/dist/viewer/operations.d.ts +9 -5
- package/dist/viewer/operations.js +31 -13
- package/dist/viewer/state.d.ts +11 -5
- package/dist/viewer/state.js +39 -19
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -13,9 +13,11 @@ export { buildFileViewerRenderedHtmlDocument, buildExportHtmlDocument, collectDo
|
|
|
13
13
|
export { applyPrintPageSize, buildPrintPageStyle, formatCssPixels, getElementPrintPageSize, } from './output/printLayout';
|
|
14
14
|
export type { ApplyPrintPageSizeOptions, BuildPrintPageStyleOptions, PrintPageSize, } from './output/printLayout';
|
|
15
15
|
export { DEFAULT_FILE_VIEWER_DOWNLOAD_FILENAME, DEFAULT_FILE_VIEWER_EXPORT_FILENAME, DEFAULT_FILE_VIEWER_PREVIEW_TITLE, FILE_VIEWER_OPERATION_ACTION_ERROR_PREFIXES, createFileViewerOperationActionHandlers, createFileViewerOriginalSourceState, createFileViewerOriginalSourceStateFromNormalizedSource, createFileViewerPublicOperationActionHandlers, executeFileViewerDownloadOperation, executeFileViewerExportHtmlOperation, executeFileViewerPrintOperation, hasFileViewerOriginalSource, resolveFileViewerDisplayFilename, resolveFileViewerOperationActionErrorMessage, resolveFileViewerOperationFilename, resolveFileViewerOriginalFilename, } from './viewer/operations';
|
|
16
|
+
export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages';
|
|
17
|
+
export type { FileViewerI18nInput, FileViewerResolvedLocale, ResolveFileViewerI18nInput, } from './i18n/messages';
|
|
16
18
|
export type { CreateFileViewerOperationActionHandlersInput, FileViewerOperationActionErrorFormatter, FileViewerFileOperationType, FileViewerOperationActionErrorContext, FileViewerOperationActionErrorPrefixes, FileViewerOperationActionHandlers, FileViewerPublicOperationActionHandlers, ResolveFileViewerOperationActionErrorMessageInput, } from './viewer/operations';
|
|
17
|
-
export { clearFileViewerAutoRendererPresets, collectFileViewerRendererPlugins, createRendererRegistry, getFileViewerAutoRendererPresetVersion, installFileViewerRendererPlugins, listFileViewerAutoRendererPresets, registerFileViewerAutoRendererPreset, unregisterFileViewerAutoRendererPreset, } from './registry/registry';
|
|
18
|
-
export type { RegisterFileViewerAutoRendererPresetOptions, } from './registry/registry';
|
|
19
|
+
export { clearFileViewerAutoRendererPresets, collectFileViewerRendererPlugins, createRendererRegistry, findFileViewerAutoRendererPreset, getFileViewerAutoRendererPresetVersion, hasFileViewerRendererPresetName, installFileViewerRendererPlugins, listFileViewerAutoRendererPresetEntries, listFileViewerAutoRendererPresets, registerFileViewerAutoRendererPreset, resolveFileViewerRendererPresetInputs, unregisterFileViewerAutoRendererPreset, } from './registry/registry';
|
|
20
|
+
export type { FileViewerAutoRendererPresetEntry, RegisterFileViewerAutoRendererPresetOptions, } from './registry/registry';
|
|
19
21
|
export { CORE_LITE_RENDERER_IDS, coreBrowserRendererHandlers, coreLiteBrowserRendererHandlers, coreLiteRendererDefinitions, createFileViewerCoreRendererRegistry, fileViewerCoreRendererDispatcher, fileViewerCoreRendererRegistry, fileViewerCoreRendererRegistryBridge, missingFileViewerCoreRendererHandlers, } from './renderers/index';
|
|
20
22
|
export type { CreateFileViewerCoreRendererRegistryOptions, } from './renderers/index';
|
|
21
23
|
export declare const renderFileViewerAudio: (buffer: ArrayBuffer, target: HTMLDivElement, type?: string) => Promise<FileViewerRenderedInstance>;
|
|
@@ -79,4 +81,4 @@ export type { CreateFileViewerZoomControllerOptions, FileViewerZoomOperation, }
|
|
|
79
81
|
export type { CreateViewerOptions } from './viewer/createViewer';
|
|
80
82
|
export type { BuildExportHtmlDocumentOptions, BuildFileViewerRenderedHtmlDocumentOptions, } from './output/export';
|
|
81
83
|
export type { CreateFileViewerWorkerControllerOptions, FileViewerWorkerContext, FileViewerWorkerController, FileViewerWorkerErrorHook, FileViewerWorkerEventHandler, FileViewerWorkerFactory, FileViewerWorkerMessageHook, WorkerProvider, WorkerRef, } from './platform/worker';
|
|
82
|
-
export type { FileViewerAiOptions, FileViewerArchiveOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderedInstance, FileViewerRendererMode, FileViewerRendererPluginAssetKind, FileViewerRendererPluginAssetManifest, FileViewerRendererPluginAssetEntry, FileViewerRenderStateKind, FileViewerRendererCategory, FileViewerRendererHandlerRegistration, FileViewerRendererInstallContext, FileViewerRendererPlugin, FileViewerRendererPluginInput, FileViewerRendererPreset, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerTypstOptions, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RendererCapability, RendererDefinition, RendererPlugin, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession, RenderSurface, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
|
|
84
|
+
export type { FileViewerAiOptions, FileViewerArchiveOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderedInstance, FileViewerRendererMode, FileViewerRendererPluginAssetKind, FileViewerRendererPluginAssetManifest, FileViewerRendererPluginAssetEntry, FileViewerRenderStateKind, FileViewerRendererCategory, FileViewerRendererHandlerRegistration, FileViewerRendererInstallContext, FileViewerRendererPlugin, FileViewerRendererPluginInput, FileViewerRendererPresetInput, FileViewerRendererPresetName, FileViewerRendererPreset, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerTypstOptions, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RendererCapability, RendererDefinition, RendererPlugin, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession, RenderSurface, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,8 @@ export { DEFAULT_FILE_VIEWER_ANCHOR_EXCLUDE_SELECTOR, DEFAULT_FILE_VIEWER_ANCHOR
|
|
|
8
8
|
export { buildFileViewerRenderedHtmlDocument, buildExportHtmlDocument, collectDocumentStyles, prepareFileViewerRenderedContentForSnapshot, replaceFileViewerCanvasWithImages, resolveFileViewerPrintStyle, triggerFileViewerBlobDownload, triggerFileViewerUrlDownload, waitForFileViewerImages, waitForFileViewerNextPaint, waitForFileViewerPrintWindowReady, } from './output/export.js';
|
|
9
9
|
export { applyPrintPageSize, buildPrintPageStyle, formatCssPixels, getElementPrintPageSize, } from './output/printLayout.js';
|
|
10
10
|
export { DEFAULT_FILE_VIEWER_DOWNLOAD_FILENAME, DEFAULT_FILE_VIEWER_EXPORT_FILENAME, DEFAULT_FILE_VIEWER_PREVIEW_TITLE, FILE_VIEWER_OPERATION_ACTION_ERROR_PREFIXES, createFileViewerOperationActionHandlers, createFileViewerOriginalSourceState, createFileViewerOriginalSourceStateFromNormalizedSource, createFileViewerPublicOperationActionHandlers, executeFileViewerDownloadOperation, executeFileViewerExportHtmlOperation, executeFileViewerPrintOperation, hasFileViewerOriginalSource, resolveFileViewerDisplayFilename, resolveFileViewerOperationActionErrorMessage, resolveFileViewerOperationFilename, resolveFileViewerOriginalFilename, } from './viewer/operations.js';
|
|
11
|
-
export {
|
|
11
|
+
export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages.js';
|
|
12
|
+
export { clearFileViewerAutoRendererPresets, collectFileViewerRendererPlugins, createRendererRegistry, findFileViewerAutoRendererPreset, getFileViewerAutoRendererPresetVersion, hasFileViewerRendererPresetName, installFileViewerRendererPlugins, listFileViewerAutoRendererPresetEntries, listFileViewerAutoRendererPresets, registerFileViewerAutoRendererPreset, resolveFileViewerRendererPresetInputs, unregisterFileViewerAutoRendererPreset, } from './registry/registry.js';
|
|
12
13
|
export { CORE_LITE_RENDERER_IDS, coreBrowserRendererHandlers, coreLiteBrowserRendererHandlers, coreLiteRendererDefinitions, createFileViewerCoreRendererRegistry, fileViewerCoreRendererDispatcher, fileViewerCoreRendererRegistry, fileViewerCoreRendererRegistryBridge, missingFileViewerCoreRendererHandlers, } from './renderers/index.js';
|
|
13
14
|
export const renderFileViewerAudio = async (buffer, target, type) => {
|
|
14
15
|
void buffer;
|
package/dist/lifecycle/facade.js
CHANGED
|
@@ -16,6 +16,7 @@ export const createFileViewerLifecycleFacade = ({ getOptions, getFilename, getBu
|
|
|
16
16
|
onOperationErrorMessage === null || onOperationErrorMessage === void 0 ? void 0 : onOperationErrorMessage(resolveFileViewerBeforeOperationErrorMessage({
|
|
17
17
|
error,
|
|
18
18
|
formatErrorMessage,
|
|
19
|
+
i18n: getOptions(),
|
|
19
20
|
}), context);
|
|
20
21
|
},
|
|
21
22
|
});
|
|
@@ -29,6 +30,7 @@ export const createFileViewerLifecycleFacade = ({ getOptions, getFilename, getBu
|
|
|
29
30
|
currentFile: getCurrentFile(),
|
|
30
31
|
fallbackFile: getFallbackFile(),
|
|
31
32
|
fallbackUrl: getFallbackUrl(),
|
|
33
|
+
i18n: getOptions(),
|
|
32
34
|
});
|
|
33
35
|
};
|
|
34
36
|
return {
|
|
@@ -48,6 +50,7 @@ export const createFileViewerLifecycleFacade = ({ getOptions, getFilename, getBu
|
|
|
48
50
|
sourceUrl,
|
|
49
51
|
filename: getFilename(),
|
|
50
52
|
bufferSize: getBufferSize(),
|
|
53
|
+
i18n: getOptions(),
|
|
51
54
|
});
|
|
52
55
|
},
|
|
53
56
|
buildRenderCompleteState({ version, source, file, sourceUrl, }) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type FileViewerI18nInput } from '../i18n/messages';
|
|
1
2
|
import type { FileViewerErrorMessageFormatter } from '../viewer/state';
|
|
2
3
|
import { type FileViewerOriginalSourceState } from '../viewer/operations';
|
|
3
4
|
import type { FileRenderExportAdapter, FileViewerBeforeOperation, FileViewerFileRef, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerSourceKind, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerPublicApi, FileViewerZoomState, NormalizedFileViewerSource } from '../contracts/types';
|
|
@@ -95,6 +96,7 @@ export interface ResolveFileViewerBeforeOperationErrorMessageInput {
|
|
|
95
96
|
error: unknown;
|
|
96
97
|
formatErrorMessage: FileViewerErrorMessageFormatter;
|
|
97
98
|
prefix?: string;
|
|
99
|
+
i18n?: FileViewerI18nInput;
|
|
98
100
|
}
|
|
99
101
|
export interface ResolveFileViewerLifecycleHookErrorMessageInput {
|
|
100
102
|
context: Pick<FileViewerLifecycleContext, 'phase'>;
|
|
@@ -220,6 +222,7 @@ export interface BuildFileViewerOperationContextFromLifecycleStateInput {
|
|
|
220
222
|
fallbackUrl?: string | null;
|
|
221
223
|
timestamp?: number;
|
|
222
224
|
lifecycleTimestamp?: number;
|
|
225
|
+
i18n?: FileViewerI18nInput;
|
|
223
226
|
}
|
|
224
227
|
export interface RunFileViewerActiveUnloadStartInput {
|
|
225
228
|
lifecycleState: Pick<FileViewerLifecycleStateController, 'getActiveDocumentContext' | 'buildActiveUnloadContext'>;
|
|
@@ -241,10 +244,10 @@ export declare const buildFileViewerLifecycleContext: <Source extends string = F
|
|
|
241
244
|
export declare const buildFileViewerLifecycleContextFromNormalizedSource: ({ phase, source, version, startedAt, timestamp, reason, }: BuildFileViewerLifecycleContextFromNormalizedSourceInput) => FileViewerLifecycleContext;
|
|
242
245
|
export declare const resolveFileViewerLifecycleFallbackSource: ({ file, url, }?: ResolveFileViewerLifecycleFallbackSourceInput) => ResolvedFileViewerLifecycleFallbackSource;
|
|
243
246
|
export declare const createFileViewerLifecycleStateController: () => FileViewerLifecycleStateController;
|
|
244
|
-
export declare const buildFileViewerOperationContext: <Source extends string = FileViewerSourceKind>(operation: FileViewerOperationType, lifecycleContext: BuiltFileViewerLifecycleContext<Source>, timestamp?: number) => BuiltFileViewerOperationContext<Source>;
|
|
245
|
-
export declare const buildFileViewerOperationContextFromLifecycleState: ({ operation, lifecycleState, version, filename, bufferSize, currentFile, fallbackFile, fallbackUrl, timestamp, lifecycleTimestamp, }: BuildFileViewerOperationContextFromLifecycleStateInput) => FileViewerOperationContext;
|
|
247
|
+
export declare const buildFileViewerOperationContext: <Source extends string = FileViewerSourceKind>(operation: FileViewerOperationType, lifecycleContext: BuiltFileViewerLifecycleContext<Source>, timestamp?: number, i18n?: FileViewerI18nInput) => BuiltFileViewerOperationContext<Source>;
|
|
248
|
+
export declare const buildFileViewerOperationContextFromLifecycleState: ({ operation, lifecycleState, version, filename, bufferSize, currentFile, fallbackFile, fallbackUrl, timestamp, lifecycleTimestamp, i18n, }: BuildFileViewerOperationContextFromLifecycleStateInput) => FileViewerOperationContext;
|
|
246
249
|
export declare const emitFileViewerComponentLifecycleEvent: (emit: FileViewerLifecycleComponentEmit, context: FileViewerLifecycleContext) => void;
|
|
247
|
-
export declare const resolveFileViewerBeforeOperationErrorMessage: ({ error, formatErrorMessage, prefix, }: ResolveFileViewerBeforeOperationErrorMessageInput) => string;
|
|
250
|
+
export declare const resolveFileViewerBeforeOperationErrorMessage: ({ error, formatErrorMessage, prefix, i18n, }: ResolveFileViewerBeforeOperationErrorMessageInput) => string;
|
|
248
251
|
export declare const resolveFileViewerLifecycleHookErrorMessage: ({ context, prefix, }: ResolveFileViewerLifecycleHookErrorMessageInput) => string;
|
|
249
252
|
export declare const DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER: FileViewerLifecycleHookErrorLogger;
|
|
250
253
|
export declare const reportFileViewerLifecycleHookError: ({ error, context, onLogError, prefix, }: ReportFileViewerLifecycleHookErrorInput) => string;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// operation execution remains in `viewer/operations`.
|
|
6
6
|
import { resolvePrintAvailability } from '../registry/capabilities.js';
|
|
7
7
|
import { getExtension, normalizeFilename } from '../source/index.js';
|
|
8
|
+
import { translateFileViewerMessage, } from '../i18n/messages.js';
|
|
8
9
|
import { createFileViewerOriginalSourceState, hasFileViewerOriginalSource, } from '../viewer/operations.js';
|
|
9
10
|
export const FILE_VIEWER_LIFECYCLE_HOOKS = {
|
|
10
11
|
'load-start': 'onLoadStart',
|
|
@@ -105,16 +106,24 @@ export const createFileViewerLifecycleStateController = () => {
|
|
|
105
106
|
},
|
|
106
107
|
};
|
|
107
108
|
};
|
|
108
|
-
export const buildFileViewerOperationContext = (operation, lifecycleContext, timestamp = Date.now()) => {
|
|
109
|
+
export const buildFileViewerOperationContext = (operation, lifecycleContext, timestamp = Date.now(), i18n) => {
|
|
109
110
|
const { phase: _phase, ...context } = lifecycleContext;
|
|
111
|
+
const labelKey = {
|
|
112
|
+
download: 'operation.download',
|
|
113
|
+
print: 'operation.print',
|
|
114
|
+
'export-html': 'operation.exportHtml',
|
|
115
|
+
'zoom-in': 'operation.zoomIn',
|
|
116
|
+
'zoom-out': 'operation.zoomOut',
|
|
117
|
+
'zoom-reset': 'operation.zoomReset',
|
|
118
|
+
};
|
|
110
119
|
return {
|
|
111
120
|
...context,
|
|
112
121
|
operation,
|
|
113
|
-
label:
|
|
122
|
+
label: translateFileViewerMessage(i18n, labelKey[operation]),
|
|
114
123
|
timestamp,
|
|
115
124
|
};
|
|
116
125
|
};
|
|
117
|
-
export const buildFileViewerOperationContextFromLifecycleState = ({ operation, lifecycleState, version, filename, bufferSize, currentFile, fallbackFile, fallbackUrl, timestamp, lifecycleTimestamp, }) => {
|
|
126
|
+
export const buildFileViewerOperationContextFromLifecycleState = ({ operation, lifecycleState, version, filename, bufferSize, currentFile, fallbackFile, fallbackUrl, timestamp, lifecycleTimestamp, i18n, }) => {
|
|
118
127
|
const activeContext = lifecycleState.getActiveDocumentContext();
|
|
119
128
|
const fallbackSource = resolveFileViewerLifecycleFallbackSource({
|
|
120
129
|
file: fallbackFile,
|
|
@@ -131,7 +140,7 @@ export const buildFileViewerOperationContextFromLifecycleState = ({ operation, l
|
|
|
131
140
|
startedAt: lifecycleState.getLoadStartedAt(version),
|
|
132
141
|
timestamp: lifecycleTimestamp,
|
|
133
142
|
});
|
|
134
|
-
return buildFileViewerOperationContext(operation, baseContext, timestamp);
|
|
143
|
+
return buildFileViewerOperationContext(operation, baseContext, timestamp, i18n);
|
|
135
144
|
};
|
|
136
145
|
export const emitFileViewerComponentLifecycleEvent = (emit, context) => {
|
|
137
146
|
if (context.phase === 'load-start') {
|
|
@@ -148,8 +157,8 @@ export const emitFileViewerComponentLifecycleEvent = (emit, context) => {
|
|
|
148
157
|
}
|
|
149
158
|
emit('unload-complete', context);
|
|
150
159
|
};
|
|
151
|
-
export const resolveFileViewerBeforeOperationErrorMessage = ({ error, formatErrorMessage, prefix
|
|
152
|
-
return formatErrorMessage(prefix, error);
|
|
160
|
+
export const resolveFileViewerBeforeOperationErrorMessage = ({ error, formatErrorMessage, prefix, i18n, }) => {
|
|
161
|
+
return formatErrorMessage(prefix || translateFileViewerMessage(i18n, 'error.beforeOperation'), error);
|
|
153
162
|
};
|
|
154
163
|
export const resolveFileViewerLifecycleHookErrorMessage = ({ context, prefix = FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, }) => {
|
|
155
164
|
return `${prefix} ${context.phase} hook failed`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FileViewerRendererHandlerRegistration, FileViewerRendererPluginInput, FileViewerRendererPlugin, RendererDefinition, RendererRegistry } from '../contracts/types';
|
|
1
|
+
import type { FileViewerRendererHandlerRegistration, FileViewerRendererPluginInput, FileViewerRendererPlugin, FileViewerRendererPresetInput, FileViewerRendererPresetName, RendererDefinition, RendererRegistry } from '../contracts/types';
|
|
2
2
|
export interface RegisterFileViewerAutoRendererPresetOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Stable key used to replace an existing auto preset registration.
|
|
@@ -10,6 +10,11 @@ export interface RegisterFileViewerAutoRendererPresetOptions {
|
|
|
10
10
|
*/
|
|
11
11
|
packageName?: string;
|
|
12
12
|
}
|
|
13
|
+
export interface FileViewerAutoRendererPresetEntry<Handler = unknown> {
|
|
14
|
+
id: string;
|
|
15
|
+
packageName?: string;
|
|
16
|
+
input: FileViewerRendererPluginInput<Handler>;
|
|
17
|
+
}
|
|
13
18
|
export declare const createRendererRegistry: (initialDefinitions?: readonly RendererDefinition[]) => RendererRegistry;
|
|
14
19
|
export interface InstallFileViewerRendererPluginsOptions<Handler = unknown> {
|
|
15
20
|
registry: RendererRegistry;
|
|
@@ -21,5 +26,20 @@ export declare const registerFileViewerAutoRendererPreset: <Handler = unknown>(i
|
|
|
21
26
|
export declare const unregisterFileViewerAutoRendererPreset: (id: string) => boolean;
|
|
22
27
|
export declare const clearFileViewerAutoRendererPresets: () => void;
|
|
23
28
|
export declare const listFileViewerAutoRendererPresets: <Handler = unknown>() => FileViewerRendererPluginInput<Handler>[];
|
|
29
|
+
export declare const listFileViewerAutoRendererPresetEntries: <Handler = unknown>() => {
|
|
30
|
+
input: FileViewerRendererPluginInput<Handler>;
|
|
31
|
+
id: string;
|
|
32
|
+
packageName?: string;
|
|
33
|
+
}[];
|
|
34
|
+
export declare const findFileViewerAutoRendererPreset: <Handler = unknown>(id: FileViewerRendererPresetName | string) => FileViewerRendererPluginInput<Handler> | undefined;
|
|
24
35
|
export declare const getFileViewerAutoRendererPresetVersion: () => number;
|
|
36
|
+
export declare const hasFileViewerRendererPresetName: (input?: FileViewerRendererPresetInput | null) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Normalizes `options.preset` / `options.presets` into renderer plugin inputs.
|
|
39
|
+
*
|
|
40
|
+
* Passing a preset object is the most portable integration style because it
|
|
41
|
+
* works in any bundler. String selectors intentionally only resolve presets
|
|
42
|
+
* that are already registered by a side-effect import or by build tooling.
|
|
43
|
+
*/
|
|
44
|
+
export declare const resolveFileViewerRendererPresetInputs: <Handler = unknown>(input?: FileViewerRendererPresetInput<Handler> | null) => FileViewerRendererPluginInput<Handler>[];
|
|
25
45
|
export declare const installFileViewerRendererPlugins: <Handler = unknown>({ registry, plugins, registerHandler, }: InstallFileViewerRendererPluginsOptions<Handler>) => Promise<RendererRegistry>;
|
|
@@ -136,7 +136,56 @@ export const clearFileViewerAutoRendererPresets = () => {
|
|
|
136
136
|
bucket.version += 1;
|
|
137
137
|
};
|
|
138
138
|
export const listFileViewerAutoRendererPresets = () => Array.from(getAutoRendererBucket().presets.values()).map(entry => entry.input);
|
|
139
|
+
export const listFileViewerAutoRendererPresetEntries = () => Array.from(getAutoRendererBucket().presets.values()).map(entry => ({
|
|
140
|
+
...entry,
|
|
141
|
+
input: entry.input,
|
|
142
|
+
}));
|
|
143
|
+
export const findFileViewerAutoRendererPreset = (id) => {
|
|
144
|
+
var _a;
|
|
145
|
+
const bucket = getAutoRendererBucket();
|
|
146
|
+
const direct = bucket.presets.get(id);
|
|
147
|
+
if (direct) {
|
|
148
|
+
return direct.input;
|
|
149
|
+
}
|
|
150
|
+
const packageSuffix = id.startsWith('@file-viewer/preset-')
|
|
151
|
+
? id
|
|
152
|
+
: `@file-viewer/preset-${id}`;
|
|
153
|
+
return (_a = Array.from(bucket.presets.values()).find(entry => entry.packageName === packageSuffix ||
|
|
154
|
+
entry.id === packageSuffix)) === null || _a === void 0 ? void 0 : _a.input;
|
|
155
|
+
};
|
|
139
156
|
export const getFileViewerAutoRendererPresetVersion = () => getAutoRendererBucket().version;
|
|
157
|
+
export const hasFileViewerRendererPresetName = (input) => {
|
|
158
|
+
if (!input) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
if (typeof input === 'string') {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
if (Array.isArray(input)) {
|
|
165
|
+
return input.some(item => hasFileViewerRendererPresetName(item));
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Normalizes `options.preset` / `options.presets` into renderer plugin inputs.
|
|
171
|
+
*
|
|
172
|
+
* Passing a preset object is the most portable integration style because it
|
|
173
|
+
* works in any bundler. String selectors intentionally only resolve presets
|
|
174
|
+
* that are already registered by a side-effect import or by build tooling.
|
|
175
|
+
*/
|
|
176
|
+
export const resolveFileViewerRendererPresetInputs = (input) => {
|
|
177
|
+
if (!input) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
if (typeof input === 'string') {
|
|
181
|
+
const preset = findFileViewerAutoRendererPreset(input);
|
|
182
|
+
return preset ? [preset] : [];
|
|
183
|
+
}
|
|
184
|
+
if (Array.isArray(input)) {
|
|
185
|
+
return input.flatMap(item => resolveFileViewerRendererPresetInputs(item));
|
|
186
|
+
}
|
|
187
|
+
return [input];
|
|
188
|
+
};
|
|
140
189
|
export const installFileViewerRendererPlugins = async ({ registry, plugins, registerHandler, }) => {
|
|
141
190
|
var _a, _b, _c;
|
|
142
191
|
for (const plugin of plugins) {
|
package/dist/source/loading.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FileViewerFileRef, FileViewerLifecycleContext, FileViewerPdfOptions } from '../contracts/types';
|
|
2
2
|
import { type FileViewerLifecycleStateController } from '../lifecycle/operations';
|
|
3
3
|
import { type FileViewerErrorMessageFormatter } from '../viewer/state';
|
|
4
|
+
import type { FileViewerI18nInput } from '../i18n/messages';
|
|
4
5
|
export declare const DEFAULT_PDF_RANGE_CHUNK_SIZE: number;
|
|
5
6
|
export declare const DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME = "preview.pdf";
|
|
6
7
|
export declare const FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE = "\u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25";
|
|
@@ -16,9 +17,11 @@ export interface ResolveFileViewerPreviewLoadErrorMessageInput {
|
|
|
16
17
|
error: unknown;
|
|
17
18
|
formatErrorMessage: FileViewerErrorMessageFormatter;
|
|
18
19
|
prefixes?: FileViewerPreviewLoadErrorPrefixes;
|
|
20
|
+
i18n?: FileViewerI18nInput;
|
|
19
21
|
}
|
|
20
22
|
export interface ResolveFileViewerMissingRemoteDataErrorMessageInput {
|
|
21
23
|
message?: string;
|
|
24
|
+
i18n?: FileViewerI18nInput;
|
|
22
25
|
}
|
|
23
26
|
export type FileViewerPreviewLoadErrorLogger = (error: unknown) => void;
|
|
24
27
|
export interface ReportFileViewerPreviewLoadErrorInput extends ResolveFileViewerPreviewLoadErrorMessageInput {
|
|
@@ -128,6 +131,7 @@ export interface CreateFileViewerLoadStartStateInput {
|
|
|
128
131
|
sourceUrl?: string | null;
|
|
129
132
|
bufferSize?: number;
|
|
130
133
|
loadingMessage?: string;
|
|
134
|
+
i18n?: FileViewerI18nInput;
|
|
131
135
|
timestamp?: number;
|
|
132
136
|
}
|
|
133
137
|
export interface CommitFileViewerLoadStartStateInput {
|
|
@@ -211,6 +215,7 @@ export interface RunFileViewerStreamingPdfPreviewInput<Session = unknown> {
|
|
|
211
215
|
sourceUrl?: string | null;
|
|
212
216
|
}) => FileViewerRenderCompleteState;
|
|
213
217
|
loadingMessage?: string;
|
|
218
|
+
i18n?: FileViewerI18nInput;
|
|
214
219
|
onStartLoading?: (message: string) => void;
|
|
215
220
|
onSession?: (session: Session | null) => void;
|
|
216
221
|
onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
|
|
@@ -289,8 +294,8 @@ export interface FileViewerRemoteFileDownloadInput {
|
|
|
289
294
|
signal?: AbortSignal;
|
|
290
295
|
}
|
|
291
296
|
export type FileViewerRemoteFilePreviewErrorKind = 'stream' | 'load';
|
|
292
|
-
export declare const resolveFileViewerPreviewLoadErrorMessage: ({ kind, error, formatErrorMessage, prefixes, }: ResolveFileViewerPreviewLoadErrorMessageInput) => string;
|
|
293
|
-
export declare const resolveFileViewerMissingRemoteDataErrorMessage: ({ message, }?: ResolveFileViewerMissingRemoteDataErrorMessageInput) => string;
|
|
297
|
+
export declare const resolveFileViewerPreviewLoadErrorMessage: ({ kind, error, formatErrorMessage, prefixes, i18n, }: ResolveFileViewerPreviewLoadErrorMessageInput) => string;
|
|
298
|
+
export declare const resolveFileViewerMissingRemoteDataErrorMessage: ({ message, i18n, }?: ResolveFileViewerMissingRemoteDataErrorMessageInput) => string;
|
|
294
299
|
export declare const DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER: FileViewerPreviewLoadErrorLogger;
|
|
295
300
|
export declare const reportFileViewerPreviewLoadError: ({ onLogError, onErrorMessage, ...messageInput }: ReportFileViewerPreviewLoadErrorInput) => string;
|
|
296
301
|
export declare const reportFileViewerMissingRemoteData: ({ onErrorMessage, ...messageInput }?: ReportFileViewerMissingRemoteDataInput) => string;
|
|
@@ -316,6 +321,7 @@ export interface RunFileViewerRemoteFilePreviewInput<Session = unknown> {
|
|
|
316
321
|
file?: File | null;
|
|
317
322
|
sourceUrl?: string | null;
|
|
318
323
|
}) => FileViewerRenderCompleteState;
|
|
324
|
+
i18n?: FileViewerI18nInput;
|
|
319
325
|
onMarkLoadStarted?: (version: number) => void;
|
|
320
326
|
onStartLoading?: (message: string) => void;
|
|
321
327
|
onSetLoadingMessage?: (message: string) => void;
|
|
@@ -443,6 +449,7 @@ export interface CreateFileViewerSourceLoadingActionHandlersInput<Session = unkn
|
|
|
443
449
|
getUrl: () => string | null | undefined;
|
|
444
450
|
getCurrentFilename?: () => string | undefined;
|
|
445
451
|
getPdfStreaming?: () => FileViewerPdfOptions['streaming'] | undefined;
|
|
452
|
+
getI18n?: () => FileViewerI18nInput;
|
|
446
453
|
getPageHref?: () => string | undefined;
|
|
447
454
|
previewTarget: MutableFileViewerPreviewState;
|
|
448
455
|
requestController: FileViewerRequestController;
|
|
@@ -505,14 +512,14 @@ export declare const applyFileViewerPreviewFilenameState: <Target extends Mutabl
|
|
|
505
512
|
export declare const applyFileViewerRenderReadinessState: <Target extends MutableFileViewerRenderReadinessState>(target: Target, state: Partial<FileViewerRenderReadinessState>) => Target;
|
|
506
513
|
export declare const commitFileViewerRenderCompleteState: <Session = unknown>({ version, session, buildState, readinessTarget, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, }: CommitFileViewerRenderCompleteStateInput<Session>) => FileViewerRenderCompleteState;
|
|
507
514
|
export declare const runFileViewerReadAndRenderFile: <Session = unknown>({ file, version, sourceUrl, source, fallbackFilename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildRenderCompleteState, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, }: RunFileViewerReadAndRenderFileInput<Session>) => Promise<FileViewerReadAndRenderFileState<Session>>;
|
|
508
|
-
export declare const runFileViewerStreamingPdfPreview: <Session = unknown>({ url, version, filename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildRenderCompleteState, loadingMessage, onStartLoading, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onError, }: RunFileViewerStreamingPdfPreviewInput<Session>) => Promise<FileViewerStreamingPdfPreviewState<Session>>;
|
|
515
|
+
export declare const runFileViewerStreamingPdfPreview: <Session = unknown>({ url, version, filename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildRenderCompleteState, loadingMessage, i18n, onStartLoading, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onError, }: RunFileViewerStreamingPdfPreviewInput<Session>) => Promise<FileViewerStreamingPdfPreviewState<Session>>;
|
|
509
516
|
export declare const runFileViewerLocalFilePreview: <Session = unknown>({ source, version, currentFilename, fallbackFilename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, onMarkLoadStarted, onStartLoading, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onError, }: RunFileViewerLocalFilePreviewInput<Session>) => Promise<FileViewerLocalFilePreviewState<Session>>;
|
|
510
|
-
export declare const runFileViewerRemoteFilePreview: <Session = unknown>({ url, version, pageHref, streaming, previewTarget, requestController, isCurrent, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, onMarkLoadStarted, onStartLoading, onSetLoadingMessage, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onMissingData, onError, }: RunFileViewerRemoteFilePreviewInput<Session>) => Promise<FileViewerRemoteFilePreviewState<Session>>;
|
|
511
|
-
export declare const createFileViewerSourceLoadingActionHandlers: <Session = unknown>({ getFile, getUrl, getCurrentFilename, getPdfStreaming, getPageHref, previewTarget, requestController, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, formatErrorMessage, onMarkLoadStarted, onClearLoadStarted, onStartLoading, onSetLoadingMessage, onStopLoading, onShowError, onClearError, onResetLoading, onClearRenderedContent, onSession, onActiveDocumentContext, onLifecycle, }: CreateFileViewerSourceLoadingActionHandlersInput<Session>) => FileViewerSourceLoadingActionHandlers<Session>;
|
|
517
|
+
export declare const runFileViewerRemoteFilePreview: <Session = unknown>({ url, version, pageHref, streaming, previewTarget, requestController, isCurrent, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, i18n, onMarkLoadStarted, onStartLoading, onSetLoadingMessage, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onMissingData, onError, }: RunFileViewerRemoteFilePreviewInput<Session>) => Promise<FileViewerRemoteFilePreviewState<Session>>;
|
|
518
|
+
export declare const createFileViewerSourceLoadingActionHandlers: <Session = unknown>({ getFile, getUrl, getCurrentFilename, getPdfStreaming, getI18n, getPageHref, previewTarget, requestController, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, formatErrorMessage, onMarkLoadStarted, onClearLoadStarted, onStartLoading, onSetLoadingMessage, onStopLoading, onShowError, onClearError, onResetLoading, onClearRenderedContent, onSession, onActiveDocumentContext, onLifecycle, }: CreateFileViewerSourceLoadingActionHandlersInput<Session>) => FileViewerSourceLoadingActionHandlers<Session>;
|
|
512
519
|
export declare const finalizeFileViewerPreviewLoadState: ({ version, isCurrent, onClearLoadStarted, onStopLoading, }: FinalizeFileViewerPreviewLoadStateInput) => void;
|
|
513
|
-
export declare const resolveFileViewerLoadStartMessage: (source: FileViewerLifecycleContext["source"]) =>
|
|
520
|
+
export declare const resolveFileViewerLoadStartMessage: (source: FileViewerLifecycleContext["source"], i18n?: FileViewerI18nInput) => string;
|
|
514
521
|
export declare const commitFileViewerLoadStartState: ({ version, filename, fallbackFilename, filenameTarget, buildState, onMarkLoadStarted, onLifecycle, onStartLoading, }: CommitFileViewerLoadStartStateInput) => FileViewerLoadStartState;
|
|
515
|
-
export declare const createFileViewerLoadStartState: ({ version, source, filename, file, sourceUrl, bufferSize, loadingMessage, timestamp, }: CreateFileViewerLoadStartStateInput) => FileViewerLoadStartState;
|
|
522
|
+
export declare const createFileViewerLoadStartState: ({ version, source, filename, file, sourceUrl, bufferSize, loadingMessage, i18n, timestamp, }: CreateFileViewerLoadStartStateInput) => FileViewerLoadStartState;
|
|
516
523
|
export declare const createFileViewerRenderCompleteState: ({ version, source, filename, file, sourceUrl, bufferSize, startedAt, timestamp, lifecycleState, }: CreateFileViewerRenderCompleteStateInput) => FileViewerRenderCompleteState;
|
|
517
524
|
export declare const resolveFileViewerFileRefSourcePlan: ({ source, currentFilename, fallbackFilename, }: ResolveFileViewerFileRefSourcePlanInput) => FileViewerFileRefSourcePlan;
|
|
518
525
|
export declare const normalizePdfStreamingMode: (mode: FileViewerPdfOptions["streaming"]) => true | false | "same-origin";
|
|
@@ -535,6 +542,7 @@ export interface CommitFileViewerRemoteDownloadStateInput {
|
|
|
535
542
|
currentFilename?: string;
|
|
536
543
|
fallbackFilename?: string;
|
|
537
544
|
isCurrent: (version: number) => boolean;
|
|
545
|
+
i18n?: FileViewerI18nInput;
|
|
538
546
|
onMissingData?: () => void;
|
|
539
547
|
onSetLoadingMessage?: (message: string) => void;
|
|
540
548
|
}
|
|
@@ -562,5 +570,5 @@ export declare const resolveFileViewerRemoteSourcePlan: ({ filename, fallbackFil
|
|
|
562
570
|
streaming?: FileViewerPdfOptions["streaming"];
|
|
563
571
|
url: string;
|
|
564
572
|
}) => FileViewerRemoteSourcePlan;
|
|
565
|
-
export declare const commitFileViewerRemoteDownloadState: ({ version, data, currentFilename, fallbackFilename, isCurrent, onMissingData, onSetLoadingMessage, }: CommitFileViewerRemoteDownloadStateInput) => FileViewerRemoteDownloadState;
|
|
573
|
+
export declare const commitFileViewerRemoteDownloadState: ({ version, data, currentFilename, fallbackFilename, isCurrent, i18n, onMissingData, onSetLoadingMessage, }: CommitFileViewerRemoteDownloadStateInput) => FileViewerRemoteDownloadState;
|
|
566
574
|
export declare const createFileViewerStreamingPdfPlaceholderFile: (filename?: string) => File;
|
package/dist/source/loading.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { buildFileViewerLifecycleContext, } from '../lifecycle/operations.js';
|
|
2
|
-
import {
|
|
2
|
+
import { resolveFileViewerPreviewMessages, } from '../viewer/state.js';
|
|
3
|
+
import { translateFileViewerMessage } from '../i18n/messages.js';
|
|
3
4
|
import { DEFAULT_FILE_VIEWER_SOURCE_FILENAME, getExtension, normalizeFilename, readFileViewerBuffer, resolveFileViewerSourceFilename, wrapFileViewerFileRef, } from './index.js';
|
|
4
5
|
export const DEFAULT_PDF_RANGE_CHUNK_SIZE = 64 * 1024;
|
|
5
6
|
export const DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME = 'preview.pdf';
|
|
@@ -9,11 +10,16 @@ export const FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES = {
|
|
|
9
10
|
load: '加载文件异常',
|
|
10
11
|
stream: '加载 PDF 流式预览异常',
|
|
11
12
|
};
|
|
12
|
-
export const resolveFileViewerPreviewLoadErrorMessage = ({ kind, error, formatErrorMessage, prefixes, }) => {
|
|
13
|
+
export const resolveFileViewerPreviewLoadErrorMessage = ({ kind, error, formatErrorMessage, prefixes, i18n, }) => {
|
|
13
14
|
var _a;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const fallbackPrefix = kind === 'local'
|
|
16
|
+
? translateFileViewerMessage(i18n, 'error.localRead')
|
|
17
|
+
: kind === 'stream'
|
|
18
|
+
? translateFileViewerMessage(i18n, 'error.stream')
|
|
19
|
+
: translateFileViewerMessage(i18n, 'error.load');
|
|
20
|
+
return formatErrorMessage((_a = prefixes === null || prefixes === void 0 ? void 0 : prefixes[kind]) !== null && _a !== void 0 ? _a : fallbackPrefix, error);
|
|
21
|
+
};
|
|
22
|
+
export const resolveFileViewerMissingRemoteDataErrorMessage = ({ message, i18n, } = {}) => message || translateFileViewerMessage(i18n, 'error.remoteDownload');
|
|
17
23
|
export const DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER = error => {
|
|
18
24
|
if (typeof console !== 'undefined' && typeof console.error === 'function') {
|
|
19
25
|
console.error(error);
|
|
@@ -327,9 +333,9 @@ export const runFileViewerReadAndRenderFile = async ({ file, version, sourceUrl,
|
|
|
327
333
|
complete,
|
|
328
334
|
};
|
|
329
335
|
};
|
|
330
|
-
export const runFileViewerStreamingPdfPreview = async ({ url, version, filename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildRenderCompleteState, loadingMessage
|
|
336
|
+
export const runFileViewerStreamingPdfPreview = async ({ url, version, filename, previewTarget, isCurrent, mountRenderedContent, destroyRenderSession, buildRenderCompleteState, loadingMessage, i18n, onStartLoading, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onError, }) => {
|
|
331
337
|
let placeholderFile = null;
|
|
332
|
-
onStartLoading === null || onStartLoading === void 0 ? void 0 : onStartLoading(loadingMessage);
|
|
338
|
+
onStartLoading === null || onStartLoading === void 0 ? void 0 : onStartLoading(loadingMessage || resolveFileViewerPreviewMessages(i18n).streamingPdf);
|
|
333
339
|
try {
|
|
334
340
|
placeholderFile = createFileViewerStreamingPdfPlaceholderFile(filename);
|
|
335
341
|
applyFileViewerPreviewSourceUrlState(previewTarget, url);
|
|
@@ -474,7 +480,7 @@ export const runFileViewerLocalFilePreview = async ({ source, version, currentFi
|
|
|
474
480
|
});
|
|
475
481
|
}
|
|
476
482
|
};
|
|
477
|
-
export const runFileViewerRemoteFilePreview = async ({ url, version, pageHref, streaming, previewTarget, requestController, isCurrent, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, onMarkLoadStarted, onStartLoading, onSetLoadingMessage, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onMissingData, onError, }) => {
|
|
483
|
+
export const runFileViewerRemoteFilePreview = async ({ url, version, pageHref, streaming, previewTarget, requestController, isCurrent, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, i18n, onMarkLoadStarted, onStartLoading, onSetLoadingMessage, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onMissingData, onError, }) => {
|
|
478
484
|
const remoteSource = resolveFileViewerRemoteSourcePlan({
|
|
479
485
|
pageHref,
|
|
480
486
|
streaming,
|
|
@@ -507,6 +513,7 @@ export const runFileViewerRemoteFilePreview = async ({ url, version, pageHref, s
|
|
|
507
513
|
source: 'url',
|
|
508
514
|
sourceUrl: url,
|
|
509
515
|
}),
|
|
516
|
+
i18n,
|
|
510
517
|
onStartLoading,
|
|
511
518
|
onSession,
|
|
512
519
|
onActiveDocumentContext,
|
|
@@ -555,6 +562,7 @@ export const runFileViewerRemoteFilePreview = async ({ url, version, pageHref, s
|
|
|
555
562
|
data,
|
|
556
563
|
currentFilename: remoteSource.filename,
|
|
557
564
|
isCurrent,
|
|
565
|
+
i18n,
|
|
558
566
|
onMissingData,
|
|
559
567
|
onSetLoadingMessage,
|
|
560
568
|
});
|
|
@@ -648,7 +656,7 @@ export const runFileViewerRemoteFilePreview = async ({ url, version, pageHref, s
|
|
|
648
656
|
});
|
|
649
657
|
}
|
|
650
658
|
};
|
|
651
|
-
export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, getCurrentFilename, getPdfStreaming, getPageHref, previewTarget, requestController, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, formatErrorMessage, onMarkLoadStarted, onClearLoadStarted, onStartLoading, onSetLoadingMessage, onStopLoading, onShowError, onClearError, onResetLoading, onClearRenderedContent, onSession, onActiveDocumentContext, onLifecycle, }) => {
|
|
659
|
+
export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, getCurrentFilename, getPdfStreaming, getI18n, getPageHref, previewTarget, requestController, downloadFile, mountRenderedContent, destroyRenderSession, buildLoadStartState, buildRenderCompleteState, formatErrorMessage, onMarkLoadStarted, onClearLoadStarted, onStartLoading, onSetLoadingMessage, onStopLoading, onShowError, onClearError, onResetLoading, onClearRenderedContent, onSession, onActiveDocumentContext, onLifecycle, }) => {
|
|
652
660
|
const isCurrentRequest = (version) => requestController.isCurrent(version);
|
|
653
661
|
const previewLocalFile = async (source, version) => {
|
|
654
662
|
var _a;
|
|
@@ -682,6 +690,7 @@ export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, g
|
|
|
682
690
|
kind: 'local',
|
|
683
691
|
error,
|
|
684
692
|
formatErrorMessage,
|
|
693
|
+
i18n: getI18n === null || getI18n === void 0 ? void 0 : getI18n(),
|
|
685
694
|
onErrorMessage: onShowError,
|
|
686
695
|
});
|
|
687
696
|
},
|
|
@@ -693,6 +702,7 @@ export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, g
|
|
|
693
702
|
version,
|
|
694
703
|
pageHref: getPageHref === null || getPageHref === void 0 ? void 0 : getPageHref(),
|
|
695
704
|
streaming: getPdfStreaming === null || getPdfStreaming === void 0 ? void 0 : getPdfStreaming(),
|
|
705
|
+
i18n: getI18n === null || getI18n === void 0 ? void 0 : getI18n(),
|
|
696
706
|
previewTarget,
|
|
697
707
|
requestController,
|
|
698
708
|
isCurrent: isCurrentRequest,
|
|
@@ -720,6 +730,7 @@ export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, g
|
|
|
720
730
|
onStopLoading,
|
|
721
731
|
onMissingData: () => {
|
|
722
732
|
reportFileViewerMissingRemoteData({
|
|
733
|
+
i18n: getI18n === null || getI18n === void 0 ? void 0 : getI18n(),
|
|
723
734
|
onErrorMessage: onShowError,
|
|
724
735
|
});
|
|
725
736
|
},
|
|
@@ -728,6 +739,7 @@ export const createFileViewerSourceLoadingActionHandlers = ({ getFile, getUrl, g
|
|
|
728
739
|
kind,
|
|
729
740
|
error,
|
|
730
741
|
formatErrorMessage,
|
|
742
|
+
i18n: getI18n === null || getI18n === void 0 ? void 0 : getI18n(),
|
|
731
743
|
onErrorMessage: onShowError,
|
|
732
744
|
});
|
|
733
745
|
},
|
|
@@ -778,10 +790,11 @@ export const finalizeFileViewerPreviewLoadState = ({ version, isCurrent, onClear
|
|
|
778
790
|
onStopLoading === null || onStopLoading === void 0 ? void 0 : onStopLoading();
|
|
779
791
|
}
|
|
780
792
|
};
|
|
781
|
-
export const resolveFileViewerLoadStartMessage = (source) => {
|
|
793
|
+
export const resolveFileViewerLoadStartMessage = (source, i18n) => {
|
|
794
|
+
const messages = resolveFileViewerPreviewMessages(i18n);
|
|
782
795
|
return source === 'url'
|
|
783
|
-
?
|
|
784
|
-
:
|
|
796
|
+
? messages.downloading
|
|
797
|
+
: messages.reading;
|
|
785
798
|
};
|
|
786
799
|
export const commitFileViewerLoadStartState = ({ version, filename, fallbackFilename, filenameTarget, buildState, onMarkLoadStarted, onLifecycle, onStartLoading, }) => {
|
|
787
800
|
if (filenameTarget) {
|
|
@@ -793,9 +806,9 @@ export const commitFileViewerLoadStartState = ({ version, filename, fallbackFile
|
|
|
793
806
|
onStartLoading === null || onStartLoading === void 0 ? void 0 : onStartLoading(loadStartState.loadingMessage);
|
|
794
807
|
return loadStartState;
|
|
795
808
|
};
|
|
796
|
-
export const createFileViewerLoadStartState = ({ version, source, filename, file, sourceUrl, bufferSize, loadingMessage, timestamp, }) => {
|
|
809
|
+
export const createFileViewerLoadStartState = ({ version, source, filename, file, sourceUrl, bufferSize, loadingMessage, i18n, timestamp, }) => {
|
|
797
810
|
return {
|
|
798
|
-
loadingMessage: loadingMessage || resolveFileViewerLoadStartMessage(source),
|
|
811
|
+
loadingMessage: loadingMessage || resolveFileViewerLoadStartMessage(source, i18n),
|
|
799
812
|
lifecycleContext: buildFileViewerLifecycleContext({
|
|
800
813
|
phase: 'load-start',
|
|
801
814
|
version,
|
|
@@ -883,7 +896,7 @@ export const resolveFileViewerRemoteSourcePlan = ({ filename, fallbackFilename =
|
|
|
883
896
|
: false,
|
|
884
897
|
};
|
|
885
898
|
};
|
|
886
|
-
export const commitFileViewerRemoteDownloadState = ({ version, data, currentFilename, fallbackFilename, isCurrent, onMissingData, onSetLoadingMessage, }) => {
|
|
899
|
+
export const commitFileViewerRemoteDownloadState = ({ version, data, currentFilename, fallbackFilename, isCurrent, i18n, onMissingData, onSetLoadingMessage, }) => {
|
|
887
900
|
if (!isCurrent(version)) {
|
|
888
901
|
return {
|
|
889
902
|
stale: true,
|
|
@@ -899,7 +912,7 @@ export const commitFileViewerRemoteDownloadState = ({ version, data, currentFile
|
|
|
899
912
|
source: null,
|
|
900
913
|
};
|
|
901
914
|
}
|
|
902
|
-
onSetLoadingMessage === null || onSetLoadingMessage === void 0 ? void 0 : onSetLoadingMessage(
|
|
915
|
+
onSetLoadingMessage === null || onSetLoadingMessage === void 0 ? void 0 : onSetLoadingMessage(resolveFileViewerPreviewMessages(i18n).reading);
|
|
903
916
|
return {
|
|
904
917
|
stale: false,
|
|
905
918
|
missing: false,
|
|
@@ -10,7 +10,7 @@ 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 { collectFileViewerRendererPlugins, createRendererRegistry, getFileViewerAutoRendererPresetVersion, installFileViewerRendererPlugins, listFileViewerAutoRendererPresets, } from '../registry/registry.js';
|
|
13
|
+
import { collectFileViewerRendererPlugins, createRendererRegistry, getFileViewerAutoRendererPresetVersion, hasFileViewerRendererPresetName, installFileViewerRendererPlugins, listFileViewerAutoRendererPresets, resolveFileViewerRendererPresetInputs, } from '../registry/registry.js';
|
|
14
14
|
import { createFileRenderHandlerLoader, applyFileViewerRenderSurfaceState, createFileViewerRenderSurfaceState, } from '../rendering/handler.js';
|
|
15
15
|
import { createFileViewerCoreRendererRegistry } from '../renderers/index.js';
|
|
16
16
|
import { createFileViewerRequestScope } from '../source/loading.js';
|
|
@@ -53,9 +53,9 @@ const resolveAutoRenderersEnabled = (options) => {
|
|
|
53
53
|
}
|
|
54
54
|
return (options.rendererMode || 'extend') !== 'replace';
|
|
55
55
|
};
|
|
56
|
-
const renderMissingRendererState = (container, type) => {
|
|
56
|
+
const renderMissingRendererState = (container, type, options) => {
|
|
57
57
|
const documentRef = container.ownerDocument;
|
|
58
|
-
const state = createFileViewerUnsupportedState(type);
|
|
58
|
+
const state = createFileViewerUnsupportedState(type, undefined, options);
|
|
59
59
|
const wrapper = documentRef.createElement('div');
|
|
60
60
|
wrapper.className = 'file-viewer-missing-renderer';
|
|
61
61
|
wrapper.style.cssText = [
|
|
@@ -75,8 +75,7 @@ const renderMissingRendererState = (container, type) => {
|
|
|
75
75
|
title.textContent = state.message;
|
|
76
76
|
title.style.cssText = 'display:block;margin-bottom:8px;color:#172033;font-size:16px;';
|
|
77
77
|
const description = documentRef.createElement('p');
|
|
78
|
-
description.textContent = state.description ||
|
|
79
|
-
'当前内置 renderer 配置没有加载该格式。请安装并传入对应 @file-viewer/renderer-* 包,或使用 @file-viewer/preset-all。';
|
|
78
|
+
description.textContent = state.description || state.title;
|
|
80
79
|
description.style.cssText = 'max-width:520px;margin:0;';
|
|
81
80
|
content.append(title, description);
|
|
82
81
|
wrapper.append(content);
|
|
@@ -86,6 +85,8 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
86
85
|
let options = createOptions.options || {};
|
|
87
86
|
let registry = createBaseRendererRegistry(createOptions, options);
|
|
88
87
|
let installedRendererInput = undefined;
|
|
88
|
+
let installedPresetInput = undefined;
|
|
89
|
+
let installedPresetsInput = undefined;
|
|
89
90
|
let installedRendererMode = options.rendererMode || 'extend';
|
|
90
91
|
let installedBuiltinRenderers = options.builtinRenderers || 'all';
|
|
91
92
|
let installedAutoRenderersEnabled = resolveAutoRenderersEnabled(options);
|
|
@@ -100,13 +101,20 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
100
101
|
const ensureRendererPluginsInstalled = async () => {
|
|
101
102
|
const nextMode = options.rendererMode || 'extend';
|
|
102
103
|
const nextRendererInput = options.renderers;
|
|
104
|
+
const nextPresetInput = options.preset;
|
|
105
|
+
const nextPresetsInput = options.presets;
|
|
103
106
|
const nextBuiltinRenderers = options.builtinRenderers || 'all';
|
|
104
107
|
const nextAutoRenderersEnabled = resolveAutoRenderersEnabled(options);
|
|
105
|
-
const
|
|
108
|
+
const needsAutoPresetBucket = nextAutoRenderersEnabled ||
|
|
109
|
+
hasFileViewerRendererPresetName(nextPresetInput) ||
|
|
110
|
+
hasFileViewerRendererPresetName(nextPresetsInput);
|
|
111
|
+
const nextAutoRendererVersion = needsAutoPresetBucket
|
|
106
112
|
? getFileViewerAutoRendererPresetVersion()
|
|
107
113
|
: 0;
|
|
108
114
|
if (nextMode === installedRendererMode &&
|
|
109
115
|
nextRendererInput === installedRendererInput &&
|
|
116
|
+
nextPresetInput === installedPresetInput &&
|
|
117
|
+
nextPresetsInput === installedPresetsInput &&
|
|
110
118
|
nextBuiltinRenderers === installedBuiltinRenderers &&
|
|
111
119
|
nextAutoRenderersEnabled === installedAutoRenderersEnabled &&
|
|
112
120
|
nextAutoRendererVersion === installedAutoRendererVersion) {
|
|
@@ -115,6 +123,8 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
115
123
|
registry = createBaseRendererRegistry(createOptions, options);
|
|
116
124
|
installedRendererMode = nextMode;
|
|
117
125
|
installedRendererInput = nextRendererInput;
|
|
126
|
+
installedPresetInput = nextPresetInput;
|
|
127
|
+
installedPresetsInput = nextPresetsInput;
|
|
118
128
|
installedBuiltinRenderers = nextBuiltinRenderers;
|
|
119
129
|
installedAutoRenderersEnabled = nextAutoRenderersEnabled;
|
|
120
130
|
installedAutoRendererVersion = nextAutoRendererVersion;
|
|
@@ -122,6 +132,7 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
122
132
|
if (nextAutoRenderersEnabled) {
|
|
123
133
|
rendererInputs.push(...listFileViewerAutoRendererPresets());
|
|
124
134
|
}
|
|
135
|
+
rendererInputs.push(...resolveFileViewerRendererPresetInputs(nextPresetInput), ...resolveFileViewerRendererPresetInputs(nextPresetsInput));
|
|
125
136
|
if (nextRendererInput) {
|
|
126
137
|
rendererInputs.push(nextRendererInput);
|
|
127
138
|
}
|
|
@@ -255,7 +266,7 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
255
266
|
const startedAt = Date.now();
|
|
256
267
|
await emitLifecycle(options, createOptions.onEvent, 'load-start', normalized, version, startedAt);
|
|
257
268
|
if (!(renderer === null || renderer === void 0 ? void 0 : renderer.load)) {
|
|
258
|
-
renderMissingRendererState(container, normalized.extension);
|
|
269
|
+
renderMissingRendererState(container, normalized.extension, options);
|
|
259
270
|
applyFileViewerRenderSurfaceState(renderSurfaceState, { session: null });
|
|
260
271
|
emitOperationAvailabilityChange();
|
|
261
272
|
emitZoomChange();
|