@file-viewer/core 2.1.2 → 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/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 { clearFileViewerAutoRendererPresets, collectFileViewerRendererPlugins, createRendererRegistry, getFileViewerAutoRendererPresetVersion, installFileViewerRendererPlugins, listFileViewerAutoRendererPresets, registerFileViewerAutoRendererPreset, unregisterFileViewerAutoRendererPreset, } from './registry/registry.js';
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;
@@ -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: FILE_VIEWER_OPERATION_LABELS[operation],
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 = FILE_VIEWER_BEFORE_OPERATION_ERROR_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) {
@@ -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;
@@ -1,5 +1,6 @@
1
1
  import { buildFileViewerLifecycleContext, } from '../lifecycle/operations.js';
2
- import { FILE_VIEWER_PREVIEW_MESSAGES, } from '../viewer/state.js';
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
- return formatErrorMessage((_a = prefixes === null || prefixes === void 0 ? void 0 : prefixes[kind]) !== null && _a !== void 0 ? _a : FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES[kind], error);
15
- };
16
- export const resolveFileViewerMissingRemoteDataErrorMessage = ({ message = FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE, } = {}) => message;
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 = FILE_VIEWER_PREVIEW_MESSAGES.streamingPdf, onStartLoading, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, onStopLoading, onError, }) => {
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
- ? FILE_VIEWER_PREVIEW_MESSAGES.downloading
784
- : FILE_VIEWER_PREVIEW_MESSAGES.reading;
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(FILE_VIEWER_PREVIEW_MESSAGES.reading);
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 nextAutoRendererVersion = nextAutoRenderersEnabled
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();