@file-viewer/core 2.1.13 → 2.1.15
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/contracts/types.d.ts +71 -1
- package/dist/features/document/dom/index.d.ts +2 -2
- package/dist/features/document/dom/index.js +1 -1
- package/dist/features/document/dom/providers.d.ts +7 -1
- package/dist/features/document/dom/providers.js +32 -0
- package/dist/features/document/viewState.d.ts +44 -0
- package/dist/features/document/viewState.js +308 -0
- package/dist/features/document/zoom.d.ts +2 -1
- package/dist/features/document/zoom.js +17 -4
- package/dist/headless.d.ts +2 -2
- package/dist/headless.js +1 -1
- package/dist/i18n/messages.js +4 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +3 -2
- package/dist/registry/capabilities.d.ts +2 -1
- package/dist/registry/capabilities.js +10 -0
- package/dist/renderers/image.js +53 -22
- package/dist/rendering/handler.d.ts +13 -4
- package/dist/rendering/handler.js +42 -8
- package/dist/source/loading.d.ts +2 -1
- package/dist/source/loading.js +2 -1
- package/dist/viewer/createViewer.js +34 -12
- package/package.json +1 -1
package/dist/headless.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// lifecycle operations, and renderer registry utilities without importing any
|
|
5
5
|
// framework wrapper. It is the safest entrypoint for React/Vue/Web packages.
|
|
6
6
|
export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerDrawioViewerScriptUrl, resolveFileViewerRendererAssets, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, } from './assets.js';
|
|
7
|
-
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
|
|
7
|
+
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
|
|
8
8
|
export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model.js';
|
|
9
9
|
export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats.js';
|
|
10
10
|
export { FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_OPERATION_LABELS, buildFileViewerLifecycleContext, buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, buildFileViewerOperationContextFromLifecycleState, cloneFileViewerOperationAvailability, createFileViewerLifecycleActions, createFileViewerLifecycleStateController, createFileViewerPublicApi, createFileViewerToolbarActions, createFileViewerToolbarControllerActionHandlers, createFileViewerToolbarZoomSyncSnapshot, DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER, DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER, dispatchFileViewerLifecycleEvent, dispatchFileViewerOperationAvailabilityChange, dispatchFileViewerOperationContextEvent, dispatchFileViewerZoomChange, emitFileViewerComponentLifecycleEvent, getFileViewerBeforeOperationHooks, getFileViewerLifecycleHookName, hasVisibleFileViewerToolbarActions, isFileViewerToolbarOperationPermitted, isFileViewerZoomButtonDisabled, normalizeFileViewerToolbar, reportFileViewerLifecycleHookError, reportFileViewerOperationError, resolveFileViewerBeforeOperationErrorMessage, resolveFileViewerLifecycleFallbackSource, resolveFileViewerLifecycleHookErrorMessage, resolveFileViewerOperationAvailability, resolveFileViewerToolbarPosition, resolveFileViewerToolbarState, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations.js';
|
package/dist/i18n/messages.js
CHANGED
|
@@ -195,7 +195,7 @@ const ZH_CN_MESSAGES = {
|
|
|
195
195
|
'psd.layers.hidden': '隐藏',
|
|
196
196
|
'drawing.error.viewerLoadFailed': 'diagrams.net viewer 加载失败',
|
|
197
197
|
'drawing.error.excalidrawEmpty': 'Excalidraw 文件中没有可预览图元',
|
|
198
|
-
'drawing.error.excalidrawTimeout': 'Excalidraw
|
|
198
|
+
'drawing.error.excalidrawTimeout': 'Excalidraw SVG 导出超时,自动切换 rough.js 兼容渲染',
|
|
199
199
|
'drawing.error.drawioParseFailed': 'Draw.io XML 解析失败:{message}',
|
|
200
200
|
'drawing.error.drawioNoModel': '当前 Draw.io 文件没有可直接渲染的 mxGraphModel。',
|
|
201
201
|
'drawing.error.drawioNoElements': '当前 Draw.io 文件没有可预览图元。',
|
|
@@ -203,7 +203,7 @@ const ZH_CN_MESSAGES = {
|
|
|
203
203
|
'drawing.error.drawioTimeout': 'diagrams.net 官方 Viewer 加载超时,自动切换本地 SVG 预览',
|
|
204
204
|
'drawing.error.svgParseFailed': 'SVG 解析失败',
|
|
205
205
|
'drawing.error.plantumlRenderFailed': 'PlantUML SVG 渲染失败:{status}',
|
|
206
|
-
'drawing.title.excalidraw': 'Excalidraw
|
|
206
|
+
'drawing.title.excalidraw': 'Excalidraw SVG 预览',
|
|
207
207
|
'drawing.title.mermaid': 'Mermaid SVG 预览',
|
|
208
208
|
'drawing.title.plantuml': 'PlantUML SVG 预览',
|
|
209
209
|
'drawing.title.drawio': 'Draw.io 离线 SVG 预览',
|
|
@@ -567,7 +567,7 @@ const EN_US_MESSAGES = {
|
|
|
567
567
|
'psd.layers.hidden': 'hidden',
|
|
568
568
|
'drawing.error.viewerLoadFailed': 'Failed to load the diagrams.net viewer',
|
|
569
569
|
'drawing.error.excalidrawEmpty': 'This Excalidraw file has no previewable elements',
|
|
570
|
-
'drawing.error.excalidrawTimeout': '
|
|
570
|
+
'drawing.error.excalidrawTimeout': 'Excalidraw SVG export timed out. Falling back to the rough.js renderer.',
|
|
571
571
|
'drawing.error.drawioParseFailed': 'Failed to parse Draw.io XML: {message}',
|
|
572
572
|
'drawing.error.drawioNoModel': 'This Draw.io file has no directly renderable mxGraphModel.',
|
|
573
573
|
'drawing.error.drawioNoElements': 'This Draw.io file has no previewable elements.',
|
|
@@ -575,7 +575,7 @@ const EN_US_MESSAGES = {
|
|
|
575
575
|
'drawing.error.drawioTimeout': 'Official diagrams.net Viewer timed out. Falling back to the local SVG preview.',
|
|
576
576
|
'drawing.error.svgParseFailed': 'Failed to parse SVG',
|
|
577
577
|
'drawing.error.plantumlRenderFailed': 'Failed to render PlantUML SVG: {status}',
|
|
578
|
-
'drawing.title.excalidraw': '
|
|
578
|
+
'drawing.title.excalidraw': 'Excalidraw SVG preview',
|
|
579
579
|
'drawing.title.mermaid': 'Mermaid SVG preview',
|
|
580
580
|
'drawing.title.plantuml': 'PlantUML SVG preview',
|
|
581
581
|
'drawing.title.drawio': 'Draw.io offline SVG preview',
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,9 @@ export { createFileViewerDocumentFeatureActions, createFileViewerDocumentFeature
|
|
|
8
8
|
export type { CreateFileViewerDocumentChangeSnapshotInput, FileViewerDocumentFeatureActionOptions, DispatchFileViewerLocationChangeInput, DispatchFileViewerSearchChangeInput, FileViewerDocumentChangeSnapshot, FileViewerDocumentFeatureActions, FileViewerDocumentFeatureControllerActionHandlers, FileViewerDocumentFeatureSearchController, CreateFileViewerDocumentFeatureActionsInput, CreateFileViewerDocumentFeatureControllerActionHandlersInput, ResolveFileViewerLocationChangeAnchorInput, } from './features/document/events';
|
|
9
9
|
export { applyFileViewerZoomState, clearFileViewerZoomControllerProvider, createFileViewerZoomChangeEmitter, createFileViewerZoomChangeState, cloneFileViewerZoomState, createFileViewerZoomController, createFileViewerZoomControllerActionHandlers, destroyFileViewerZoomController, observeFileViewerZoomController, refreshFileViewerZoomControllerProvider, runFileViewerZoomControllerAction, syncFileViewerZoomControllerState, } from './features/document/zoom';
|
|
10
10
|
export type { FileViewerZoomController, FileViewerZoomControllerActionHandlers, MutableFileViewerZoomState, } from './features/document/zoom';
|
|
11
|
-
export {
|
|
11
|
+
export { cloneFileViewerViewState, createFileViewerViewStateChange, createFileViewerViewStateChangeEmitter, createFileViewerViewStateController, createFileViewerViewStateControllerActionHandlers, registerFileViewerGenericViewStateProvider, } from './features/document/viewState';
|
|
12
|
+
export type { CreateFileViewerViewStateControllerOptions, FileViewerGenericViewStateProviderRegistration, FileViewerViewStateController, FileViewerViewStateControllerActionHandlers, RegisterFileViewerGenericViewStateProviderOptions, } from './features/document/viewState';
|
|
13
|
+
export { DEFAULT_FILE_VIEWER_ANCHOR_EXCLUDE_SELECTOR, DEFAULT_FILE_VIEWER_ANCHOR_SELECTOR, DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_CANDIDATE_SELECTOR, DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_SELECTOR, DEFAULT_FILE_VIEWER_SCROLLABLE_OVERFLOW_VALUES, collectFileViewerDocumentAnchors, findFileViewerAnchorForElement, findFileViewerSearchProvider, findFileViewerViewStateProvider, findFileViewerZoomProvider, getCurrentFileViewerDocumentAnchor, getFileViewerScrollableRange, isFileViewerScrollableElement, registerFileViewerSearchProvider, registerFileViewerViewStateProvider, registerFileViewerZoomProvider, resolveFileViewerScrollContainer, scrollToFileViewerDocumentAnchor, unregisterFileViewerSearchProvider, unregisterFileViewerViewStateProvider, unregisterFileViewerZoomProvider, } from './features/document/dom';
|
|
12
14
|
export { buildFileViewerRenderedHtmlDocument, buildExportHtmlDocument, collectDocumentStyles, prepareFileViewerRenderedContentForSnapshot, replaceFileViewerCanvasWithImages, resolveFileViewerPrintStyle, triggerFileViewerBlobDownload, triggerFileViewerUrlDownload, waitForFileViewerImages, waitForFileViewerNextPaint, waitForFileViewerPrintWindowReady, } from './output/export';
|
|
13
15
|
export { applyPrintPageSize, buildPrintPageStyle, formatCssPixels, getElementPrintPageSize, } from './output/printLayout';
|
|
14
16
|
export type { ApplyPrintPageSizeOptions, BuildPrintPageStyleOptions, PrintPageSize, } from './output/printLayout';
|
|
@@ -44,7 +46,7 @@ export declare const renderFileViewerWordDoc: (buffer: ArrayBuffer, target: HTML
|
|
|
44
46
|
export declare const renderFileViewerWordDocx: (buffer: ArrayBuffer, target: HTMLDivElement, context?: FileRenderContext) => Promise<FileViewerRenderedInstance>;
|
|
45
47
|
export declare const renderFileViewerSpreadsheet: (buffer: ArrayBuffer, target: HTMLDivElement, type?: string, context?: FileRenderContext) => Promise<FileViewerRenderedInstance>;
|
|
46
48
|
export declare const parseEdaFile: (buffer: ArrayBuffer, type?: string) => Promise<never>;
|
|
47
|
-
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities';
|
|
49
|
+
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities';
|
|
48
50
|
export { FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, FILE_VIEWER_OPERATION_LABELS, buildFileViewerLifecycleContext, buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, buildFileViewerOperationContextFromLifecycleState, cloneFileViewerOperationAvailability, createFileViewerLifecycleActions, createFileViewerLifecycleStateController, createFileViewerPublicApi, createFileViewerToolbarActions, createFileViewerToolbarControllerActionHandlers, createFileViewerToolbarZoomSyncSnapshot, DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER, DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER, dispatchFileViewerLifecycleEvent, dispatchFileViewerOperationContextEvent, dispatchFileViewerOperationAvailabilityChange, dispatchFileViewerZoomChange, emitFileViewerComponentLifecycleEvent, getFileViewerBeforeOperationHooks, getFileViewerLifecycleHookName, hasVisibleFileViewerToolbarActions, isFileViewerToolbarOperationPermitted, isFileViewerZoomButtonDisabled, normalizeFileViewerToolbar, reportFileViewerLifecycleHookError, reportFileViewerOperationError, resolveFileViewerLifecycleFallbackSource, resolveFileViewerLifecycleHookErrorMessage, resolveFileViewerBeforeOperationErrorMessage, resolveFileViewerOperationAvailability, resolveFileViewerToolbarState, resolveFileViewerToolbarPosition, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations';
|
|
49
51
|
export type { BuildFileViewerOperationContextFromLifecycleStateInput, CreateFileViewerLifecycleActionsInput, DispatchFileViewerLifecycleEventInput, DispatchFileViewerOperationContextEventInput, DispatchFileViewerOperationAvailabilityChangeInput, DispatchFileViewerZoomChangeInput, FileViewerActiveUnloadState, FileViewerLifecycleActions, FileViewerLifecycleComponentEmit, FileViewerToolbarActions, FileViewerToolbarControllerActionHandlers, FileViewerToolbarZoomSyncSnapshot, FileViewerZoomButtonAction, FileViewerToolbarState, CreateFileViewerPublicApiInput, CreateFileViewerToolbarActionsInput, CreateFileViewerToolbarControllerActionHandlersInput, BuildFileViewerLifecycleContextFromNormalizedSourceInput, ResolveFileViewerBeforeOperationErrorMessageInput, ResolveFileViewerToolbarStateInput, RunFileViewerActiveUnloadCompleteInput, RunFileViewerActiveUnloadStartInput, RunFileViewerToolbarAvailabilitySyncInput, RunFileViewerToolbarZoomSyncInput, } from './lifecycle/operations';
|
|
50
52
|
export { FALLBACK_FILE_VIEWER_LOADING_THEME, FILE_VIEWER_LOADING_THEME_MAP, applyFileViewerLoadingState, cloneFileViewerLoadingState, createFileViewerLoadingController, createFileViewerLoadingControllerActionHandlers, createFileViewerLoadingState, createFileViewerLoadingStyleVars, runFileViewerLoadingControllerAction, runFileViewerLoadingExtensionSync, resolveFileViewerLoadingTheme, syncFileViewerLoadingControllerState, } from './viewer/loading';
|
|
@@ -75,10 +77,10 @@ export type { FileViewerSerializableCadOptions, FileViewerSerializableOptions, F
|
|
|
75
77
|
export type { InstallFileViewerRendererPluginsOptions, } from './registry/registry';
|
|
76
78
|
export type { CreateFileViewerRendererDispatcherOptions, FileViewerRendererDispatcher, FileViewerRendererHandlerEntry, } from './rendering/dispatcher';
|
|
77
79
|
export type { CreateFileViewerRenderTargetOptions, CreateFileRenderHandlerRegistryOptions, CreateFileRenderHandlerLoaderOptions, DisposeFileViewerRendererSessionOptions, FileRenderHandlerRegistryResult, FileRenderHandlerRendererSession, RenderFileViewerHandlerInput, } from './rendering/handler';
|
|
78
|
-
export type { FileViewerSearchProviderHost, ResolveFileViewerScrollContainerOptions, FileViewerZoomProviderHost, } from './features/document/dom';
|
|
80
|
+
export type { FileViewerSearchProviderHost, ResolveFileViewerScrollContainerOptions, FileViewerViewStateProviderHost, FileViewerZoomProviderHost, } from './features/document/dom';
|
|
79
81
|
export type { CreateFileViewerDomSearchControllerOptions, FileViewerInternalSearchMatch, } from './features/document/search';
|
|
80
82
|
export type { CreateFileViewerZoomControllerOptions, FileViewerZoomOperation, } from './features/document/zoom';
|
|
81
83
|
export type { CreateViewerOptions } from './viewer/createViewer';
|
|
82
84
|
export type { BuildExportHtmlDocumentOptions, BuildFileViewerRenderedHtmlDocumentOptions, } from './output/export';
|
|
83
85
|
export type { CreateFileViewerWorkerControllerOptions, FileViewerWorkerContext, FileViewerWorkerController, FileViewerWorkerErrorHook, FileViewerWorkerEventHandler, FileViewerWorkerFactory, FileViewerWorkerMessageHook, WorkerProvider, WorkerRef, } from './platform/worker';
|
|
84
|
-
export type { FileViewerAiOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerGeoBasemapOptions, FileViewerGeoBasemapPreset, FileViewerGeoOptions, 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';
|
|
86
|
+
export type { FileViewerAiOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerGeoBasemapOptions, FileViewerGeoBasemapPreset, FileViewerGeoOptions, FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, 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, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RendererCapability, RendererDefinition, RendererPlugin, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession, RenderSurface, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,8 @@ export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_
|
|
|
4
4
|
export { DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES, applyFileViewerSearchState, cloneFileViewerSearchState, createFileViewerDomSearchController, createFileViewerDomSearchControllerActionHandlers, destroyFileViewerDomSearchController, observeFileViewerDomSearchController, runFileViewerDomSearchControllerAction, syncFileViewerDomSearchControllerState, } from './features/document/search.js';
|
|
5
5
|
export { createFileViewerDocumentFeatureActions, createFileViewerDocumentFeatureControllerActionHandlers, createFileViewerDocumentChangeSnapshot, createFileViewerSearchChangeState, dispatchFileViewerLocationChange, dispatchFileViewerSearchChange, resolveFileViewerLocationChangeAnchor, } from './features/document/events.js';
|
|
6
6
|
export { applyFileViewerZoomState, clearFileViewerZoomControllerProvider, createFileViewerZoomChangeEmitter, createFileViewerZoomChangeState, cloneFileViewerZoomState, createFileViewerZoomController, createFileViewerZoomControllerActionHandlers, destroyFileViewerZoomController, observeFileViewerZoomController, refreshFileViewerZoomControllerProvider, runFileViewerZoomControllerAction, syncFileViewerZoomControllerState, } from './features/document/zoom.js';
|
|
7
|
-
export {
|
|
7
|
+
export { cloneFileViewerViewState, createFileViewerViewStateChange, createFileViewerViewStateChangeEmitter, createFileViewerViewStateController, createFileViewerViewStateControllerActionHandlers, registerFileViewerGenericViewStateProvider, } from './features/document/viewState.js';
|
|
8
|
+
export { DEFAULT_FILE_VIEWER_ANCHOR_EXCLUDE_SELECTOR, DEFAULT_FILE_VIEWER_ANCHOR_SELECTOR, DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_CANDIDATE_SELECTOR, DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_SELECTOR, DEFAULT_FILE_VIEWER_SCROLLABLE_OVERFLOW_VALUES, collectFileViewerDocumentAnchors, findFileViewerAnchorForElement, findFileViewerSearchProvider, findFileViewerViewStateProvider, findFileViewerZoomProvider, getCurrentFileViewerDocumentAnchor, getFileViewerScrollableRange, isFileViewerScrollableElement, registerFileViewerSearchProvider, registerFileViewerViewStateProvider, registerFileViewerZoomProvider, resolveFileViewerScrollContainer, scrollToFileViewerDocumentAnchor, unregisterFileViewerSearchProvider, unregisterFileViewerViewStateProvider, unregisterFileViewerZoomProvider, } from './features/document/dom/index.js';
|
|
8
9
|
export { buildFileViewerRenderedHtmlDocument, buildExportHtmlDocument, collectDocumentStyles, prepareFileViewerRenderedContentForSnapshot, replaceFileViewerCanvasWithImages, resolveFileViewerPrintStyle, triggerFileViewerBlobDownload, triggerFileViewerUrlDownload, waitForFileViewerImages, waitForFileViewerNextPaint, waitForFileViewerPrintWindowReady, } from './output/export.js';
|
|
9
10
|
export { applyPrintPageSize, buildPrintPageStyle, formatCssPixels, getElementPrintPageSize, } from './output/printLayout.js';
|
|
10
11
|
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';
|
|
@@ -160,7 +161,7 @@ export const parseEdaFile = async (buffer, type) => {
|
|
|
160
161
|
void type;
|
|
161
162
|
throw new Error('EDA parsing has moved out of @file-viewer/core. Import parseEdaFile from @file-viewer/renderer-eda instead.');
|
|
162
163
|
};
|
|
163
|
-
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
|
|
164
|
+
export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
|
|
164
165
|
export { FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, FILE_VIEWER_OPERATION_LABELS, buildFileViewerLifecycleContext, buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, buildFileViewerOperationContextFromLifecycleState, cloneFileViewerOperationAvailability, createFileViewerLifecycleActions, createFileViewerLifecycleStateController, createFileViewerPublicApi, createFileViewerToolbarActions, createFileViewerToolbarControllerActionHandlers, createFileViewerToolbarZoomSyncSnapshot, DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER, DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER, dispatchFileViewerLifecycleEvent, dispatchFileViewerOperationContextEvent, dispatchFileViewerOperationAvailabilityChange, dispatchFileViewerZoomChange, emitFileViewerComponentLifecycleEvent, getFileViewerBeforeOperationHooks, getFileViewerLifecycleHookName, hasVisibleFileViewerToolbarActions, isFileViewerToolbarOperationPermitted, isFileViewerZoomButtonDisabled, normalizeFileViewerToolbar, reportFileViewerLifecycleHookError, reportFileViewerOperationError, resolveFileViewerLifecycleFallbackSource, resolveFileViewerLifecycleHookErrorMessage, resolveFileViewerBeforeOperationErrorMessage, resolveFileViewerOperationAvailability, resolveFileViewerToolbarState, resolveFileViewerToolbarPosition, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations.js';
|
|
165
166
|
export { FALLBACK_FILE_VIEWER_LOADING_THEME, FILE_VIEWER_LOADING_THEME_MAP, applyFileViewerLoadingState, cloneFileViewerLoadingState, createFileViewerLoadingController, createFileViewerLoadingControllerActionHandlers, createFileViewerLoadingState, createFileViewerLoadingStyleVars, runFileViewerLoadingControllerAction, runFileViewerLoadingExtensionSync, resolveFileViewerLoadingTheme, syncFileViewerLoadingControllerState, } from './viewer/loading.js';
|
|
166
167
|
export { createFileViewerLifecycleFacade, } from './lifecycle/facade.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { FileRenderExportAdapter, FileViewerOperationAvailability, RendererDefinition, RendererSession } from '../contracts/types';
|
|
1
|
+
import type { FileRenderExportAdapter, FileViewerOperationAvailability, FileViewerZoomState, RendererDefinition, RendererSession } from '../contracts/types';
|
|
2
2
|
export declare const DEFAULT_OPERATION_AVAILABILITY: FileViewerOperationAvailability;
|
|
3
3
|
export declare const getRendererAvailability: (renderer: RendererDefinition | undefined, session?: RendererSession | null) => FileViewerOperationAvailability;
|
|
4
|
+
export declare const applyFileViewerZoomAvailability: (availability: FileViewerOperationAvailability, zoomState: FileViewerZoomState) => FileViewerOperationAvailability;
|
|
4
5
|
export declare const createUnsupportedAvailability: (extension: string) => FileViewerOperationAvailability;
|
|
5
6
|
/**
|
|
6
7
|
* 这些格式只有专属适配器准备好后才展示打印。
|
|
@@ -31,6 +31,16 @@ export const getRendererAvailability = (renderer, session) => {
|
|
|
31
31
|
...(_h = session === null || session === void 0 ? void 0 : session.getAvailability) === null || _h === void 0 ? void 0 : _h.call(session),
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
+
export const applyFileViewerZoomAvailability = (availability, zoomState) => {
|
|
35
|
+
const zoom = availability.zoom && (zoomState.canZoomIn || zoomState.canZoomOut || zoomState.canReset);
|
|
36
|
+
return {
|
|
37
|
+
...availability,
|
|
38
|
+
zoom,
|
|
39
|
+
zoomIn: zoom && zoomState.canZoomIn,
|
|
40
|
+
zoomOut: zoom && zoomState.canZoomOut,
|
|
41
|
+
zoomReset: zoom && zoomState.canReset,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
34
44
|
export const createUnsupportedAvailability = (extension) => ({
|
|
35
45
|
...DEFAULT_OPERATION_AVAILABILITY,
|
|
36
46
|
download: normalizeFileExtension(extension).length > 0,
|
package/dist/renderers/image.js
CHANGED
|
@@ -60,15 +60,8 @@ const resolveImageUrl = async (buffer, type) => {
|
|
|
60
60
|
}
|
|
61
61
|
return readBlobDataUrl(new Blob([buffer], { type: getImageBlobType(normalizedType) }));
|
|
62
62
|
};
|
|
63
|
-
const
|
|
64
|
-
return
|
|
65
|
-
};
|
|
66
|
-
const applyImageZoom = (image, viewportHeight, zoom) => {
|
|
67
|
-
if (viewportHeight > 0) {
|
|
68
|
-
image.style.height = `${Math.max(1, Math.round(viewportHeight * zoom))}px`;
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
image.style.height = `${zoom * 100}%`;
|
|
63
|
+
const roundImageScale = (value) => {
|
|
64
|
+
return Number(value.toFixed(3));
|
|
72
65
|
};
|
|
73
66
|
const createLightbox = (src) => {
|
|
74
67
|
const lightbox = document.createElement('div');
|
|
@@ -108,7 +101,9 @@ const createLightbox = (src) => {
|
|
|
108
101
|
};
|
|
109
102
|
export default async function renderImage(buffer, target, type) {
|
|
110
103
|
const src = await resolveImageUrl(buffer, type);
|
|
111
|
-
let
|
|
104
|
+
let userZoom = 1;
|
|
105
|
+
let fitScale = 1;
|
|
106
|
+
let currentScale = 1;
|
|
112
107
|
let viewportHeight = 0;
|
|
113
108
|
const zoomEmitter = createZoomChangeEmitter();
|
|
114
109
|
const root = document.createElement('div');
|
|
@@ -125,32 +120,67 @@ export default async function renderImage(buffer, target, type) {
|
|
|
125
120
|
const openLightbox = () => lightbox.open();
|
|
126
121
|
image.addEventListener('click', openLightbox);
|
|
127
122
|
document.body.append(lightbox.element);
|
|
123
|
+
const getMinScale = () => Math.min(0.1, fitScale || 0.1);
|
|
124
|
+
const clampScale = (value) => {
|
|
125
|
+
const minScale = getMinScale();
|
|
126
|
+
return Math.min(5, Math.max(minScale, roundImageScale(value)));
|
|
127
|
+
};
|
|
128
|
+
const computeFitScale = () => {
|
|
129
|
+
const naturalWidth = image.naturalWidth || 0;
|
|
130
|
+
const naturalHeight = image.naturalHeight || 0;
|
|
131
|
+
if (!naturalWidth || !naturalHeight) {
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
const availableWidth = Math.max((root.clientWidth || 0) - 48, 1);
|
|
135
|
+
const availableHeight = Math.max((root.clientHeight || viewportHeight || 0) - 48, 1);
|
|
136
|
+
return Math.min(1, availableWidth / naturalWidth, availableHeight / naturalHeight);
|
|
137
|
+
};
|
|
138
|
+
const applyImageZoom = () => {
|
|
139
|
+
fitScale = computeFitScale();
|
|
140
|
+
currentScale = clampScale(fitScale * userZoom);
|
|
141
|
+
if (image.naturalWidth && image.naturalHeight) {
|
|
142
|
+
image.style.width = `${Math.max(1, Math.round(image.naturalWidth * currentScale))}px`;
|
|
143
|
+
image.style.height = `${Math.max(1, Math.round(image.naturalHeight * currentScale))}px`;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
image.style.width = 'auto';
|
|
147
|
+
image.style.height = viewportHeight > 0
|
|
148
|
+
? `${Math.max(1, Math.round(viewportHeight * userZoom))}px`
|
|
149
|
+
: `${userZoom * 100}%`;
|
|
150
|
+
};
|
|
128
151
|
const updateViewportSize = () => {
|
|
129
152
|
viewportHeight = root.clientHeight || 0;
|
|
130
|
-
applyImageZoom(
|
|
153
|
+
applyImageZoom();
|
|
131
154
|
zoomEmitter.emit();
|
|
132
155
|
};
|
|
133
156
|
const resizeObserver = new ResizeObserver(updateViewportSize);
|
|
134
157
|
resizeObserver.observe(root);
|
|
158
|
+
image.addEventListener('load', updateViewportSize);
|
|
135
159
|
const getZoomState = () => ({
|
|
136
|
-
scale:
|
|
137
|
-
label: `${Math.round(
|
|
138
|
-
canZoomIn:
|
|
139
|
-
canZoomOut:
|
|
140
|
-
canReset:
|
|
141
|
-
minScale:
|
|
160
|
+
scale: currentScale,
|
|
161
|
+
label: `${Math.round(currentScale * 100)}%`,
|
|
162
|
+
canZoomIn: currentScale < 5,
|
|
163
|
+
canZoomOut: currentScale > getMinScale(),
|
|
164
|
+
canReset: Math.abs(userZoom - 1) > 0.001,
|
|
165
|
+
minScale: getMinScale(),
|
|
142
166
|
maxScale: 5,
|
|
143
167
|
});
|
|
144
168
|
const setZoom = (scale) => {
|
|
145
|
-
|
|
146
|
-
|
|
169
|
+
const nextScale = clampScale(scale);
|
|
170
|
+
userZoom = nextScale / Math.max(fitScale, 0.001);
|
|
171
|
+
applyImageZoom();
|
|
147
172
|
zoomEmitter.emit();
|
|
148
173
|
return getZoomState();
|
|
149
174
|
};
|
|
150
175
|
registerFileViewerZoomProvider(root, {
|
|
151
|
-
zoomIn: () => setZoom(
|
|
152
|
-
zoomOut: () => setZoom(
|
|
153
|
-
resetZoom: () =>
|
|
176
|
+
zoomIn: () => setZoom(currentScale + 0.15),
|
|
177
|
+
zoomOut: () => setZoom(currentScale - 0.15),
|
|
178
|
+
resetZoom: () => {
|
|
179
|
+
userZoom = 1;
|
|
180
|
+
applyImageZoom();
|
|
181
|
+
zoomEmitter.emit();
|
|
182
|
+
return getZoomState();
|
|
183
|
+
},
|
|
154
184
|
setZoom,
|
|
155
185
|
getState: getZoomState,
|
|
156
186
|
subscribe: zoomEmitter.subscribe,
|
|
@@ -162,6 +192,7 @@ export default async function renderImage(buffer, target, type) {
|
|
|
162
192
|
unmount() {
|
|
163
193
|
unregisterFileViewerZoomProvider(root);
|
|
164
194
|
resizeObserver.disconnect();
|
|
195
|
+
image.removeEventListener('load', updateViewportSize);
|
|
165
196
|
image.removeEventListener('click', openLightbox);
|
|
166
197
|
lightbox.destroy();
|
|
167
198
|
target.replaceChildren();
|
|
@@ -20,6 +20,7 @@ export interface RenderFileViewerHandlerInput<Rendered = unknown, Target extends
|
|
|
20
20
|
}
|
|
21
21
|
export interface CreateFileRenderHandlerLoaderOptions<Rendered = unknown, Target extends HTMLElement = HTMLElement> {
|
|
22
22
|
handler: FileRenderHandler<Rendered, Target>;
|
|
23
|
+
rendererId?: string;
|
|
23
24
|
getTarget?: (context: RendererLoadContext) => Target;
|
|
24
25
|
createContext?: (context: RendererLoadContext) => FileRenderContext;
|
|
25
26
|
destroy?: (rendered: Rendered, context: RendererLoadContext) => void | Promise<void>;
|
|
@@ -82,8 +83,10 @@ export interface RunFileViewerRenderSurfaceMountInput<Session extends RendererSe
|
|
|
82
83
|
waitForPaint?: () => Promise<unknown> | unknown;
|
|
83
84
|
disposeSession?: (session?: Session | null) => void;
|
|
84
85
|
onStartZoomObserver?: () => void;
|
|
86
|
+
onStartViewStateObserver?: () => void;
|
|
85
87
|
onRefreshDocumentIndex?: () => Promise<unknown> | unknown;
|
|
86
88
|
onRefreshZoomProvider?: () => void;
|
|
89
|
+
onRefreshViewStateProvider?: () => void;
|
|
87
90
|
}
|
|
88
91
|
export interface RunFileViewerRenderSurfaceClearInput<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
89
92
|
reason?: FileViewerLifecycleContext['reason'];
|
|
@@ -97,6 +100,8 @@ export interface RunFileViewerRenderSurfaceClearInput<Session extends RendererSe
|
|
|
97
100
|
onClearDocumentState?: () => void;
|
|
98
101
|
onStopZoomObserver?: () => void;
|
|
99
102
|
onClearZoomProvider?: () => void;
|
|
103
|
+
onStopViewStateObserver?: () => void;
|
|
104
|
+
onClearViewStateProvider?: () => void;
|
|
100
105
|
}
|
|
101
106
|
export interface FileViewerRenderSurfaceClearState<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
|
|
102
107
|
reason: FileViewerLifecycleContext['reason'];
|
|
@@ -125,8 +130,12 @@ export interface CreateFileViewerRenderSurfaceActionHandlersInput<Session extend
|
|
|
125
130
|
onStartZoomObserver?: () => void;
|
|
126
131
|
onStopZoomObserver?: () => void;
|
|
127
132
|
onClearZoomProvider?: () => void;
|
|
133
|
+
onStartViewStateObserver?: () => void;
|
|
134
|
+
onStopViewStateObserver?: () => void;
|
|
135
|
+
onClearViewStateProvider?: () => void;
|
|
128
136
|
onRefreshDocumentIndex?: () => Promise<unknown> | unknown;
|
|
129
137
|
onRefreshZoomProvider?: () => void;
|
|
138
|
+
onRefreshViewStateProvider?: () => void;
|
|
130
139
|
}
|
|
131
140
|
export declare const DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS = "file-render";
|
|
132
141
|
export declare const clearFileViewerRenderSurface: (container?: HTMLElement | null) => void;
|
|
@@ -156,10 +165,10 @@ export declare const reportFileViewerRenderSessionDisposeError: ({ error, onLogE
|
|
|
156
165
|
export declare const disposeFileViewerRendererSession: (session?: RendererSession | null, options?: DisposeFileViewerRendererSessionOptions) => void;
|
|
157
166
|
export declare const disposeActiveFileViewerRendererSession: <Session extends RendererSession, Target extends MutableFileViewerRenderSurfaceState<Session>>(target: Target, options?: DisposeFileViewerRendererSessionOptions) => Session | null;
|
|
158
167
|
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>;
|
|
168
|
+
export declare const runFileViewerRenderSurfaceClear: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ reason, surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, onStopViewStateObserver, onClearViewStateProvider, }: RunFileViewerRenderSurfaceClearInput<Session, UnloadContext>) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
|
|
169
|
+
export declare const runFileViewerRenderSurfaceMount: <Session extends RendererSession>({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint, disposeSession, onStartZoomObserver, onStartViewStateObserver, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: RunFileViewerRenderSurfaceMountInput<Session>) => Promise<Session | undefined>;
|
|
170
|
+
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, onStartViewStateObserver, onStopViewStateObserver, onClearViewStateProvider, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: CreateFileViewerRenderSurfaceActionHandlersInput<Session, UnloadContext>) => FileViewerRenderSurfaceActionHandlers<Session, UnloadContext>;
|
|
162
171
|
export declare const buildFileRenderContextFromLoadContext: ({ source, options, registerExportAdapter, renderContext, }: RendererLoadContext) => FileRenderContext;
|
|
163
172
|
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;
|
|
173
|
+
export declare const createFileRenderHandlerLoader: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ handler, rendererId, getTarget, createContext, destroy, }: CreateFileRenderHandlerLoaderOptions<Rendered, Target>) => RendererLoader;
|
|
165
174
|
export declare const createFileRenderHandlerRegistry: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ definitions, handlers, getTarget, createContext, destroy, }: CreateFileRenderHandlerRegistryOptions<Rendered, Target>) => FileRenderHandlerRegistryResult<Rendered, Target>;
|
|
@@ -9,6 +9,8 @@ import { createFileViewerRendererDispatcher } from './dispatcher.js';
|
|
|
9
9
|
import { createRendererRegistry } from '../registry/registry.js';
|
|
10
10
|
import { getExtension, normalizeFileExtension } from '../source/index.js';
|
|
11
11
|
import { applyFileViewerRenderReadinessState, } from '../source/loading.js';
|
|
12
|
+
import { findFileViewerViewStateProvider } from '../features/document/dom/index.js';
|
|
13
|
+
import { registerFileViewerGenericViewStateProvider } from '../features/document/viewState.js';
|
|
12
14
|
export const FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE = '预览内容卸载失败';
|
|
13
15
|
export const DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS = 'file-render';
|
|
14
16
|
const isPromiseLike = (value) => {
|
|
@@ -156,7 +158,7 @@ export const resetFileViewerRenderSurface = ({ surfaceState, readinessState, con
|
|
|
156
158
|
clearFileViewerRenderSurface(container);
|
|
157
159
|
return session;
|
|
158
160
|
};
|
|
159
|
-
export const runFileViewerRenderSurfaceClear = ({ reason = 'replace', surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, }) => {
|
|
161
|
+
export const runFileViewerRenderSurfaceClear = ({ reason = 'replace', surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, onStopViewStateObserver, onClearViewStateProvider, }) => {
|
|
160
162
|
const unloadContext = onUnloadStart === null || onUnloadStart === void 0 ? void 0 : onUnloadStart(reason);
|
|
161
163
|
let session;
|
|
162
164
|
try {
|
|
@@ -172,6 +174,8 @@ export const runFileViewerRenderSurfaceClear = ({ reason = 'replace', surfaceSta
|
|
|
172
174
|
onClearDocumentState === null || onClearDocumentState === void 0 ? void 0 : onClearDocumentState();
|
|
173
175
|
onStopZoomObserver === null || onStopZoomObserver === void 0 ? void 0 : onStopZoomObserver();
|
|
174
176
|
onClearZoomProvider === null || onClearZoomProvider === void 0 ? void 0 : onClearZoomProvider();
|
|
177
|
+
onStopViewStateObserver === null || onStopViewStateObserver === void 0 ? void 0 : onStopViewStateObserver();
|
|
178
|
+
onClearViewStateProvider === null || onClearViewStateProvider === void 0 ? void 0 : onClearViewStateProvider();
|
|
175
179
|
}
|
|
176
180
|
onUnloadComplete === null || onUnloadComplete === void 0 ? void 0 : onUnloadComplete(unloadContext, reason);
|
|
177
181
|
return {
|
|
@@ -180,7 +184,7 @@ export const runFileViewerRenderSurfaceClear = ({ reason = 'replace', surfaceSta
|
|
|
180
184
|
session,
|
|
181
185
|
};
|
|
182
186
|
};
|
|
183
|
-
export const runFileViewerRenderSurfaceMount = async ({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint = waitForFileViewerNextPaint, disposeSession = disposeFileViewerRendererSession, onStartZoomObserver, onRefreshDocumentIndex, onRefreshZoomProvider, }) => {
|
|
187
|
+
export const runFileViewerRenderSurfaceMount = async ({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint = waitForFileViewerNextPaint, disposeSession = disposeFileViewerRendererSession, onStartZoomObserver, onStartViewStateObserver, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }) => {
|
|
184
188
|
if (!getContainer()) {
|
|
185
189
|
await (waitForContainer === null || waitForContainer === void 0 ? void 0 : waitForContainer());
|
|
186
190
|
}
|
|
@@ -191,6 +195,7 @@ export const runFileViewerRenderSurfaceMount = async ({ buffer, file, version, s
|
|
|
191
195
|
clearRenderedContent('replace');
|
|
192
196
|
const target = createFileViewerRenderTarget(container);
|
|
193
197
|
onStartZoomObserver === null || onStartZoomObserver === void 0 ? void 0 : onStartZoomObserver();
|
|
198
|
+
onStartViewStateObserver === null || onStartViewStateObserver === void 0 ? void 0 : onStartViewStateObserver();
|
|
194
199
|
await (waitForContainer === null || waitForContainer === void 0 ? void 0 : waitForContainer());
|
|
195
200
|
await waitForPaint();
|
|
196
201
|
if (!isCurrent(version)) {
|
|
@@ -227,6 +232,7 @@ export const runFileViewerRenderSurfaceMount = async ({ buffer, file, version, s
|
|
|
227
232
|
}
|
|
228
233
|
void (onRefreshDocumentIndex === null || onRefreshDocumentIndex === void 0 ? void 0 : onRefreshDocumentIndex());
|
|
229
234
|
onRefreshZoomProvider === null || onRefreshZoomProvider === void 0 ? void 0 : onRefreshZoomProvider();
|
|
235
|
+
onRefreshViewStateProvider === null || onRefreshViewStateProvider === void 0 ? void 0 : onRefreshViewStateProvider();
|
|
230
236
|
return session;
|
|
231
237
|
}
|
|
232
238
|
catch (error) {
|
|
@@ -234,7 +240,7 @@ export const runFileViewerRenderSurfaceMount = async ({ buffer, file, version, s
|
|
|
234
240
|
throw error;
|
|
235
241
|
}
|
|
236
242
|
};
|
|
237
|
-
export const createFileViewerRenderSurfaceActionHandlers = ({ getContainer, surfaceState, readinessState, isCurrent, render, waitForContainer, waitForPaint, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStartZoomObserver, onStopZoomObserver, onClearZoomProvider, onRefreshDocumentIndex, onRefreshZoomProvider, }) => {
|
|
243
|
+
export const createFileViewerRenderSurfaceActionHandlers = ({ getContainer, surfaceState, readinessState, isCurrent, render, waitForContainer, waitForPaint, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStartZoomObserver, onStopZoomObserver, onClearZoomProvider, onStartViewStateObserver, onStopViewStateObserver, onClearViewStateProvider, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }) => {
|
|
238
244
|
const handleDisposeError = (error) => {
|
|
239
245
|
if (disposeOptions === null || disposeOptions === void 0 ? void 0 : disposeOptions.onError) {
|
|
240
246
|
disposeOptions.onError(error);
|
|
@@ -265,6 +271,8 @@ export const createFileViewerRenderSurfaceActionHandlers = ({ getContainer, surf
|
|
|
265
271
|
onClearDocumentState,
|
|
266
272
|
onStopZoomObserver,
|
|
267
273
|
onClearZoomProvider,
|
|
274
|
+
onStopViewStateObserver,
|
|
275
|
+
onClearViewStateProvider,
|
|
268
276
|
});
|
|
269
277
|
};
|
|
270
278
|
const mountRenderedContent = async (buffer, file, version, sourceUrl, streamUrl) => {
|
|
@@ -284,8 +292,10 @@ export const createFileViewerRenderSurfaceActionHandlers = ({ getContainer, surf
|
|
|
284
292
|
waitForPaint,
|
|
285
293
|
disposeSession: destroyRenderSession,
|
|
286
294
|
onStartZoomObserver,
|
|
295
|
+
onStartViewStateObserver,
|
|
287
296
|
onRefreshDocumentIndex,
|
|
288
297
|
onRefreshZoomProvider,
|
|
298
|
+
onRefreshViewStateProvider,
|
|
289
299
|
});
|
|
290
300
|
};
|
|
291
301
|
return {
|
|
@@ -314,19 +324,42 @@ export const renderFileViewerHandler = async ({ dispatcher, buffer, target, type
|
|
|
314
324
|
}
|
|
315
325
|
return handler(buffer, target, normalizedType, context);
|
|
316
326
|
};
|
|
317
|
-
export const createFileRenderHandlerLoader = ({ handler, getTarget = context => context.surface.container, createContext = buildFileRenderContextFromLoadContext, destroy, }) => {
|
|
327
|
+
export const createFileRenderHandlerLoader = ({ handler, rendererId, getTarget = context => context.surface.container, createContext = buildFileRenderContextFromLoadContext, destroy, }) => {
|
|
318
328
|
return async (context) => {
|
|
319
329
|
const { source } = context;
|
|
320
330
|
if (!source.buffer) {
|
|
321
331
|
throw new Error('FileRenderHandler renderer requires an ArrayBuffer source.');
|
|
322
332
|
}
|
|
323
333
|
const target = getTarget(context);
|
|
324
|
-
const
|
|
334
|
+
const renderContext = createContext(context);
|
|
335
|
+
const rendered = await handler(source.buffer, target, source.extension, renderContext);
|
|
336
|
+
const existingProvider = findFileViewerViewStateProvider(target);
|
|
337
|
+
const genericViewStateProvider = existingProvider
|
|
338
|
+
? null
|
|
339
|
+
: registerFileViewerGenericViewStateProvider({
|
|
340
|
+
host: target,
|
|
341
|
+
renderer: rendererId || source.extension,
|
|
342
|
+
});
|
|
343
|
+
const viewStateProvider = existingProvider || (genericViewStateProvider === null || genericViewStateProvider === void 0 ? void 0 : genericViewStateProvider.provider) || null;
|
|
344
|
+
if (context.options.initialViewState && (viewStateProvider === null || viewStateProvider === void 0 ? void 0 : viewStateProvider.applyState)) {
|
|
345
|
+
await viewStateProvider.applyState(context.options.initialViewState, {
|
|
346
|
+
action: 'restore',
|
|
347
|
+
source: 'initial',
|
|
348
|
+
});
|
|
349
|
+
}
|
|
325
350
|
return createFileRenderHandlerRendererSession(rendered, () => {
|
|
326
|
-
|
|
327
|
-
|
|
351
|
+
const destroyRendered = () => {
|
|
352
|
+
if (destroy) {
|
|
353
|
+
return destroy(rendered, context);
|
|
354
|
+
}
|
|
355
|
+
return disposeFileViewerRendered(rendered);
|
|
356
|
+
};
|
|
357
|
+
try {
|
|
358
|
+
genericViewStateProvider === null || genericViewStateProvider === void 0 ? void 0 : genericViewStateProvider.destroy();
|
|
359
|
+
}
|
|
360
|
+
finally {
|
|
361
|
+
return destroyRendered();
|
|
328
362
|
}
|
|
329
|
-
return disposeFileViewerRendered(rendered);
|
|
330
363
|
});
|
|
331
364
|
};
|
|
332
365
|
};
|
|
@@ -345,6 +378,7 @@ export const createFileRenderHandlerRegistry = ({ definitions = DEFAULT_RENDERER
|
|
|
345
378
|
...definition,
|
|
346
379
|
load: createFileRenderHandlerLoader({
|
|
347
380
|
handler,
|
|
381
|
+
rendererId: definition.id,
|
|
348
382
|
getTarget,
|
|
349
383
|
createContext,
|
|
350
384
|
destroy,
|
package/dist/source/loading.d.ts
CHANGED
|
@@ -432,6 +432,7 @@ export interface RunFileViewerPreviewComponentUnmountInput {
|
|
|
432
432
|
onCancelPreview?: (reason: FileViewerLifecycleContext['reason']) => void;
|
|
433
433
|
onResetLoading?: () => void;
|
|
434
434
|
onStopZoomObserver?: () => void;
|
|
435
|
+
onStopViewStateObserver?: () => void;
|
|
435
436
|
}
|
|
436
437
|
export interface FileViewerPreviewComponentUnmountState {
|
|
437
438
|
reason: FileViewerLifecycleContext['reason'];
|
|
@@ -501,7 +502,7 @@ export declare const applyFileViewerPreviewRequestResetState: <Target extends Mu
|
|
|
501
502
|
export declare const commitFileViewerPreviewRequestStartState: ({ reason, requestController, previewTarget, onClearRenderedContent, onClearError, }: CommitFileViewerPreviewRequestStartStateInput) => number;
|
|
502
503
|
export declare const cancelFileViewerPreviewRequest: ({ reason, requestController, previewTarget, onClearRenderedContent, onClearError, }: CancelFileViewerPreviewRequestInput) => number;
|
|
503
504
|
export declare const runFileViewerPreviewSourceChange: ({ onRefreshPreview, }?: RunFileViewerPreviewSourceChangeInput) => unknown;
|
|
504
|
-
export declare const runFileViewerPreviewComponentUnmount: ({ reason, onCancelPreview, onResetLoading, onStopZoomObserver, }?: RunFileViewerPreviewComponentUnmountInput) => FileViewerPreviewComponentUnmountState;
|
|
505
|
+
export declare const runFileViewerPreviewComponentUnmount: ({ reason, onCancelPreview, onResetLoading, onStopZoomObserver, onStopViewStateObserver, }?: RunFileViewerPreviewComponentUnmountInput) => FileViewerPreviewComponentUnmountState;
|
|
505
506
|
export declare const applyFileViewerEmptyPreviewState: <Target extends MutableFileViewerPreviewState>(target: Target, state?: FileViewerEmptyPreviewState) => Target;
|
|
506
507
|
export declare const commitFileViewerEmptyPreviewResetState: ({ previewTarget, state, reason, onClearRenderedContent, onResetLoading, }: CommitFileViewerEmptyPreviewResetStateInput) => MutableFileViewerPreviewState;
|
|
507
508
|
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>>;
|
package/dist/source/loading.js
CHANGED
|
@@ -182,10 +182,11 @@ export const cancelFileViewerPreviewRequest = ({ reason = 'component-unmount', r
|
|
|
182
182
|
export const runFileViewerPreviewSourceChange = ({ onRefreshPreview, } = {}) => {
|
|
183
183
|
return onRefreshPreview === null || onRefreshPreview === void 0 ? void 0 : onRefreshPreview();
|
|
184
184
|
};
|
|
185
|
-
export const runFileViewerPreviewComponentUnmount = ({ reason = 'component-unmount', onCancelPreview, onResetLoading, onStopZoomObserver, } = {}) => {
|
|
185
|
+
export const runFileViewerPreviewComponentUnmount = ({ reason = 'component-unmount', onCancelPreview, onResetLoading, onStopZoomObserver, onStopViewStateObserver, } = {}) => {
|
|
186
186
|
onCancelPreview === null || onCancelPreview === void 0 ? void 0 : onCancelPreview(reason);
|
|
187
187
|
onResetLoading === null || onResetLoading === void 0 ? void 0 : onResetLoading();
|
|
188
188
|
onStopZoomObserver === null || onStopZoomObserver === void 0 ? void 0 : onStopZoomObserver();
|
|
189
|
+
onStopViewStateObserver === null || onStopViewStateObserver === void 0 ? void 0 : onStopViewStateObserver();
|
|
189
190
|
return {
|
|
190
191
|
reason,
|
|
191
192
|
};
|