@file-viewer/core 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/LICENSE +160 -0
  2. package/README.en.md +78 -0
  3. package/README.md +83 -0
  4. package/dist/assets.d.ts +62 -0
  5. package/dist/assets.js +260 -0
  6. package/dist/browser.d.ts +1 -0
  7. package/dist/browser.js +1 -0
  8. package/dist/capabilities.d.ts +24 -0
  9. package/dist/capabilities.js +95 -0
  10. package/dist/document.d.ts +9 -0
  11. package/dist/document.js +86 -0
  12. package/dist/documentDom/anchors.d.ts +7 -0
  13. package/dist/documentDom/anchors.js +196 -0
  14. package/dist/documentDom/index.d.ts +5 -0
  15. package/dist/documentDom/index.js +3 -0
  16. package/dist/documentDom/providers.d.ts +13 -0
  17. package/dist/documentDom/providers.js +52 -0
  18. package/dist/documentDom/scroll.d.ts +12 -0
  19. package/dist/documentDom/scroll.js +42 -0
  20. package/dist/documentDom.d.ts +5 -0
  21. package/dist/documentDom.js +3 -0
  22. package/dist/documentEvents.d.ts +73 -0
  23. package/dist/documentEvents.js +150 -0
  24. package/dist/documentSearch.d.ts +50 -0
  25. package/dist/documentSearch.js +459 -0
  26. package/dist/documentZoom.d.ts +47 -0
  27. package/dist/documentZoom.js +184 -0
  28. package/dist/export.d.ts +26 -0
  29. package/dist/export.js +466 -0
  30. package/dist/formats.d.ts +305 -0
  31. package/dist/formats.js +207 -0
  32. package/dist/headless.d.ts +25 -0
  33. package/dist/headless.js +14 -0
  34. package/dist/index.d.ts +78 -0
  35. package/dist/index.js +118 -0
  36. package/dist/lifecycleFacade.d.ts +46 -0
  37. package/dist/lifecycleFacade.js +68 -0
  38. package/dist/loading.d.ts +59 -0
  39. package/dist/loading.js +489 -0
  40. package/dist/operations.d.ts +287 -0
  41. package/dist/operations.js +485 -0
  42. package/dist/options.d.ts +16 -0
  43. package/dist/options.js +92 -0
  44. package/dist/presentation.d.ts +14 -0
  45. package/dist/presentation.js +16 -0
  46. package/dist/printLayout.d.ts +19 -0
  47. package/dist/printLayout.js +83 -0
  48. package/dist/registry.d.ts +2 -0
  49. package/dist/registry.js +63 -0
  50. package/dist/rendererDispatcher.d.ts +21 -0
  51. package/dist/rendererDispatcher.js +42 -0
  52. package/dist/rendererHandler.d.ts +165 -0
  53. package/dist/rendererHandler.js +354 -0
  54. package/dist/renderers/archive.d.ts +2 -0
  55. package/dist/renderers/archive.js +547 -0
  56. package/dist/renderers/archiveCache.d.ts +10 -0
  57. package/dist/renderers/archiveCache.js +96 -0
  58. package/dist/renderers/archiveFallback.d.ts +7 -0
  59. package/dist/renderers/archiveFallback.js +166 -0
  60. package/dist/renderers/archiveShared.d.ts +23 -0
  61. package/dist/renderers/archiveShared.js +71 -0
  62. package/dist/renderers/audio.d.ts +8 -0
  63. package/dist/renderers/audio.js +219 -0
  64. package/dist/renderers/cad.d.ts +2 -0
  65. package/dist/renderers/cad.js +445 -0
  66. package/dist/renderers/code.d.ts +11 -0
  67. package/dist/renderers/code.js +233 -0
  68. package/dist/renderers/data.d.ts +7 -0
  69. package/dist/renderers/data.js +370 -0
  70. package/dist/renderers/drawing.d.ts +10 -0
  71. package/dist/renderers/drawing.js +537 -0
  72. package/dist/renderers/eda.d.ts +2 -0
  73. package/dist/renderers/eda.js +434 -0
  74. package/dist/renderers/edaParser.d.ts +77 -0
  75. package/dist/renderers/edaParser.js +569 -0
  76. package/dist/renderers/email.d.ts +2 -0
  77. package/dist/renderers/email.js +463 -0
  78. package/dist/renderers/epub.d.ts +2 -0
  79. package/dist/renderers/epub.js +330 -0
  80. package/dist/renderers/geo.d.ts +2 -0
  81. package/dist/renderers/geo.js +284 -0
  82. package/dist/renderers/image.d.ts +2 -0
  83. package/dist/renderers/image.js +179 -0
  84. package/dist/renderers/index.d.ts +21 -0
  85. package/dist/renderers/index.js +207 -0
  86. package/dist/renderers/markdown.d.ts +2 -0
  87. package/dist/renderers/markdown.js +83 -0
  88. package/dist/renderers/model.d.ts +2 -0
  89. package/dist/renderers/model.js +566 -0
  90. package/dist/renderers/ofd.d.ts +2 -0
  91. package/dist/renderers/ofd.js +255 -0
  92. package/dist/renderers/openDocument.d.ts +2 -0
  93. package/dist/renderers/openDocument.js +122 -0
  94. package/dist/renderers/pdf.d.ts +3 -0
  95. package/dist/renderers/pdf.js +846 -0
  96. package/dist/renderers/pdfStyles.d.ts +1 -0
  97. package/dist/renderers/pdfStyles.js +1 -0
  98. package/dist/renderers/pptx.d.ts +2 -0
  99. package/dist/renderers/pptx.js +202 -0
  100. package/dist/renderers/spreadsheet/state.d.ts +80 -0
  101. package/dist/renderers/spreadsheet/state.js +96 -0
  102. package/dist/renderers/spreadsheet/view.d.ts +25 -0
  103. package/dist/renderers/spreadsheet/view.js +833 -0
  104. package/dist/renderers/spreadsheet/worker/index.d.ts +2 -0
  105. package/dist/renderers/spreadsheet/worker/index.js +1 -0
  106. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +73 -0
  107. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +623 -0
  108. package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +2 -0
  109. package/dist/renderers/spreadsheet/worker/sheetjs/color.js +73 -0
  110. package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +1 -0
  111. package/dist/renderers/spreadsheet/worker/sheetjs/index.js +1 -0
  112. package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +18 -0
  113. package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +106 -0
  114. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +1 -0
  115. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +11 -0
  116. package/dist/renderers/spreadsheet/worker/type.d.ts +57 -0
  117. package/dist/renderers/spreadsheet/worker/type.js +1 -0
  118. package/dist/renderers/spreadsheet.d.ts +3 -0
  119. package/dist/renderers/spreadsheet.js +929 -0
  120. package/dist/renderers/typst.d.ts +8 -0
  121. package/dist/renderers/typst.js +415 -0
  122. package/dist/renderers/umd/parser.d.ts +30 -0
  123. package/dist/renderers/umd/parser.js +408 -0
  124. package/dist/renderers/umd.d.ts +2 -0
  125. package/dist/renderers/umd.js +297 -0
  126. package/dist/renderers/video.d.ts +8 -0
  127. package/dist/renderers/video.js +108 -0
  128. package/dist/renderers/wordDoc.d.ts +5 -0
  129. package/dist/renderers/wordDoc.js +284 -0
  130. package/dist/renderers/wordDocx.d.ts +5 -0
  131. package/dist/renderers/wordDocx.js +501 -0
  132. package/dist/renderers/wordDocx.worker.d.ts +1 -0
  133. package/dist/renderers/wordDocx.worker.js +96 -0
  134. package/dist/source.d.ts +18 -0
  135. package/dist/source.js +152 -0
  136. package/dist/sourceLoading.d.ts +566 -0
  137. package/dist/sourceLoading.js +918 -0
  138. package/dist/state.d.ts +16 -0
  139. package/dist/state.js +81 -0
  140. package/dist/types.d.ts +446 -0
  141. package/dist/types.js +1 -0
  142. package/dist/viewer.d.ts +8 -0
  143. package/dist/viewer.js +285 -0
  144. package/dist/viewerOperations.d.ts +88 -0
  145. package/dist/viewerOperations.js +242 -0
  146. package/dist/watermark.d.ts +15 -0
  147. package/dist/watermark.js +81 -0
  148. package/dist/worker.d.ts +34 -0
  149. package/dist/worker.js +101 -0
  150. package/package.json +109 -0
  151. package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +183 -0
  152. package/vendor/ofd/dltech/jbig2/ccitt.js +1070 -0
  153. package/vendor/ofd/dltech/jbig2/compatibility.js +12 -0
  154. package/vendor/ofd/dltech/jbig2/core_utils.js +180 -0
  155. package/vendor/ofd/dltech/jbig2/is_node.js +27 -0
  156. package/vendor/ofd/dltech/jbig2/jbig2.js +2589 -0
  157. package/vendor/ofd/dltech/jbig2/jbig2_stream.js +81 -0
  158. package/vendor/ofd/dltech/jbig2/primitives.js +387 -0
  159. package/vendor/ofd/dltech/jbig2/stream.js +1348 -0
  160. package/vendor/ofd/dltech/jbig2/util.js +972 -0
  161. package/vendor/ofd/dltech/ofd/ofd.d.ts +11 -0
  162. package/vendor/ofd/dltech/ofd/ofd.js +100 -0
  163. package/vendor/ofd/dltech/ofd/ofd_parser.js +395 -0
  164. package/vendor/ofd/dltech/ofd/ofd_render.js +473 -0
  165. package/vendor/ofd/dltech/ofd/ofd_util.js +350 -0
  166. package/vendor/ofd/dltech/ofd/pipeline.js +26 -0
