@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.
- package/LICENSE +160 -0
- package/README.en.md +78 -0
- package/README.md +83 -0
- package/dist/assets.d.ts +62 -0
- package/dist/assets.js +260 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +1 -0
- package/dist/capabilities.d.ts +24 -0
- package/dist/capabilities.js +95 -0
- package/dist/document.d.ts +9 -0
- package/dist/document.js +86 -0
- package/dist/documentDom/anchors.d.ts +7 -0
- package/dist/documentDom/anchors.js +196 -0
- package/dist/documentDom/index.d.ts +5 -0
- package/dist/documentDom/index.js +3 -0
- package/dist/documentDom/providers.d.ts +13 -0
- package/dist/documentDom/providers.js +52 -0
- package/dist/documentDom/scroll.d.ts +12 -0
- package/dist/documentDom/scroll.js +42 -0
- package/dist/documentDom.d.ts +5 -0
- package/dist/documentDom.js +3 -0
- package/dist/documentEvents.d.ts +73 -0
- package/dist/documentEvents.js +150 -0
- package/dist/documentSearch.d.ts +50 -0
- package/dist/documentSearch.js +459 -0
- package/dist/documentZoom.d.ts +47 -0
- package/dist/documentZoom.js +184 -0
- package/dist/export.d.ts +26 -0
- package/dist/export.js +466 -0
- package/dist/formats.d.ts +305 -0
- package/dist/formats.js +207 -0
- package/dist/headless.d.ts +25 -0
- package/dist/headless.js +14 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.js +118 -0
- package/dist/lifecycleFacade.d.ts +46 -0
- package/dist/lifecycleFacade.js +68 -0
- package/dist/loading.d.ts +59 -0
- package/dist/loading.js +489 -0
- package/dist/operations.d.ts +287 -0
- package/dist/operations.js +485 -0
- package/dist/options.d.ts +16 -0
- package/dist/options.js +92 -0
- package/dist/presentation.d.ts +14 -0
- package/dist/presentation.js +16 -0
- package/dist/printLayout.d.ts +19 -0
- package/dist/printLayout.js +83 -0
- package/dist/registry.d.ts +2 -0
- package/dist/registry.js +63 -0
- package/dist/rendererDispatcher.d.ts +21 -0
- package/dist/rendererDispatcher.js +42 -0
- package/dist/rendererHandler.d.ts +165 -0
- package/dist/rendererHandler.js +354 -0
- package/dist/renderers/archive.d.ts +2 -0
- package/dist/renderers/archive.js +547 -0
- package/dist/renderers/archiveCache.d.ts +10 -0
- package/dist/renderers/archiveCache.js +96 -0
- package/dist/renderers/archiveFallback.d.ts +7 -0
- package/dist/renderers/archiveFallback.js +166 -0
- package/dist/renderers/archiveShared.d.ts +23 -0
- package/dist/renderers/archiveShared.js +71 -0
- package/dist/renderers/audio.d.ts +8 -0
- package/dist/renderers/audio.js +219 -0
- package/dist/renderers/cad.d.ts +2 -0
- package/dist/renderers/cad.js +445 -0
- package/dist/renderers/code.d.ts +11 -0
- package/dist/renderers/code.js +233 -0
- package/dist/renderers/data.d.ts +7 -0
- package/dist/renderers/data.js +370 -0
- package/dist/renderers/drawing.d.ts +10 -0
- package/dist/renderers/drawing.js +537 -0
- package/dist/renderers/eda.d.ts +2 -0
- package/dist/renderers/eda.js +434 -0
- package/dist/renderers/edaParser.d.ts +77 -0
- package/dist/renderers/edaParser.js +569 -0
- package/dist/renderers/email.d.ts +2 -0
- package/dist/renderers/email.js +463 -0
- package/dist/renderers/epub.d.ts +2 -0
- package/dist/renderers/epub.js +330 -0
- package/dist/renderers/geo.d.ts +2 -0
- package/dist/renderers/geo.js +284 -0
- package/dist/renderers/image.d.ts +2 -0
- package/dist/renderers/image.js +179 -0
- package/dist/renderers/index.d.ts +21 -0
- package/dist/renderers/index.js +207 -0
- package/dist/renderers/markdown.d.ts +2 -0
- package/dist/renderers/markdown.js +83 -0
- package/dist/renderers/model.d.ts +2 -0
- package/dist/renderers/model.js +566 -0
- package/dist/renderers/ofd.d.ts +2 -0
- package/dist/renderers/ofd.js +255 -0
- package/dist/renderers/openDocument.d.ts +2 -0
- package/dist/renderers/openDocument.js +122 -0
- package/dist/renderers/pdf.d.ts +3 -0
- package/dist/renderers/pdf.js +846 -0
- package/dist/renderers/pdfStyles.d.ts +1 -0
- package/dist/renderers/pdfStyles.js +1 -0
- package/dist/renderers/pptx.d.ts +2 -0
- package/dist/renderers/pptx.js +202 -0
- package/dist/renderers/spreadsheet/state.d.ts +80 -0
- package/dist/renderers/spreadsheet/state.js +96 -0
- package/dist/renderers/spreadsheet/view.d.ts +25 -0
- package/dist/renderers/spreadsheet/view.js +833 -0
- package/dist/renderers/spreadsheet/worker/index.d.ts +2 -0
- package/dist/renderers/spreadsheet/worker/index.js +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +73 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +623 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +2 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/color.js +73 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/index.js +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +18 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +106 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +11 -0
- package/dist/renderers/spreadsheet/worker/type.d.ts +57 -0
- package/dist/renderers/spreadsheet/worker/type.js +1 -0
- package/dist/renderers/spreadsheet.d.ts +3 -0
- package/dist/renderers/spreadsheet.js +929 -0
- package/dist/renderers/typst.d.ts +8 -0
- package/dist/renderers/typst.js +415 -0
- package/dist/renderers/umd/parser.d.ts +30 -0
- package/dist/renderers/umd/parser.js +408 -0
- package/dist/renderers/umd.d.ts +2 -0
- package/dist/renderers/umd.js +297 -0
- package/dist/renderers/video.d.ts +8 -0
- package/dist/renderers/video.js +108 -0
- package/dist/renderers/wordDoc.d.ts +5 -0
- package/dist/renderers/wordDoc.js +284 -0
- package/dist/renderers/wordDocx.d.ts +5 -0
- package/dist/renderers/wordDocx.js +501 -0
- package/dist/renderers/wordDocx.worker.d.ts +1 -0
- package/dist/renderers/wordDocx.worker.js +96 -0
- package/dist/source.d.ts +18 -0
- package/dist/source.js +152 -0
- package/dist/sourceLoading.d.ts +566 -0
- package/dist/sourceLoading.js +918 -0
- package/dist/state.d.ts +16 -0
- package/dist/state.js +81 -0
- package/dist/types.d.ts +446 -0
- package/dist/types.js +1 -0
- package/dist/viewer.d.ts +8 -0
- package/dist/viewer.js +285 -0
- package/dist/viewerOperations.d.ts +88 -0
- package/dist/viewerOperations.js +242 -0
- package/dist/watermark.d.ts +15 -0
- package/dist/watermark.js +81 -0
- package/dist/worker.d.ts +34 -0
- package/dist/worker.js +101 -0
- package/package.json +109 -0
- package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +183 -0
- package/vendor/ofd/dltech/jbig2/ccitt.js +1070 -0
- package/vendor/ofd/dltech/jbig2/compatibility.js +12 -0
- package/vendor/ofd/dltech/jbig2/core_utils.js +180 -0
- package/vendor/ofd/dltech/jbig2/is_node.js +27 -0
- package/vendor/ofd/dltech/jbig2/jbig2.js +2589 -0
- package/vendor/ofd/dltech/jbig2/jbig2_stream.js +81 -0
- package/vendor/ofd/dltech/jbig2/primitives.js +387 -0
- package/vendor/ofd/dltech/jbig2/stream.js +1348 -0
- package/vendor/ofd/dltech/jbig2/util.js +972 -0
- package/vendor/ofd/dltech/ofd/ofd.d.ts +11 -0
- package/vendor/ofd/dltech/ofd/ofd.js +100 -0
- package/vendor/ofd/dltech/ofd/ofd_parser.js +395 -0
- package/vendor/ofd/dltech/ofd/ofd_render.js +473 -0
- package/vendor/ofd/dltech/ofd/ofd_util.js +350 -0
- package/vendor/ofd/dltech/ofd/pipeline.js +26 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const CSS_PIXELS_PER_INCH = 96;
|
|
2
|
+
const normalizeCssPixels = (value) => {
|
|
3
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
4
|
+
return 0;
|
|
5
|
+
}
|
|
6
|
+
return Number(value.toFixed(3));
|
|
7
|
+
};
|
|
8
|
+
export const formatCssPixels = (value) => `${normalizeCssPixels(value)}px`;
|
|
9
|
+
const formatCssInches = (value) => `${Number((normalizeCssPixels(value) / CSS_PIXELS_PER_INCH).toFixed(4))}in`;
|
|
10
|
+
const readPositiveCssNumber = (value) => {
|
|
11
|
+
const parsed = Number.parseFloat(value);
|
|
12
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Browser print helper. DOM measurement belongs in the core browser layer
|
|
16
|
+
* because it depends on CSS layout and HTMLElement.
|
|
17
|
+
*/
|
|
18
|
+
export const getElementPrintPageSize = (element, fallback = {}) => {
|
|
19
|
+
const style = window.getComputedStyle(element);
|
|
20
|
+
const width = readPositiveCssNumber(style.width) ||
|
|
21
|
+
element.offsetWidth ||
|
|
22
|
+
fallback.width ||
|
|
23
|
+
element.getBoundingClientRect().width;
|
|
24
|
+
const height = readPositiveCssNumber(style.height) ||
|
|
25
|
+
readPositiveCssNumber(style.minHeight) ||
|
|
26
|
+
element.offsetHeight ||
|
|
27
|
+
fallback.height ||
|
|
28
|
+
element.getBoundingClientRect().height;
|
|
29
|
+
return {
|
|
30
|
+
width: normalizeCssPixels(width),
|
|
31
|
+
height: normalizeCssPixels(height),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export const applyPrintPageSize = (element, size, options = {}) => {
|
|
35
|
+
const width = formatCssPixels(size.width);
|
|
36
|
+
const height = formatCssPixels(size.height);
|
|
37
|
+
const heightMode = options.heightMode || 'fixed';
|
|
38
|
+
element.classList.add('viewer-print-page');
|
|
39
|
+
element.style.setProperty('--viewer-print-page-width', width);
|
|
40
|
+
element.style.setProperty('--viewer-print-page-height', height);
|
|
41
|
+
element.style.width = width;
|
|
42
|
+
element.style.maxWidth = 'none';
|
|
43
|
+
element.style.minHeight = height;
|
|
44
|
+
if (heightMode === 'fixed') {
|
|
45
|
+
element.style.height = height;
|
|
46
|
+
element.style.overflow = 'hidden';
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
element.style.height = 'auto';
|
|
50
|
+
element.style.overflow = 'visible';
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
export const buildPrintPageStyle = ({ selector, width, height, heightMode = 'fixed', }) => {
|
|
54
|
+
const pageWidth = formatCssPixels(width);
|
|
55
|
+
const pageHeight = formatCssPixels(height);
|
|
56
|
+
const heightRule = heightMode === 'fixed'
|
|
57
|
+
? `height:${pageHeight}!important;min-height:${pageHeight}!important;overflow:hidden!important;`
|
|
58
|
+
: `height:auto!important;min-height:${pageHeight}!important;overflow:visible!important;`;
|
|
59
|
+
return `
|
|
60
|
+
@page { size: ${formatCssInches(width)} ${formatCssInches(height)}; margin: 0; }
|
|
61
|
+
@media print {
|
|
62
|
+
html, body {
|
|
63
|
+
width: ${pageWidth};
|
|
64
|
+
min-width: ${pageWidth};
|
|
65
|
+
background: #ffffff !important;
|
|
66
|
+
}
|
|
67
|
+
${selector} {
|
|
68
|
+
width: ${pageWidth}!important;
|
|
69
|
+
max-width: none!important;
|
|
70
|
+
${heightRule}
|
|
71
|
+
margin: 0!important;
|
|
72
|
+
box-shadow: none!important;
|
|
73
|
+
border: 0!important;
|
|
74
|
+
break-after: page;
|
|
75
|
+
page-break-after: always;
|
|
76
|
+
}
|
|
77
|
+
${selector}:last-child {
|
|
78
|
+
break-after: auto;
|
|
79
|
+
page-break-after: auto;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
`;
|
|
83
|
+
};
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DEFAULT_RENDERER_DEFINITIONS } from './formats.js';
|
|
2
|
+
import { normalizeFileExtension } from './source.js';
|
|
3
|
+
const normalizeDefinition = (definition) => ({
|
|
4
|
+
...definition,
|
|
5
|
+
extensions: definition.extensions.map(normalizeFileExtension),
|
|
6
|
+
});
|
|
7
|
+
export const createRendererRegistry = (initialDefinitions = DEFAULT_RENDERER_DEFINITIONS) => {
|
|
8
|
+
const byId = new Map();
|
|
9
|
+
const byExtension = new Map();
|
|
10
|
+
const register = (definition) => {
|
|
11
|
+
const normalized = normalizeDefinition(definition);
|
|
12
|
+
const existing = byId.get(normalized.id);
|
|
13
|
+
if (existing) {
|
|
14
|
+
existing.extensions.forEach(extension => {
|
|
15
|
+
var _a;
|
|
16
|
+
if (((_a = byExtension.get(extension)) === null || _a === void 0 ? void 0 : _a.id) === existing.id) {
|
|
17
|
+
byExtension.delete(extension);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
byId.set(normalized.id, normalized);
|
|
22
|
+
normalized.extensions.forEach(extension => {
|
|
23
|
+
const owner = byExtension.get(extension);
|
|
24
|
+
if (owner && owner.id !== normalized.id) {
|
|
25
|
+
throw new Error(`File extension "${extension}" is already registered by renderer "${owner.id}".`);
|
|
26
|
+
}
|
|
27
|
+
byExtension.set(extension, normalized);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
initialDefinitions.forEach(register);
|
|
31
|
+
return {
|
|
32
|
+
register,
|
|
33
|
+
unregister(id) {
|
|
34
|
+
const existing = byId.get(id);
|
|
35
|
+
if (!existing) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
existing.extensions.forEach(extension => {
|
|
39
|
+
var _a;
|
|
40
|
+
if (((_a = byExtension.get(extension)) === null || _a === void 0 ? void 0 : _a.id) === id) {
|
|
41
|
+
byExtension.delete(extension);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
byId.delete(id);
|
|
45
|
+
return true;
|
|
46
|
+
},
|
|
47
|
+
getById(id) {
|
|
48
|
+
return byId.get(id);
|
|
49
|
+
},
|
|
50
|
+
getByExtension(extension) {
|
|
51
|
+
return byExtension.get(normalizeFileExtension(extension));
|
|
52
|
+
},
|
|
53
|
+
hasExtension(extension) {
|
|
54
|
+
return byExtension.has(normalizeFileExtension(extension));
|
|
55
|
+
},
|
|
56
|
+
list() {
|
|
57
|
+
return Array.from(byId.values());
|
|
58
|
+
},
|
|
59
|
+
listExtensions() {
|
|
60
|
+
return Array.from(byExtension.keys()).sort();
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RendererRegistry } from './types';
|
|
2
|
+
export interface FileViewerRendererHandlerEntry<Handler> {
|
|
3
|
+
rendererId: string;
|
|
4
|
+
handler: Handler;
|
|
5
|
+
}
|
|
6
|
+
export interface CreateFileViewerRendererDispatcherOptions<Handler> {
|
|
7
|
+
registry?: RendererRegistry;
|
|
8
|
+
handlers: Iterable<FileViewerRendererHandlerEntry<Handler>>;
|
|
9
|
+
fallbackHandler?: Handler;
|
|
10
|
+
fallbackKey?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FileViewerRendererDispatcher<Handler> {
|
|
13
|
+
handlersByRendererId: Map<string, Handler>;
|
|
14
|
+
handlersByExtension: Map<string, Handler>;
|
|
15
|
+
missingRendererIds: string[];
|
|
16
|
+
get(extension: string): Handler | undefined;
|
|
17
|
+
resolve(extension: string): Handler | undefined;
|
|
18
|
+
has(extension: string): boolean;
|
|
19
|
+
listExtensions(): string[];
|
|
20
|
+
}
|
|
21
|
+
export declare const createFileViewerRendererDispatcher: <Handler>({ registry, handlers, fallbackHandler, fallbackKey, }: CreateFileViewerRendererDispatcherOptions<Handler>) => FileViewerRendererDispatcher<Handler>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DEFAULT_RENDERER_DEFINITIONS } from './formats.js';
|
|
2
|
+
import { createRendererRegistry } from './registry.js';
|
|
3
|
+
import { normalizeFileExtension } from './source.js';
|
|
4
|
+
export const createFileViewerRendererDispatcher = ({ registry = createRendererRegistry(DEFAULT_RENDERER_DEFINITIONS), handlers, fallbackHandler, fallbackKey = 'error', }) => {
|
|
5
|
+
const handlersByRendererId = Array.from(handlers).reduce((result, entry) => {
|
|
6
|
+
result.set(entry.rendererId, entry.handler);
|
|
7
|
+
return result;
|
|
8
|
+
}, new Map());
|
|
9
|
+
const handlersByExtension = new Map();
|
|
10
|
+
const missingRendererIds = [];
|
|
11
|
+
registry.list().forEach(definition => {
|
|
12
|
+
const handler = handlersByRendererId.get(definition.id);
|
|
13
|
+
if (!handler) {
|
|
14
|
+
missingRendererIds.push(definition.id);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
definition.extensions.forEach(extension => {
|
|
18
|
+
handlersByExtension.set(normalizeFileExtension(extension), handler);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
if (fallbackHandler && fallbackKey) {
|
|
22
|
+
handlersByExtension.set(normalizeFileExtension(fallbackKey), fallbackHandler);
|
|
23
|
+
}
|
|
24
|
+
const get = (extension) => {
|
|
25
|
+
return handlersByExtension.get(normalizeFileExtension(extension));
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
handlersByRendererId,
|
|
29
|
+
handlersByExtension,
|
|
30
|
+
missingRendererIds,
|
|
31
|
+
get,
|
|
32
|
+
resolve(extension) {
|
|
33
|
+
return get(extension) || (fallbackKey ? get(fallbackKey) : undefined);
|
|
34
|
+
},
|
|
35
|
+
has(extension) {
|
|
36
|
+
return handlersByExtension.has(normalizeFileExtension(extension));
|
|
37
|
+
},
|
|
38
|
+
listExtensions() {
|
|
39
|
+
return Array.from(handlersByExtension.keys()).sort();
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { FileViewerRendererDispatcher } from './rendererDispatcher';
|
|
2
|
+
import { type FileViewerMutableAccessor, type MutableFileViewerRenderReadinessState } from './sourceLoading';
|
|
3
|
+
import type { FileRenderExportAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from './types';
|
|
4
|
+
export declare const FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE = "\u9884\u89C8\u5185\u5BB9\u5378\u8F7D\u5931\u8D25";
|
|
5
|
+
export interface ResolveFileViewerRenderSessionDisposeErrorMessageInput {
|
|
6
|
+
message?: string;
|
|
7
|
+
}
|
|
8
|
+
export type FileViewerRenderSessionDisposeErrorLogger = (message: string, error: unknown) => void;
|
|
9
|
+
export interface ReportFileViewerRenderSessionDisposeErrorInput extends ResolveFileViewerRenderSessionDisposeErrorMessageInput {
|
|
10
|
+
error: unknown;
|
|
11
|
+
onLogError?: FileViewerRenderSessionDisposeErrorLogger | null;
|
|
12
|
+
}
|
|
13
|
+
export interface RenderFileViewerHandlerInput<Rendered = unknown, Target extends HTMLElement = HTMLElement> {
|
|
14
|
+
dispatcher: Pick<FileViewerRendererDispatcher<FileRenderHandler<Rendered, Target>>, 'resolve'>;
|
|
15
|
+
buffer: ArrayBuffer;
|
|
16
|
+
target: Target;
|
|
17
|
+
type?: string;
|
|
18
|
+
context?: FileRenderContext;
|
|
19
|
+
throwOnMissingHandler?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateFileRenderHandlerLoaderOptions<Rendered = unknown, Target extends HTMLElement = HTMLElement> {
|
|
22
|
+
handler: FileRenderHandler<Rendered, Target>;
|
|
23
|
+
getTarget?: (context: RendererLoadContext) => Target;
|
|
24
|
+
createContext?: (context: RendererLoadContext) => FileRenderContext;
|
|
25
|
+
destroy?: (rendered: Rendered, context: RendererLoadContext) => void | Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export interface FileRenderHandlerRendererSession<Rendered = unknown> extends RendererSession {
|
|
28
|
+
rendered: Rendered;
|
|
29
|
+
}
|
|
30
|
+
export interface DisposeFileViewerRendererSessionOptions {
|
|
31
|
+
onError?: (error: unknown) => void;
|
|
32
|
+
}
|
|
33
|
+
export interface FileViewerRenderSurfaceState<Session extends RendererSession = RendererSession> {
|
|
34
|
+
session: Session | null;
|
|
35
|
+
exportAdapter: FileRenderExportAdapter | null;
|
|
36
|
+
}
|
|
37
|
+
export type MutableFileViewerRenderSurfaceState<Session extends RendererSession = RendererSession> = FileViewerRenderSurfaceState<Session>;
|
|
38
|
+
export interface CreateFileViewerRenderReadinessTargetInput {
|
|
39
|
+
renderedReady: FileViewerMutableAccessor<boolean>;
|
|
40
|
+
progressiveReady: FileViewerMutableAccessor<boolean>;
|
|
41
|
+
}
|
|
42
|
+
export interface CreateFileViewerRenderSurfaceStateTargetInput<Session extends RendererSession = RendererSession> {
|
|
43
|
+
session: FileViewerMutableAccessor<Session | null>;
|
|
44
|
+
exportAdapter: FileViewerMutableAccessor<FileRenderExportAdapter | null>;
|
|
45
|
+
}
|
|
46
|
+
export interface CreateFileViewerRenderTargetOptions {
|
|
47
|
+
className?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ResetFileViewerRenderSurfaceInput<Session extends RendererSession = RendererSession> {
|
|
50
|
+
surfaceState: MutableFileViewerRenderSurfaceState<Session>;
|
|
51
|
+
readinessState: MutableFileViewerRenderReadinessState;
|
|
52
|
+
container?: HTMLElement | null;
|
|
53
|
+
disposeOptions?: DisposeFileViewerRendererSessionOptions;
|
|
54
|
+
}
|
|
55
|
+
export interface FileViewerRenderSurfaceMountContext<Session extends RendererSession = RendererSession> {
|
|
56
|
+
buffer: ArrayBuffer;
|
|
57
|
+
file: File;
|
|
58
|
+
version: number;
|
|
59
|
+
type: string;
|
|
60
|
+
target: HTMLElement;
|
|
61
|
+
filename: string;
|
|
62
|
+
sourceUrl?: string;
|
|
63
|
+
streamUrl?: string;
|
|
64
|
+
onProgressiveRender: () => void;
|
|
65
|
+
registerExportAdapter: (adapter: FileRenderExportAdapter | null) => void;
|
|
66
|
+
surfaceState: MutableFileViewerRenderSurfaceState<Session>;
|
|
67
|
+
readinessState: MutableFileViewerRenderReadinessState;
|
|
68
|
+
}
|
|
69
|
+
export interface RunFileViewerRenderSurfaceMountInput<Session extends RendererSession = RendererSession> {
|
|
70
|
+
buffer: ArrayBuffer;
|
|
71
|
+
file: File;
|
|
72
|
+
version: number;
|
|
73
|
+
sourceUrl?: string;
|
|
74
|
+
streamUrl?: string;
|
|
75
|
+
getContainer: () => HTMLElement | null | undefined;
|
|
76
|
+
surfaceState: MutableFileViewerRenderSurfaceState<Session>;
|
|
77
|
+
readinessState: MutableFileViewerRenderReadinessState;
|
|
78
|
+
isCurrent: (version: number) => boolean;
|
|
79
|
+
clearRenderedContent: (reason?: FileViewerLifecycleContext['reason']) => void;
|
|
80
|
+
render: (context: FileViewerRenderSurfaceMountContext<Session>) => Promise<Session | undefined>;
|
|
81
|
+
waitForContainer?: () => Promise<unknown> | unknown;
|
|
82
|
+
waitForPaint?: () => Promise<unknown> | unknown;
|
|
83
|
+
disposeSession?: (session?: Session | null) => void;
|
|
84
|
+
onStartZoomObserver?: () => void;
|
|
85
|
+
onRefreshDocumentIndex?: () => Promise<unknown> | unknown;
|
|
86
|
+
onRefreshZoomProvider?: () => void;
|
|
87
|
+
}
|
|
88
|
+
export interface RunFileViewerRenderSurfaceClearInput<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
89
|
+
reason?: FileViewerLifecycleContext['reason'];
|
|
90
|
+
surfaceState: MutableFileViewerRenderSurfaceState<Session>;
|
|
91
|
+
readinessState: MutableFileViewerRenderReadinessState;
|
|
92
|
+
container?: HTMLElement | null;
|
|
93
|
+
disposeOptions?: DisposeFileViewerRendererSessionOptions;
|
|
94
|
+
onUnloadStart?: (reason: FileViewerLifecycleContext['reason']) => UnloadContext;
|
|
95
|
+
onUnloadComplete?: (context: UnloadContext | undefined, reason: FileViewerLifecycleContext['reason']) => void;
|
|
96
|
+
onClearActiveDocumentContext?: () => void;
|
|
97
|
+
onClearDocumentState?: () => void;
|
|
98
|
+
onStopZoomObserver?: () => void;
|
|
99
|
+
onClearZoomProvider?: () => void;
|
|
100
|
+
}
|
|
101
|
+
export interface FileViewerRenderSurfaceClearState<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
102
|
+
reason: FileViewerLifecycleContext['reason'];
|
|
103
|
+
unloadContext: UnloadContext | undefined;
|
|
104
|
+
session: Session | null | undefined;
|
|
105
|
+
}
|
|
106
|
+
export interface FileViewerRenderSurfaceActionHandlers<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
107
|
+
destroyRenderSession: (session?: Session | null) => void;
|
|
108
|
+
setActiveRenderSession: (session: Session | null) => MutableFileViewerRenderSurfaceState<Session>;
|
|
109
|
+
clearRenderedContent: (reason?: FileViewerLifecycleContext['reason']) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
|
|
110
|
+
mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string) => Promise<Session | undefined>;
|
|
111
|
+
}
|
|
112
|
+
export interface CreateFileViewerRenderSurfaceActionHandlersInput<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
113
|
+
getContainer: () => HTMLElement | null | undefined;
|
|
114
|
+
surfaceState: MutableFileViewerRenderSurfaceState<Session>;
|
|
115
|
+
readinessState: MutableFileViewerRenderReadinessState;
|
|
116
|
+
isCurrent: (version: number) => boolean;
|
|
117
|
+
render: (context: FileViewerRenderSurfaceMountContext<Session>) => Promise<Session | undefined>;
|
|
118
|
+
waitForContainer?: () => Promise<unknown> | unknown;
|
|
119
|
+
waitForPaint?: () => Promise<unknown> | unknown;
|
|
120
|
+
disposeOptions?: DisposeFileViewerRendererSessionOptions;
|
|
121
|
+
onUnloadStart?: (reason: FileViewerLifecycleContext['reason']) => UnloadContext;
|
|
122
|
+
onUnloadComplete?: (context: UnloadContext | undefined, reason: FileViewerLifecycleContext['reason']) => void;
|
|
123
|
+
onClearActiveDocumentContext?: () => void;
|
|
124
|
+
onClearDocumentState?: () => void;
|
|
125
|
+
onStartZoomObserver?: () => void;
|
|
126
|
+
onStopZoomObserver?: () => void;
|
|
127
|
+
onClearZoomProvider?: () => void;
|
|
128
|
+
onRefreshDocumentIndex?: () => Promise<unknown> | unknown;
|
|
129
|
+
onRefreshZoomProvider?: () => void;
|
|
130
|
+
}
|
|
131
|
+
export declare const DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS = "file-render";
|
|
132
|
+
export declare const clearFileViewerRenderSurface: (container?: HTMLElement | null) => void;
|
|
133
|
+
export declare const createFileViewerRenderTarget: (container: HTMLElement, options?: CreateFileViewerRenderTargetOptions) => HTMLDivElement;
|
|
134
|
+
export declare const removeFileViewerRenderTarget: (container: HTMLElement, target: HTMLElement) => boolean;
|
|
135
|
+
export declare const createFileViewerRenderSurfaceState: <Session extends RendererSession = RendererSession>() => FileViewerRenderSurfaceState<Session>;
|
|
136
|
+
export declare const createFileViewerRenderReadinessTarget: ({ renderedReady, progressiveReady, }: CreateFileViewerRenderReadinessTargetInput) => MutableFileViewerRenderReadinessState;
|
|
137
|
+
export declare const createFileViewerRenderSurfaceStateTarget: <Session extends RendererSession = RendererSession>({ session, exportAdapter, }: CreateFileViewerRenderSurfaceStateTargetInput<Session>) => MutableFileViewerRenderSurfaceState<Session>;
|
|
138
|
+
export declare const applyFileViewerRenderSurfaceState: <Session extends RendererSession, Target extends MutableFileViewerRenderSurfaceState<Session>>(target: Target, state: Partial<FileViewerRenderSurfaceState<Session>>) => Target;
|
|
139
|
+
export declare const createFileRenderHandlerRendererSession: <Rendered = unknown>(rendered: Rendered, destroy?: () => void | Promise<void>) => FileRenderHandlerRendererSession<Rendered>;
|
|
140
|
+
export interface CreateFileRenderHandlerRegistryOptions<Rendered = unknown, Target extends HTMLElement = HTMLElement> extends Omit<CreateFileRenderHandlerLoaderOptions<Rendered, Target>, 'handler'> {
|
|
141
|
+
definitions?: readonly RendererDefinition[];
|
|
142
|
+
handlers: Iterable<{
|
|
143
|
+
rendererId: string;
|
|
144
|
+
handler: FileRenderHandler<Rendered, Target>;
|
|
145
|
+
}>;
|
|
146
|
+
}
|
|
147
|
+
export interface FileRenderHandlerRegistryResult<Rendered = unknown, Target extends HTMLElement = HTMLElement> {
|
|
148
|
+
registry: RendererRegistry;
|
|
149
|
+
dispatcher: FileViewerRendererDispatcher<FileRenderHandler<Rendered, Target>>;
|
|
150
|
+
missingRendererIds: string[];
|
|
151
|
+
}
|
|
152
|
+
export declare const disposeFileViewerRendered: (rendered?: unknown) => void | Promise<void>;
|
|
153
|
+
export declare const resolveFileViewerRenderSessionDisposeErrorMessage: ({ message, }?: ResolveFileViewerRenderSessionDisposeErrorMessageInput) => string;
|
|
154
|
+
export declare const DEFAULT_FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_LOGGER: FileViewerRenderSessionDisposeErrorLogger;
|
|
155
|
+
export declare const reportFileViewerRenderSessionDisposeError: ({ error, onLogError, ...messageInput }: ReportFileViewerRenderSessionDisposeErrorInput) => string;
|
|
156
|
+
export declare const disposeFileViewerRendererSession: (session?: RendererSession | null, options?: DisposeFileViewerRendererSessionOptions) => void;
|
|
157
|
+
export declare const disposeActiveFileViewerRendererSession: <Session extends RendererSession, Target extends MutableFileViewerRenderSurfaceState<Session>>(target: Target, options?: DisposeFileViewerRendererSessionOptions) => Session | null;
|
|
158
|
+
export declare const resetFileViewerRenderSurface: <Session extends RendererSession>({ surfaceState, readinessState, container, disposeOptions, }: ResetFileViewerRenderSurfaceInput<Session>) => Session | null;
|
|
159
|
+
export declare const runFileViewerRenderSurfaceClear: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ reason, surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, }: RunFileViewerRenderSurfaceClearInput<Session, UnloadContext>) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
|
|
160
|
+
export declare const runFileViewerRenderSurfaceMount: <Session extends RendererSession>({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint, disposeSession, onStartZoomObserver, onRefreshDocumentIndex, onRefreshZoomProvider, }: RunFileViewerRenderSurfaceMountInput<Session>) => Promise<Session | undefined>;
|
|
161
|
+
export declare const createFileViewerRenderSurfaceActionHandlers: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ getContainer, surfaceState, readinessState, isCurrent, render, waitForContainer, waitForPaint, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStartZoomObserver, onStopZoomObserver, onClearZoomProvider, onRefreshDocumentIndex, onRefreshZoomProvider, }: CreateFileViewerRenderSurfaceActionHandlersInput<Session, UnloadContext>) => FileViewerRenderSurfaceActionHandlers<Session, UnloadContext>;
|
|
162
|
+
export declare const buildFileRenderContextFromLoadContext: ({ source, options, registerExportAdapter, renderContext, }: RendererLoadContext) => FileRenderContext;
|
|
163
|
+
export declare const renderFileViewerHandler: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ dispatcher, buffer, target, type, context, throwOnMissingHandler, }: RenderFileViewerHandlerInput<Rendered, Target>) => Promise<Rendered | undefined>;
|
|
164
|
+
export declare const createFileRenderHandlerLoader: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ handler, getTarget, createContext, destroy, }: CreateFileRenderHandlerLoaderOptions<Rendered, Target>) => RendererLoader;
|
|
165
|
+
export declare const createFileRenderHandlerRegistry: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ definitions, handlers, getTarget, createContext, destroy, }: CreateFileRenderHandlerRegistryOptions<Rendered, Target>) => FileRenderHandlerRegistryResult<Rendered, Target>;
|