@@ -0,0 +1,566 @@
1
+ import type { FileViewerFileRef, FileViewerLifecycleContext, FileViewerPdfOptions } from './types';
2
+ import { type FileViewerLifecycleStateController } from './operations';
3
+ import { type FileViewerErrorMessageFormatter } from './state';
4
+ export declare const DEFAULT_PDF_RANGE_CHUNK_SIZE: number;
5
+ export declare const DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME = "preview.pdf";
6
+ export declare const FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE = "\u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25";
7
+ export declare const FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES: {
8
+ readonly local: "读取文件异常";
9
+ readonly load: "加载文件异常";
10
+ readonly stream: "加载 PDF 流式预览异常";
11
+ };
12
+ export type FileViewerPreviewLoadErrorKind = 'local' | FileViewerRemoteFilePreviewErrorKind;
13
+ export type FileViewerPreviewLoadErrorPrefixes = Partial<Record<FileViewerPreviewLoadErrorKind, string>>;
14
+ export interface ResolveFileViewerPreviewLoadErrorMessageInput {
15
+ kind: FileViewerPreviewLoadErrorKind;
16
+ error: unknown;
17
+ formatErrorMessage: FileViewerErrorMessageFormatter;
18
+ prefixes?: FileViewerPreviewLoadErrorPrefixes;
19
+ }
20
+ export interface ResolveFileViewerMissingRemoteDataErrorMessageInput {
21
+ message?: string;
22
+ }
23
+ export type FileViewerPreviewLoadErrorLogger = (error: unknown) => void;
24
+ export interface ReportFileViewerPreviewLoadErrorInput extends ResolveFileViewerPreviewLoadErrorMessageInput {
25
+ onLogError?: FileViewerPreviewLoadErrorLogger | null;
26
+ onErrorMessage?: (message: string) => void;
27
+ }
28
+ export interface ReportFileViewerMissingRemoteDataInput extends ResolveFileViewerMissingRemoteDataErrorMessageInput {
29
+ onErrorMessage?: (message: string) => void;
30
+ }
31
+ export interface FileViewerRequestController {
32
+ readonly version: number;
33
+ createVersion(): number;
34
+ isCurrent(version: number): boolean;
35
+ createAbortController(): AbortController | null;
36
+ clearAbortController(controller: AbortController | null): void;
37
+ abort(): void;
38
+ }
39
+ export interface FileViewerRequestScope {
40
+ requestController: FileViewerRequestController;
41
+ getCurrentVersion(): number;
42
+ isCurrentRequest(version: number): boolean;
43
+ }
44
+ export interface ResolveFileViewerPreviewRequestReasonInput {
45
+ file?: FileViewerFileRef | null;
46
+ url?: string | null;
47
+ }
48
+ export interface CommitFileViewerPreviewRequestStartStateInput {
49
+ reason?: FileViewerLifecycleContext['reason'];
50
+ requestController: Pick<FileViewerRequestController, 'createVersion'>;
51
+ previewTarget: MutableFileViewerPreviewRequestState;
52
+ onClearRenderedContent?: (reason?: FileViewerLifecycleContext['reason']) => void;
53
+ onClearError?: () => void;
54
+ }
55
+ export interface FileViewerEmptyPreviewState {
56
+ filename: '';
57
+ file: null;
58
+ buffer: null;
59
+ sourceUrl: null;
60
+ renderedReady: false;
61
+ progressiveReady: false;
62
+ }
63
+ export type FileViewerPreviewRequestResetState = Pick<FileViewerEmptyPreviewState, 'file' | 'buffer' | 'sourceUrl' | 'progressiveReady'>;
64
+ export interface MutableFileViewerPreviewRequestState {
65
+ file: File | null;
66
+ buffer: ArrayBuffer | null;
67
+ sourceUrl: string | null;
68
+ progressiveReady: boolean;
69
+ }
70
+ export interface MutableFileViewerPreviewState extends MutableFileViewerPreviewRequestState {
71
+ filename: string;
72
+ renderedReady: boolean;
73
+ }
74
+ export interface FileViewerMutableAccessor<Value> {
75
+ get(): Value;
76
+ set(value: Value): void;
77
+ }
78
+ export interface CreateFileViewerPreviewStateTargetInput {
79
+ filename: FileViewerMutableAccessor<string>;
80
+ file: FileViewerMutableAccessor<File | null>;
81
+ buffer: FileViewerMutableAccessor<ArrayBuffer | null>;
82
+ sourceUrl: FileViewerMutableAccessor<string | null>;
83
+ renderedReady: FileViewerMutableAccessor<boolean>;
84
+ progressiveReady: FileViewerMutableAccessor<boolean>;
85
+ }
86
+ export interface CommitFileViewerEmptyPreviewResetStateInput {
87
+ previewTarget: MutableFileViewerPreviewState;
88
+ state?: FileViewerEmptyPreviewState;
89
+ reason?: FileViewerLifecycleContext['reason'];
90
+ onClearRenderedContent?: (reason?: FileViewerLifecycleContext['reason']) => void;
91
+ onResetLoading?: () => void;
92
+ }
93
+ export interface FileViewerReadPreviewState {
94
+ filename: string;
95
+ file: File;
96
+ buffer: ArrayBuffer;
97
+ sourceUrl: string | null;
98
+ }
99
+ export interface FileViewerFileRefSourcePlan {
100
+ file: File;
101
+ filename: string;
102
+ }
103
+ export interface ResolveFileViewerFileRefSourcePlanInput {
104
+ source: FileViewerFileRef;
105
+ currentFilename?: string;
106
+ fallbackFilename?: string;
107
+ }
108
+ export interface CreateFileViewerReadPreviewStateInput {
109
+ file: File;
110
+ buffer: ArrayBuffer;
111
+ sourceUrl?: string | null;
112
+ fallbackFilename?: string;
113
+ }
114
+ export type MutableFileViewerReadPreviewState = Pick<MutableFileViewerPreviewState, 'filename' | 'file' | 'buffer' | 'sourceUrl'>;
115
+ export type MutableFileViewerPreviewSourceUrlState = Pick<MutableFileViewerPreviewState, 'sourceUrl'>;
116
+ export type MutableFileViewerPreviewFilenameState = Pick<MutableFileViewerPreviewState, 'filename'>;
117
+ export type FileViewerRenderReadinessState = Pick<MutableFileViewerPreviewState, 'renderedReady' | 'progressiveReady'>;
118
+ export type MutableFileViewerRenderReadinessState = FileViewerRenderReadinessState;
119
+ export interface FileViewerLoadStartState {
120
+ loadingMessage: string;
121
+ lifecycleContext: FileViewerLifecycleContext;
122
+ }
123
+ export interface CreateFileViewerLoadStartStateInput {
124
+ version: number;
125
+ source: FileViewerLifecycleContext['source'];
126
+ filename?: string;
127
+ file?: File | null;
128
+ sourceUrl?: string | null;
129
+ bufferSize?: number;
130
+ loadingMessage?: string;
131
+ timestamp?: number;
132
+ }
133
+ export interface CommitFileViewerLoadStartStateInput {
134
+ version: number;
135
+ filename?: string;
136
+ fallbackFilename?: string;
137
+ filenameTarget?: MutableFileViewerPreviewFilenameState;
138
+ buildState: () => FileViewerLoadStartState;
139
+ onMarkLoadStarted?: (version: number) => void;
140
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
141
+ onStartLoading?: (message: string) => void;
142
+ }
143
+ export interface FileViewerRenderCompleteState {
144
+ readiness: FileViewerRenderReadinessState;
145
+ lifecycleContext: FileViewerLifecycleContext;
146
+ }
147
+ export interface CreateFileViewerRenderCompleteStateInput {
148
+ version: number;
149
+ source: FileViewerLifecycleContext['source'];
150
+ filename?: string;
151
+ file?: File | null;
152
+ sourceUrl?: string | null;
153
+ bufferSize?: number;
154
+ startedAt?: number;
155
+ timestamp?: number;
156
+ lifecycleState?: Pick<FileViewerLifecycleStateController, 'getLoadStartedAt'>;
157
+ }
158
+ export interface CommitFileViewerRenderCompleteStateInput<Session = unknown> {
159
+ version: number;
160
+ session?: Session | null;
161
+ buildState: () => FileViewerRenderCompleteState;
162
+ readinessTarget: MutableFileViewerRenderReadinessState;
163
+ onSession?: (session: Session | null) => void;
164
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
165
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
166
+ onClearLoadStarted?: (version: number) => void;
167
+ }
168
+ export interface RunFileViewerReadAndRenderFileInput<Session = unknown> {
169
+ file: File;
170
+ version: number;
171
+ source?: FileViewerLifecycleContext['source'];
172
+ sourceUrl?: string;
173
+ fallbackFilename?: string;
174
+ previewTarget: MutableFileViewerReadPreviewState & MutableFileViewerRenderReadinessState;
175
+ isCurrent: (version: number) => boolean;
176
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string) => Promise<Session | undefined>;
177
+ destroyRenderSession?: (session?: Session | null) => void;
178
+ buildRenderCompleteState: (input: {
179
+ version: number;
180
+ source: FileViewerLifecycleContext['source'];
181
+ file?: File | null;
182
+ sourceUrl?: string | null;
183
+ }) => FileViewerRenderCompleteState;
184
+ onSession?: (session: Session | null) => void;
185
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
186
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
187
+ onClearLoadStarted?: (version: number) => void;
188
+ }
189
+ export type FileViewerReadAndRenderFileState<Session = unknown> = {
190
+ readonly stale: true;
191
+ readonly buffer: ArrayBuffer | null;
192
+ readonly session: Session | null | undefined;
193
+ readonly complete: null;
194
+ } | {
195
+ readonly stale: false;
196
+ readonly buffer: ArrayBuffer;
197
+ readonly session: Session | undefined;
198
+ readonly complete: FileViewerRenderCompleteState;
199
+ };
200
+ export interface RunFileViewerStreamingPdfPreviewInput<Session = unknown> {
201
+ url: string;
202
+ version: number;
203
+ filename?: string;
204
+ previewTarget: MutableFileViewerPreviewSourceUrlState & MutableFileViewerRenderReadinessState;
205
+ isCurrent: (version: number) => boolean;
206
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string) => Promise<Session | undefined>;
207
+ destroyRenderSession?: (session?: Session | null) => void;
208
+ buildRenderCompleteState: (input: {
209
+ version: number;
210
+ source: 'url';
211
+ sourceUrl?: string | null;
212
+ }) => FileViewerRenderCompleteState;
213
+ loadingMessage?: string;
214
+ onStartLoading?: (message: string) => void;
215
+ onSession?: (session: Session | null) => void;
216
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
217
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
218
+ onClearLoadStarted?: (version: number) => void;
219
+ onStopLoading?: () => void;
220
+ onError?: (error: unknown) => void;
221
+ }
222
+ export type FileViewerStreamingPdfPreviewState<Session = unknown> = {
223
+ readonly status: 'ready';
224
+ readonly placeholderFile: File;
225
+ readonly session: Session | undefined;
226
+ readonly complete: FileViewerRenderCompleteState;
227
+ readonly error: null;
228
+ } | {
229
+ readonly status: 'stale';
230
+ readonly placeholderFile: File | null;
231
+ readonly session: Session | null | undefined;
232
+ readonly complete: null;
233
+ readonly error: null;
234
+ } | {
235
+ readonly status: 'error';
236
+ readonly placeholderFile: File | null;
237
+ readonly session: null;
238
+ readonly complete: null;
239
+ readonly error: unknown;
240
+ };
241
+ export interface RunFileViewerLocalFilePreviewInput<Session = unknown> {
242
+ source: FileViewerFileRef;
243
+ version: number;
244
+ currentFilename?: string;
245
+ fallbackFilename?: string;
246
+ previewTarget: MutableFileViewerPreviewState;
247
+ isCurrent: (version: number) => boolean;
248
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string) => Promise<Session | undefined>;
249
+ destroyRenderSession?: (session?: Session | null) => void;
250
+ buildLoadStartState: (input: {
251
+ version: number;
252
+ source: 'file';
253
+ file: File;
254
+ }) => FileViewerLoadStartState;
255
+ buildRenderCompleteState: (input: {
256
+ version: number;
257
+ source: 'file';
258
+ file: File;
259
+ }) => FileViewerRenderCompleteState;
260
+ onMarkLoadStarted?: (version: number) => void;
261
+ onStartLoading?: (message: string) => void;
262
+ onSession?: (session: Session | null) => void;
263
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
264
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
265
+ onClearLoadStarted?: (version: number) => void;
266
+ onStopLoading?: () => void;
267
+ onError?: (error: unknown) => void;
268
+ }
269
+ export type FileViewerLocalFilePreviewState<Session = unknown> = {
270
+ readonly status: 'ready';
271
+ readonly source: FileViewerFileRefSourcePlan;
272
+ readonly read: Extract<FileViewerReadAndRenderFileState<Session>, {
273
+ stale: false;
274
+ }>;
275
+ readonly error: null;
276
+ } | {
277
+ readonly status: 'stale';
278
+ readonly source: FileViewerFileRefSourcePlan | null;
279
+ readonly read: FileViewerReadAndRenderFileState<Session> | null;
280
+ readonly error: null;
281
+ } | {
282
+ readonly status: 'error';
283
+ readonly source: FileViewerFileRefSourcePlan;
284
+ readonly read: null;
285
+ readonly error: unknown;
286
+ };
287
+ export interface FileViewerRemoteFileDownloadInput {
288
+ url: string;
289
+ signal?: AbortSignal;
290
+ }
291
+ export type FileViewerRemoteFilePreviewErrorKind = 'stream' | 'load';
292
+ export declare const resolveFileViewerPreviewLoadErrorMessage: ({ kind, error, formatErrorMessage, prefixes, }: ResolveFileViewerPreviewLoadErrorMessageInput) => string;
293
+ export declare const resolveFileViewerMissingRemoteDataErrorMessage: ({ message, }?: ResolveFileViewerMissingRemoteDataErrorMessageInput) => string;
294
+ export declare const DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER: FileViewerPreviewLoadErrorLogger;
295
+ export declare const reportFileViewerPreviewLoadError: ({ onLogError, onErrorMessage, ...messageInput }: ReportFileViewerPreviewLoadErrorInput) => string;
296
+ export declare const reportFileViewerMissingRemoteData: ({ onErrorMessage, ...messageInput }?: ReportFileViewerMissingRemoteDataInput) => string;
297
+ export interface RunFileViewerRemoteFilePreviewInput<Session = unknown> {
298
+ url: string;
299
+ version: number;
300
+ pageHref?: string;
301
+ streaming?: FileViewerPdfOptions['streaming'];
302
+ previewTarget: MutableFileViewerPreviewState;
303
+ requestController: Pick<FileViewerRequestController, 'createAbortController' | 'clearAbortController'>;
304
+ isCurrent: (version: number) => boolean;
305
+ downloadFile: (input: FileViewerRemoteFileDownloadInput) => Promise<FileViewerFileRef | null | undefined>;
306
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string) => Promise<Session | undefined>;
307
+ destroyRenderSession?: (session?: Session | null) => void;
308
+ buildLoadStartState: (input: {
309
+ version: number;
310
+ source: 'url';
311
+ sourceUrl: string;
312
+ }) => FileViewerLoadStartState;
313
+ buildRenderCompleteState: (input: {
314
+ version: number;
315
+ source: 'url';
316
+ file?: File | null;
317
+ sourceUrl?: string | null;
318
+ }) => FileViewerRenderCompleteState;
319
+ onMarkLoadStarted?: (version: number) => void;
320
+ onStartLoading?: (message: string) => void;
321
+ onSetLoadingMessage?: (message: string) => void;
322
+ onSession?: (session: Session | null) => void;
323
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
324
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
325
+ onClearLoadStarted?: (version: number) => void;
326
+ onStopLoading?: () => void;
327
+ onMissingData?: () => void;
328
+ onError?: (error: unknown, kind: FileViewerRemoteFilePreviewErrorKind) => void;
329
+ }
330
+ export type FileViewerRemoteFilePreviewState<Session = unknown> = {
331
+ readonly status: 'ready';
332
+ readonly remoteSource: FileViewerRemoteSourcePlan;
333
+ readonly download: Extract<FileViewerRemoteDownloadState, {
334
+ stale: false;
335
+ missing: false;
336
+ }>;
337
+ readonly read: Extract<FileViewerReadAndRenderFileState<Session>, {
338
+ stale: false;
339
+ }>;
340
+ readonly stream: null;
341
+ readonly error: null;
342
+ } | {
343
+ readonly status: 'stream';
344
+ readonly remoteSource: FileViewerRemoteSourcePlan;
345
+ readonly download: null;
346
+ readonly read: null;
347
+ readonly stream: Extract<FileViewerStreamingPdfPreviewState<Session>, {
348
+ status: 'ready';
349
+ }>;
350
+ readonly error: null;
351
+ } | {
352
+ readonly status: 'missing';
353
+ readonly remoteSource: FileViewerRemoteSourcePlan;
354
+ readonly download: Extract<FileViewerRemoteDownloadState, {
355
+ stale: false;
356
+ missing: true;
357
+ }>;
358
+ readonly read: null;
359
+ readonly stream: null;
360
+ readonly error: null;
361
+ } | {
362
+ readonly status: 'stale';
363
+ readonly remoteSource: FileViewerRemoteSourcePlan;
364
+ readonly download: FileViewerRemoteDownloadState | null;
365
+ readonly read: FileViewerReadAndRenderFileState<Session> | null;
366
+ readonly stream: Extract<FileViewerStreamingPdfPreviewState<Session>, {
367
+ status: 'stale';
368
+ }> | null;
369
+ readonly error: null;
370
+ } | {
371
+ readonly status: 'error';
372
+ readonly remoteSource: FileViewerRemoteSourcePlan;
373
+ readonly download: null;
374
+ readonly read: null;
375
+ readonly stream: Extract<FileViewerStreamingPdfPreviewState<Session>, {
376
+ status: 'error';
377
+ }> | null;
378
+ readonly error: unknown;
379
+ };
380
+ export interface RunFileViewerPreviewRequestInput<LocalResult = unknown, RemoteResult = unknown> {
381
+ file?: FileViewerFileRef | null;
382
+ url?: string | null;
383
+ reason?: FileViewerLifecycleContext['reason'];
384
+ requestController: Pick<FileViewerRequestController, 'createVersion'>;
385
+ previewTarget: MutableFileViewerPreviewState;
386
+ onPreviewLocalFile: (source: FileViewerFileRef, version: number) => Promise<LocalResult>;
387
+ onPreviewRemoteFile: (url: string, version: number) => Promise<RemoteResult>;
388
+ onClearRenderedContent?: (reason?: FileViewerLifecycleContext['reason']) => void;
389
+ onClearError?: () => void;
390
+ onResetLoading?: () => void;
391
+ }
392
+ export type FileViewerPreviewRequestRunState<LocalResult = unknown, RemoteResult = unknown> = {
393
+ readonly status: 'file';
394
+ readonly version: number;
395
+ readonly reason: FileViewerLifecycleContext['reason'];
396
+ readonly file: FileViewerFileRef;
397
+ readonly url: null;
398
+ readonly result: LocalResult;
399
+ } | {
400
+ readonly status: 'url';
401
+ readonly version: number;
402
+ readonly reason: FileViewerLifecycleContext['reason'];
403
+ readonly file: null;
404
+ readonly url: string;
405
+ readonly result: RemoteResult;
406
+ } | {
407
+ readonly status: 'reset';
408
+ readonly version: number;
409
+ readonly reason: FileViewerLifecycleContext['reason'];
410
+ readonly file: null;
411
+ readonly url: null;
412
+ readonly result: MutableFileViewerPreviewState;
413
+ };
414
+ export interface CancelFileViewerPreviewRequestInput {
415
+ reason?: FileViewerLifecycleContext['reason'];
416
+ requestController: Pick<FileViewerRequestController, 'createVersion'>;
417
+ previewTarget: MutableFileViewerPreviewRequestState;
418
+ onClearRenderedContent?: (reason?: FileViewerLifecycleContext['reason']) => void;
419
+ onClearError?: () => void;
420
+ }
421
+ export interface RunFileViewerPreviewSourceChangeInput {
422
+ onRefreshPreview?: () => Promise<unknown> | unknown;
423
+ }
424
+ export interface RunFileViewerPreviewComponentUnmountInput {
425
+ reason?: FileViewerLifecycleContext['reason'];
426
+ onCancelPreview?: (reason: FileViewerLifecycleContext['reason']) => void;
427
+ onResetLoading?: () => void;
428
+ onStopZoomObserver?: () => void;
429
+ }
430
+ export interface FileViewerPreviewComponentUnmountState {
431
+ reason: FileViewerLifecycleContext['reason'];
432
+ }
433
+ export interface FileViewerSourceLoadingActionHandlers<Session = unknown> {
434
+ isCurrentRequest: (version: number) => boolean;
435
+ previewLocalFile: (source: FileViewerFileRef, version: number) => Promise<FileViewerLocalFilePreviewState<Session>>;
436
+ previewRemoteFile: (url: string, version: number) => Promise<FileViewerRemoteFilePreviewState<Session>>;
437
+ resetViewer: (reason?: FileViewerLifecycleContext['reason']) => MutableFileViewerPreviewState;
438
+ refreshPreview: () => Promise<FileViewerPreviewRequestRunState<FileViewerLocalFilePreviewState<Session>, FileViewerRemoteFilePreviewState<Session>>>;
439
+ cancelPreview: (reason?: FileViewerLifecycleContext['reason']) => number;
440
+ }
441
+ export interface CreateFileViewerSourceLoadingActionHandlersInput<Session = unknown> {
442
+ getFile: () => FileViewerFileRef | null | undefined;
443
+ getUrl: () => string | null | undefined;
444
+ getCurrentFilename?: () => string | undefined;
445
+ getPdfStreaming?: () => FileViewerPdfOptions['streaming'] | undefined;
446
+ getPageHref?: () => string | undefined;
447
+ previewTarget: MutableFileViewerPreviewState;
448
+ requestController: FileViewerRequestController;
449
+ downloadFile: (input: FileViewerRemoteFileDownloadInput) => Promise<FileViewerFileRef | null | undefined>;
450
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string) => Promise<Session | undefined>;
451
+ destroyRenderSession?: (session?: Session | null) => void;
452
+ buildLoadStartState: (input: {
453
+ version: number;
454
+ source: FileViewerLifecycleContext['source'];
455
+ file?: File | null;
456
+ sourceUrl?: string | null;
457
+ }) => FileViewerLoadStartState;
458
+ buildRenderCompleteState: (input: {
459
+ version: number;
460
+ source: FileViewerLifecycleContext['source'];
461
+ file?: File | null;
462
+ sourceUrl?: string | null;
463
+ }) => FileViewerRenderCompleteState;
464
+ formatErrorMessage: FileViewerErrorMessageFormatter;
465
+ onMarkLoadStarted?: (version: number) => void;
466
+ onClearLoadStarted?: (version: number) => void;
467
+ onStartLoading?: (message: string) => void;
468
+ onSetLoadingMessage?: (message: string) => void;
469
+ onStopLoading?: () => void;
470
+ onShowError?: (message: string) => void;
471
+ onClearError?: () => void;
472
+ onResetLoading?: () => void;
473
+ onClearRenderedContent?: (reason?: FileViewerLifecycleContext['reason']) => void;
474
+ onSession?: (session: Session | null) => void;
475
+ onActiveDocumentContext?: (context: FileViewerLifecycleContext) => void;
476
+ onLifecycle?: (context: FileViewerLifecycleContext) => void;
477
+ }
478
+ export interface FinalizeFileViewerPreviewLoadStateInput {
479
+ version: number;
480
+ isCurrent: (version: number) => boolean;
481
+ onClearLoadStarted?: (version: number) => void;
482
+ onStopLoading?: () => void;
483
+ }
484
+ export declare const createFileViewerRequestController: () => FileViewerRequestController;
485
+ export declare const createFileViewerRequestScope: (requestController?: FileViewerRequestController) => FileViewerRequestScope;
486
+ export declare const isFileViewerAbortError: (error: unknown) => boolean;
487
+ export declare const hasFileViewerPreviewSource: ({ file, url, }?: ResolveFileViewerPreviewRequestReasonInput) => boolean;
488
+ export declare const resolveFileViewerPreviewRequestReason: (input?: ResolveFileViewerPreviewRequestReasonInput) => FileViewerLifecycleContext["reason"];
489
+ export declare const normalizeFileViewerSourceUrl: (sourceUrl?: string | null) => string | null;
490
+ export declare const createFileViewerEmptyPreviewState: () => FileViewerEmptyPreviewState;
491
+ export declare const createFileViewerPreviewRequestResetState: () => FileViewerPreviewRequestResetState;
492
+ export declare const createFileViewerPreviewStateTarget: ({ filename, file, buffer, sourceUrl, renderedReady, progressiveReady, }: CreateFileViewerPreviewStateTargetInput) => MutableFileViewerPreviewState;
493
+ export declare const applyFileViewerPreviewRequestResetState: <Target extends MutableFileViewerPreviewRequestState>(target: Target, state?: FileViewerPreviewRequestResetState) => Target;
494
+ export declare const commitFileViewerPreviewRequestStartState: ({ reason, requestController, previewTarget, onClearRenderedContent, onClearError, }: CommitFileViewerPreviewRequestStartStateInput) => number;
495
+ export declare const cancelFileViewerPreviewRequest: ({ reason, requestController, previewTarget, onClearRenderedContent, onClearError, }: CancelFileViewerPreviewRequestInput) => number;
496
+ export declare const runFileViewerPreviewSourceChange: ({ onRefreshPreview, }?: RunFileViewerPreviewSourceChangeInput) => unknown;
497
+ export declare const runFileViewerPreviewComponentUnmount: ({ reason, onCancelPreview, onResetLoading, onStopZoomObserver, }?: RunFileViewerPreviewComponentUnmountInput) => FileViewerPreviewComponentUnmountState;
498
+ export declare const applyFileViewerEmptyPreviewState: <Target extends MutableFileViewerPreviewState>(target: Target, state?: FileViewerEmptyPreviewState) => Target;
499
+ export declare const commitFileViewerEmptyPreviewResetState: ({ previewTarget, state, reason, onClearRenderedContent, onResetLoading, }: CommitFileViewerEmptyPreviewResetStateInput) => MutableFileViewerPreviewState;
500
+ export declare const runFileViewerPreviewRequest: <LocalResult = unknown, RemoteResult = unknown>({ file, url, reason, requestController, previewTarget, onPreviewLocalFile, onPreviewRemoteFile, onClearRenderedContent, onClearError, onResetLoading, }: RunFileViewerPreviewRequestInput<LocalResult, RemoteResult>) => Promise<FileViewerPreviewRequestRunState<LocalResult, RemoteResult>>;
501
+ export declare const createFileViewerReadPreviewState: ({ file, buffer, sourceUrl, fallbackFilename, }: CreateFileViewerReadPreviewStateInput) => FileViewerReadPreviewState;
502
+ export declare const applyFileViewerReadPreviewState: <Target extends MutableFileViewerReadPreviewState>(target: Target, state: FileViewerReadPreviewState) => Target;
503
+ export declare const applyFileViewerPreviewSourceUrlState: <Target extends MutableFileViewerPreviewSourceUrlState>(target: Target, sourceUrl?: string | null) => Target;
504
+ export declare const applyFileViewerPreviewFilenameState: <Target extends MutableFileViewerPreviewFilenameState>(target: Target, filename?: string, fallbackFilename?: string) => Target;
505
+ export declare const applyFileViewerRenderReadinessState: <Target extends MutableFileViewerRenderReadinessState>(target: Target, state: Partial<FileViewerRenderReadinessState>) => Target;
506
+ export declare const commitFileViewerRenderCompleteState: <Session = unknown>({ version, session, buildState, readinessTarget, onSession, onActiveDocumentContext, onLifecycle, onClearLoadStarted, }: CommitFileViewerRenderCompleteStateInput<Session>) => FileViewerRenderCompleteState;
507
+ 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>>;
509
+ 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>;
512
+ export declare const finalizeFileViewerPreviewLoadState: ({ version, isCurrent, onClearLoadStarted, onStopLoading, }: FinalizeFileViewerPreviewLoadStateInput) => void;
513
+ export declare const resolveFileViewerLoadStartMessage: (source: FileViewerLifecycleContext["source"]) => "正在下载文件资源..." | "正在解析文件内容...";
514
+ 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;
516
+ export declare const createFileViewerRenderCompleteState: ({ version, source, filename, file, sourceUrl, bufferSize, startedAt, timestamp, lifecycleState, }: CreateFileViewerRenderCompleteStateInput) => FileViewerRenderCompleteState;
517
+ export declare const resolveFileViewerFileRefSourcePlan: ({ source, currentFilename, fallbackFilename, }: ResolveFileViewerFileRefSourcePlanInput) => FileViewerFileRefSourcePlan;
518
+ export declare const normalizePdfStreamingMode: (mode: FileViewerPdfOptions["streaming"]) => true | false | "same-origin";
519
+ export declare const isSameOriginUrl: (url: string, pageHref: string) => boolean;
520
+ export declare const shouldStreamPdfUrl: ({ extension, pageHref, streaming, url, }: {
521
+ extension: string;
522
+ pageHref: string;
523
+ streaming?: FileViewerPdfOptions["streaming"];
524
+ url: string;
525
+ }) => boolean;
526
+ export interface FileViewerRemoteSourcePlan {
527
+ readonly url: string;
528
+ readonly filename: string;
529
+ readonly extension: string;
530
+ readonly streamPdf: boolean;
531
+ }
532
+ export interface CommitFileViewerRemoteDownloadStateInput {
533
+ version: number;
534
+ data?: FileViewerFileRef | null;
535
+ currentFilename?: string;
536
+ fallbackFilename?: string;
537
+ isCurrent: (version: number) => boolean;
538
+ onMissingData?: () => void;
539
+ onSetLoadingMessage?: (message: string) => void;
540
+ }
541
+ export type FileViewerRemoteDownloadState = {
542
+ readonly stale: true;
543
+ readonly missing: false;
544
+ readonly source: null;
545
+ } | {
546
+ readonly stale: false;
547
+ readonly missing: true;
548
+ readonly source: null;
549
+ } | {
550
+ readonly stale: false;
551
+ readonly missing: false;
552
+ readonly source: FileViewerFileRefSourcePlan;
553
+ };
554
+ export interface FileViewerLocationLike {
555
+ href?: string | null;
556
+ }
557
+ export declare const resolveFileViewerPageHref: (locationLike?: FileViewerLocationLike) => string | undefined;
558
+ export declare const resolveFileViewerRemoteSourcePlan: ({ filename, fallbackFilename, pageHref, streaming, url, }: {
559
+ filename?: string;
560
+ fallbackFilename?: string;
561
+ pageHref?: string;
562
+ streaming?: FileViewerPdfOptions["streaming"];
563
+ url: string;
564
+ }) => FileViewerRemoteSourcePlan;
565
+ export declare const commitFileViewerRemoteDownloadState: ({ version, data, currentFilename, fallbackFilename, isCurrent, onMissingData, onSetLoadingMessage, }: CommitFileViewerRemoteDownloadStateInput) => FileViewerRemoteDownloadState;
566
+ export declare const createFileViewerStreamingPdfPlaceholderFile: (filename?: string) => File;