@file-viewer/core 2.1.25 → 2.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options.d.ts +3 -1
- package/dist/config/options.js +13 -0
- package/dist/contracts/types.d.ts +75 -4
- package/dist/features/document/search.js +4 -1
- package/dist/headless.d.ts +2 -2
- package/dist/headless.js +1 -1
- package/dist/i18n/messages.js +18 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/lifecycle/operations.d.ts +1 -1
- package/dist/lifecycle/operations.js +9 -1
- package/dist/platform/assets.d.ts +4 -2
- package/dist/platform/assets.js +30 -12
- package/dist/registry/formats.d.ts +1 -1
- package/dist/renderers/image.js +7 -2
- package/dist/rendering/handler.d.ts +5 -3
- package/dist/rendering/handler.js +19 -4
- package/dist/viewer/createViewer.d.ts +2 -1
- package/dist/viewer/createViewer.js +50 -2
- package/package.json +1 -1
package/dist/config/options.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FileViewerArchiveOptions, FileViewerCadOptions, FileViewerOptions, FileViewerThemeMode, FileViewerToolbarOptions, FileViewerUiDensity } from '../contracts/types';
|
|
1
|
+
import type { FileViewerArchiveOptions, FileViewerCadOptions, FileViewerOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarOptions, FileViewerUiDensity } from '../contracts/types';
|
|
2
2
|
export type FileViewerSerializableToolbarOptions = Omit<FileViewerToolbarOptions, 'beforeOperation' | 'beforeDownload' | 'beforePrint' | 'beforeExportHtml'>;
|
|
3
3
|
export type FileViewerSerializableCadOptions = Omit<FileViewerCadOptions, 'workerUrl'> & {
|
|
4
4
|
workerUrl?: string;
|
|
@@ -9,6 +9,8 @@ export interface FileViewerSerializableOptions extends Omit<FileViewerOptions, '
|
|
|
9
9
|
cad?: FileViewerSerializableCadOptions;
|
|
10
10
|
}
|
|
11
11
|
export declare const normalizeFileViewerTheme: (theme: FileViewerThemeMode | undefined) => FileViewerThemeMode;
|
|
12
|
+
export declare const resolveFileViewerColorScheme: (theme: FileViewerThemeMode | undefined, systemDark?: boolean) => FileViewerResolvedThemeMode;
|
|
13
|
+
export declare const toggleFileViewerColorScheme: (theme: FileViewerThemeMode | undefined, systemDark?: boolean) => FileViewerResolvedThemeMode;
|
|
12
14
|
export declare const normalizeFileViewerUiDensity: (density: FileViewerUiDensity | undefined) => FileViewerUiDensity;
|
|
13
15
|
export declare const resolveFileViewerUiDensity: (options?: Pick<FileViewerOptions, "ui"> | null) => FileViewerUiDensity;
|
|
14
16
|
export declare const sanitizeFileViewerOptions: (options?: FileViewerOptions | FileViewerSerializableOptions | null) => FileViewerSerializableOptions | undefined;
|
package/dist/config/options.js
CHANGED
|
@@ -51,6 +51,19 @@ const stripExecutionOnlyOptions = (value) => {
|
|
|
51
51
|
export const normalizeFileViewerTheme = (theme) => {
|
|
52
52
|
return theme === 'light' || theme === 'dark' || theme === 'system' ? theme : 'system';
|
|
53
53
|
};
|
|
54
|
+
const readSystemDarkMode = () => {
|
|
55
|
+
return typeof globalThis.matchMedia === 'function' &&
|
|
56
|
+
globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
57
|
+
};
|
|
58
|
+
export const resolveFileViewerColorScheme = (theme, systemDark = readSystemDarkMode()) => {
|
|
59
|
+
const normalizedTheme = normalizeFileViewerTheme(theme);
|
|
60
|
+
return normalizedTheme === 'system'
|
|
61
|
+
? (systemDark ? 'dark' : 'light')
|
|
62
|
+
: normalizedTheme;
|
|
63
|
+
};
|
|
64
|
+
export const toggleFileViewerColorScheme = (theme, systemDark = readSystemDarkMode()) => {
|
|
65
|
+
return resolveFileViewerColorScheme(theme, systemDark) === 'dark' ? 'light' : 'dark';
|
|
66
|
+
};
|
|
54
67
|
export const normalizeFileViewerUiDensity = (density) => {
|
|
55
68
|
return density === 'compact' ? 'compact' : 'comfortable';
|
|
56
69
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export type FileViewerSourceKind = 'file' | 'url' | 'buffer' | 'empty';
|
|
2
2
|
export type FileViewerThemeMode = 'light' | 'dark' | 'system';
|
|
3
|
+
export type FileViewerResolvedThemeMode = Exclude<FileViewerThemeMode, 'system'>;
|
|
3
4
|
export type FileViewerLocale = 'auto' | 'zh-CN' | 'en-US' | (string & {});
|
|
4
5
|
export type FileViewerStyleIsolation = 'auto' | 'shadow' | 'scoped' | 'none';
|
|
5
|
-
export type FileViewerMessageKey = 'toolbar.zoomGroup' | 'toolbar.zoomOut' | 'toolbar.zoomIn' | 'toolbar.zoomReset' | 'toolbar.download' | 'toolbar.downloadTitle' | 'toolbar.print' | 'toolbar.printTitle' | 'toolbar.printDirect' | 'toolbar.printMask' | 'toolbar.printMaskTitle' | 'toolbar.printMaskAdd' | 'toolbar.printMaskClear' | 'toolbar.printMaskCancel' | 'toolbar.printMaskConfirm' | 'toolbar.printMaskHint' | 'toolbar.exportHtml' | 'toolbar.exportHtmlTitle' | 'toolbar.search' | 'toolbar.searchPlaceholder' | 'toolbar.searchPrevious' | 'toolbar.searchNext' | 'toolbar.searchClear' | 'state.ready.title' | 'state.ready.message' | 'state.empty.title' | 'state.empty.message' | 'state.unsupported.install.title' | 'state.unsupported.install.message' | 'state.unsupported.install.description' | 'state.unsupported.title' | 'state.unsupported.message' | 'state.unsupported.description' | 'state.error.title' | 'preview.downloading' | 'preview.streamingPdf' | 'preview.reading' | 'error.download' | 'error.print' | 'error.exportHtml' | 'error.noDownloadSource' | 'error.noExportContent' | 'error.printUnavailable' | 'error.printWindowBlocked' | 'error.remoteDownload' | 'error.localRead' | 'error.load' | 'error.stream' | 'error.beforeOperation' | 'error.unknown' | 'error.blobUnavailable' | 'error.sourceUnsupported' | 'error.fileReadArrayBuffer' | 'error.fileReadDataUrl' | 'error.fileReadText' | 'error.imageDataUrlRead' | 'operation.download' | 'operation.print' | 'operation.exportHtml' | 'operation.zoomIn' | 'operation.zoomOut' | 'operation.zoomReset' | 'pdf.toolbar.toggleNavigation' | 'pdf.toolbar.previousPage' | 'pdf.toolbar.nextPage' | 'pdf.toolbar.fitWidth' | 'pdf.toolbar.zoomOut' | 'pdf.toolbar.zoomIn' | 'pdf.toolbar.rotateLeft' | 'pdf.toolbar.rotateRight' | 'pdf.nav.typeLabel' | 'pdf.nav.pagesTab' | 'pdf.nav.outlineTab' | 'pdf.nav.pagesTitle' | 'pdf.nav.outlineTitle' | 'pdf.nav.pageCount' | 'pdf.nav.itemCount' | 'pdf.nav.pageLabel' | 'pdf.nav.outlineEmpty' | 'pdf.nav.outlineFallbackTitle' | 'pdf.thumbnail.alt' | 'pdf.state.loading' | 'pdf.error.browserWindow' | 'pdf.error.missingSource' | 'pdf.error.loadFailed' | 'pdf.error.notLoaded' | 'pdf.error.unloaded' | 'pdf.error.canvasUnavailable' | 'pdf.export.pageTitle' | 'spreadsheet.loading.kicker' | 'spreadsheet.loading.title' | 'spreadsheet.loading.hint' | 'spreadsheet.loading.streaming' | 'spreadsheet.tabs.ariaLabel' | 'spreadsheet.state.parsingWorkbook' | 'spreadsheet.state.preparingSheet' | 'spreadsheet.state.preparingSheetNamed' | 'spreadsheet.state.cachedRows' | 'spreadsheet.state.rows' | 'spreadsheet.state.rowsAndColumns' | 'spreadsheet.error.parseFailed' | 'spreadsheet.error.workerFailed' | 'word.error.invalidDocx' | 'word.error.missingOdfContent' | 'word.error.odfXmlParseFailed' | 'word.title.rtf' | 'word.title.openDocumentPresentation' | 'word.title.openDocumentText' | 'word.page.fallback' | 'word.page.empty' | 'word.body' | 'word.body.empty' | 'ofd.state.loading' | 'ofd.error.empty' | 'ofd.error.parseFailed' | 'presentation.state.loading' | 'presentation.error.title' | 'presentation.error.parseFailed' | 'archive.error.nestedUnsupported' | 'archive.loading.readingDirectory' | 'archive.loading.readingDirectoryHint' | 'archive.search.placeholder' | 'archive.sidebar.hide' | 'archive.sidebar.show' | 'archive.preview.title' | 'archive.preview.chooseFile' | 'archive.preview.downloadFile' | 'archive.error.title' | 'archive.stats.summary' | 'archive.warning.encrypted' | 'archive.password.title' | 'archive.password.description' | 'archive.password.placeholder' | 'archive.password.invalid' | 'archive.password.required' | 'archive.password.cancel' | 'archive.password.confirm' | 'archive.error.passwordRequired' | 'archive.error.encryptedRequiresWorker' | 'archive.empty.title' | 'archive.empty.message' | 'archive.loading.initializingCandidate' | 'archive.loading.initializingCandidateHint' | 'archive.error.candidateInitTimeout' | 'archive.error.encryptedCheckTimeout' | 'archive.loading.directoryReadyHint' | 'archive.error.candidateReadTimeout' | 'archive.loading.workerFallback' | 'archive.loading.workerFallbackHint' | 'archive.notice.workerFallback' | 'archive.error.tooLarge' | 'archive.loading.initializingWorker' | 'archive.loading.initializingWorkerHint' | 'archive.error.workerInitFailed' | 'archive.error.workerUnsupported' | 'archive.error.indexedDbUnavailable' | 'archive.error.entryTooLarge' | 'archive.loading.extracting' | 'archive.loading.rendering' | 'archive.loading.exporting' | 'media.audio.title' | 'media.audio.description' | 'media.audio.unsupported' | 'media.video.title' | 'media.video.unsupported' | 'media.video.hlsHint' | 'media.midi.title' | 'media.midi.loading' | 'media.midi.trackHeader' | 'media.midi.instrumentHeader' | 'media.midi.channelHeader' | 'media.midi.noteCountHeader' | 'media.midi.durationHeader' | 'media.midi.durationStat' | 'media.midi.trackStat' | 'media.midi.noteStat' | 'media.midi.parseFailed' | 'email.mbox.subject' | 'email.mbox.summary' | 'email.error.title' | 'email.meta.from' | 'email.meta.to' | 'email.meta.cc' | 'email.meta.date' | 'email.tabs.text' | 'email.tabs.headers' | 'email.attachments.title' | 'email.attachments.empty' | 'email.attachments.download' | 'email.attachments.opening' | 'email.attachments.nestedUnavailable' | 'email.loading.parsing' | 'data.font.sample' | 'data.error.fontFaceUnsupported' | 'data.title.font' | 'data.title.sqlite' | 'data.title.parquet' | 'data.title.avro' | 'data.title.wasm' | 'data.title.eps' | 'data.title.ai' | 'data.title.webarchive' | 'data.title.summary' | 'data.label.format' | 'data.label.size' | 'data.label.rendering' | 'data.label.objects' | 'data.label.sampleTable' | 'data.label.rows' | 'data.label.columns' | 'data.label.sampleRows' | 'data.label.imports' | 'data.label.exports' | 'data.label.magic' | 'data.label.note' | 'data.label.container' | 'data.value.schemaRead' | 'data.value.schemaUnread' | 'data.note.aiSummary' | 'data.note.postscriptSummary' | 'data.note.webarchive' | 'data.image.alt' | 'psd.title' | 'psd.action.fit' | 'psd.action.showAll' | 'psd.action.hideAll' | 'psd.layers.title' | 'psd.layers.redrawable' | 'psd.layers.empty' | 'psd.layers.hidden' | 'drawing.error.viewerLoadFailed' | 'drawing.error.excalidrawEmpty' | 'drawing.error.excalidrawTimeout' | 'drawing.error.drawioParseFailed' | 'drawing.error.drawioNoModel' | 'drawing.error.drawioNoElements' | 'drawing.error.viewerInitFailed' | 'drawing.error.drawioTimeout' | 'drawing.error.svgParseFailed' | 'drawing.error.plantumlRenderFailed' | 'drawing.title.excalidraw' | 'drawing.title.mermaid' | 'drawing.title.plantuml' | 'drawing.title.drawio' | 'drawing.toolbar.zoomOut' | 'drawing.toolbar.zoomIn' | 'drawing.toolbar.fit' | 'drawing.toolbar.fitWidth' | 'drawing.state.loading' | 'text.code.loadingHighlight' | 'ebook.toc' | 'ebook.reading' | 'ebook.itemCount' | 'epub.title' | 'epub.previousPage' | 'epub.nextPage' | 'epub.loading' | 'epub.chapterFallback' | 'epub.renderIncomplete' | 'umd.title' | 'umd.previousChapter' | 'umd.nextChapter' | 'umd.loading' | 'umd.emptyContent' | 'umd.chapterFallback' | 'umd.galleryFallback' | 'umd.warningBodyTooShort' | 'umd.error.unexpectedEnd' | 'umd.error.invalidFile' | 'typst.summaryRenderer' | 'typst.pageSummary.empty' | 'typst.pageSummary.ready' | 'typst.status.compiling' | 'typst.status.failed' | 'typst.status.rendered' | 'typst.loading.title' | 'typst.loading.hint' | 'typst.error.title' | 'typst.error.timeout' | 'typst.error.timeoutHint' | 'typst.error.assetHint' | 'typst.error.svgParseFailed' | 'typst.error.wasmLoadFailed' | 'xmind.toolbar.zoomOut' | 'xmind.toolbar.zoomIn' | 'xmind.toolbar.fit' | 'xmind.toolbar.fitTitle' | 'xmind.state.loading' | 'xmind.stats.nodes' | 'xmind.stats.depth' | 'xmind.stats.theme' | 'xmind.stats.template' | 'xmind.badge.paused' | 'xmind.badge.collapsed' | 'xmind.badge.floating' | 'xmind.badge.summary' | 'xmind.badge.callout' | 'xmind.imageResource' | 'xmind.error.unrecognized' | 'xmind.error.noCanvas' | 'cad.toolbar.fit' | 'cad.toolbar.zoomOut' | 'cad.toolbar.zoomIn' | 'cad.layers.title' | 'cad.layers.count' | 'cad.inspector.title' | 'cad.inspector.entities' | 'cad.inspector.blocks' | 'cad.inspector.pages' | 'cad.inspector.drawn' | 'cad.state.loadingViewer' | 'cad.state.parsing' | 'cad.error.parseFailed' | 'image.alt' | 'image.lightbox.alt' | 'image.lightbox.close' | 'gitBundle.error.invalid' | 'gitBundle.error.missingPack' | 'gitBundle.notice.delta' | 'gitBundle.title.history' | 'gitBundle.title.fileTree' | 'gitBundle.file.choose' | 'gitBundle.file.noTree' | 'gitBundle.file.none' | 'gitBundle.history.empty' | 'gitBundle.toolbar.summary' | 'gitBundle.meta.bundle' | 'gitBundle.meta.refs' | 'gitBundle.meta.commits' | 'gitBundle.meta.objects' | 'gitBundle.meta.deltas' | 'gitBundle.meta.objectFormat' | 'gitBundle.meta.objectTypes' | 'geo.error.unrecognized' | 'geo.error.xmlParseFailed' | 'geo.error.unsupported' | 'geo.title' | 'geo.featureCount' | 'geo.bounds' | 'geo.geometryTypes' | 'geo.aria' | 'geo.loading' | 'geo.projection' | 'geo.engine' | 'geo.basemap' | 'geo.basemap.offline' | 'geo.basemap.custom' | 'geo.engine.maplibre' | 'geo.engine.svg' | 'geo.error.projection' | 'geo.action.fit' | 'model.toolbar.fit' | 'model.toolbar.rotate' | 'model.toolbar.wireframe' | 'model.toolbar.grid' | 'model.toolbar.axes' | 'model.state.loadingSummary' | 'model.state.loading' | 'model.state.loaded' | 'model.state.parseFailed' | 'model.summary.meshes' | 'model.summary.points' | 'model.error.daeEmpty' | 'model.error.unsupported' | 'model.error.parseFailed' | 'model.notice.signature' | 'loading.generic.label' | 'loading.generic.hint' | 'loading.word.label' | 'loading.word.hint' | 'loading.wordWorker.hint' | 'loading.sheet.label' | 'loading.sheet.hint' | 'loading.csv.label' | 'loading.csv.hint' | 'loading.presentation.label' | 'loading.presentation.hint' | 'loading.pdf.label' | 'loading.pdf.hint' | 'loading.ofd.label' | 'loading.ofd.hint' | 'loading.archive.label' | 'loading.archive.hint' | 'loading.email.label' | 'loading.email.hint' | 'loading.msg.hint' | 'loading.eda.label' | 'loading.eda.hint' | 'loading.cad.label' | 'loading.cad.hint' | 'loading.dwg.hint' | 'loading.dwf.hint' | 'loading.dwfx.hint' | 'loading.xps.hint' | 'loading.drawio.label' | 'loading.drawio.hint' | 'loading.excalidraw.label' | 'loading.excalidraw.hint' | 'loading.epub.label' | 'loading.epub.hint' | 'loading.umd.label' | 'loading.umd.hint' | 'loading.image.label' | 'loading.image.hint' | 'loading.video.label' | 'loading.video.hint' | 'loading.audio.label' | 'loading.audio.hint';
|
|
6
|
+
export type FileViewerMessageKey = 'toolbar.zoomGroup' | 'toolbar.zoomOut' | 'toolbar.zoomIn' | 'toolbar.zoomReset' | 'toolbar.download' | 'toolbar.downloadTitle' | 'toolbar.print' | 'toolbar.printTitle' | 'toolbar.printDirect' | 'toolbar.printMask' | 'toolbar.printMaskTitle' | 'toolbar.printMaskAdd' | 'toolbar.printMaskClear' | 'toolbar.printMaskCancel' | 'toolbar.printMaskConfirm' | 'toolbar.printMaskHint' | 'toolbar.exportHtml' | 'toolbar.exportHtmlTitle' | 'toolbar.search' | 'toolbar.searchPlaceholder' | 'toolbar.searchPrevious' | 'toolbar.searchNext' | 'toolbar.searchClear' | 'toolbar.theme' | 'toolbar.themeToLight' | 'toolbar.themeToDark' | 'state.ready.title' | 'state.ready.message' | 'state.empty.title' | 'state.empty.message' | 'state.unsupported.install.title' | 'state.unsupported.install.message' | 'state.unsupported.install.description' | 'state.unsupported.title' | 'state.unsupported.message' | 'state.unsupported.description' | 'state.error.title' | 'preview.downloading' | 'preview.streamingPdf' | 'preview.reading' | 'error.download' | 'error.print' | 'error.exportHtml' | 'error.noDownloadSource' | 'error.noExportContent' | 'error.printUnavailable' | 'error.printWindowBlocked' | 'error.remoteDownload' | 'error.localRead' | 'error.load' | 'error.stream' | 'error.beforeOperation' | 'error.unknown' | 'error.blobUnavailable' | 'error.sourceUnsupported' | 'error.fileReadArrayBuffer' | 'error.fileReadDataUrl' | 'error.fileReadText' | 'error.imageDataUrlRead' | 'operation.download' | 'operation.print' | 'operation.exportHtml' | 'operation.zoomIn' | 'operation.zoomOut' | 'operation.zoomReset' | 'pdf.toolbar.toggleNavigation' | 'pdf.toolbar.previousPage' | 'pdf.toolbar.nextPage' | 'pdf.toolbar.fitWidth' | 'pdf.toolbar.zoomOut' | 'pdf.toolbar.zoomIn' | 'pdf.toolbar.rotateLeft' | 'pdf.toolbar.rotateRight' | 'pdf.nav.typeLabel' | 'pdf.nav.pagesTab' | 'pdf.nav.outlineTab' | 'pdf.nav.pagesTitle' | 'pdf.nav.outlineTitle' | 'pdf.nav.pageCount' | 'pdf.nav.itemCount' | 'pdf.nav.pageLabel' | 'pdf.nav.outlineEmpty' | 'pdf.nav.outlineFallbackTitle' | 'pdf.thumbnail.alt' | 'pdf.state.loading' | 'pdf.error.browserWindow' | 'pdf.error.missingSource' | 'pdf.error.loadFailed' | 'pdf.error.notLoaded' | 'pdf.error.unloaded' | 'pdf.error.canvasUnavailable' | 'pdf.export.pageTitle' | 'spreadsheet.loading.kicker' | 'spreadsheet.loading.title' | 'spreadsheet.loading.hint' | 'spreadsheet.loading.streaming' | 'spreadsheet.tabs.ariaLabel' | 'spreadsheet.state.parsingWorkbook' | 'spreadsheet.state.preparingSheet' | 'spreadsheet.state.preparingSheetNamed' | 'spreadsheet.state.cachedRows' | 'spreadsheet.state.rows' | 'spreadsheet.state.rowsAndColumns' | 'spreadsheet.error.parseFailed' | 'spreadsheet.error.workerFailed' | 'word.error.invalidDocx' | 'word.error.missingOdfContent' | 'word.error.odfXmlParseFailed' | 'word.title.rtf' | 'word.title.openDocumentPresentation' | 'word.title.openDocumentText' | 'word.page.fallback' | 'word.page.empty' | 'word.body' | 'word.body.empty' | 'ofd.state.loading' | 'ofd.error.empty' | 'ofd.error.parseFailed' | 'presentation.state.loading' | 'presentation.error.title' | 'presentation.error.parseFailed' | 'archive.error.nestedUnsupported' | 'archive.loading.readingDirectory' | 'archive.loading.readingDirectoryHint' | 'archive.search.placeholder' | 'archive.sidebar.hide' | 'archive.sidebar.show' | 'archive.preview.title' | 'archive.preview.chooseFile' | 'archive.preview.downloadFile' | 'archive.error.title' | 'archive.stats.summary' | 'archive.warning.encrypted' | 'archive.password.title' | 'archive.password.description' | 'archive.password.placeholder' | 'archive.password.invalid' | 'archive.password.required' | 'archive.password.cancel' | 'archive.password.confirm' | 'archive.error.passwordRequired' | 'archive.error.encryptedRequiresWorker' | 'archive.empty.title' | 'archive.empty.message' | 'archive.loading.initializingCandidate' | 'archive.loading.initializingCandidateHint' | 'archive.error.candidateInitTimeout' | 'archive.error.encryptedCheckTimeout' | 'archive.loading.directoryReadyHint' | 'archive.error.candidateReadTimeout' | 'archive.loading.workerFallback' | 'archive.loading.workerFallbackHint' | 'archive.notice.workerFallback' | 'archive.error.tooLarge' | 'archive.loading.initializingWorker' | 'archive.loading.initializingWorkerHint' | 'archive.error.workerInitFailed' | 'archive.error.workerUnsupported' | 'archive.error.indexedDbUnavailable' | 'archive.error.entryTooLarge' | 'archive.loading.extracting' | 'archive.loading.rendering' | 'archive.loading.exporting' | 'media.audio.title' | 'media.audio.description' | 'media.audio.unsupported' | 'media.video.title' | 'media.video.unsupported' | 'media.video.hlsHint' | 'media.midi.title' | 'media.midi.loading' | 'media.midi.trackHeader' | 'media.midi.instrumentHeader' | 'media.midi.channelHeader' | 'media.midi.noteCountHeader' | 'media.midi.durationHeader' | 'media.midi.durationStat' | 'media.midi.trackStat' | 'media.midi.noteStat' | 'media.midi.parseFailed' | 'email.mbox.subject' | 'email.mbox.summary' | 'email.error.title' | 'email.meta.from' | 'email.meta.to' | 'email.meta.cc' | 'email.meta.date' | 'email.tabs.text' | 'email.tabs.headers' | 'email.attachments.title' | 'email.attachments.empty' | 'email.attachments.download' | 'email.attachments.opening' | 'email.attachments.nestedUnavailable' | 'email.loading.parsing' | 'data.font.sample' | 'data.error.fontFaceUnsupported' | 'data.title.font' | 'data.title.sqlite' | 'data.title.parquet' | 'data.title.avro' | 'data.title.wasm' | 'data.title.eps' | 'data.title.ai' | 'data.title.webarchive' | 'data.title.summary' | 'data.label.format' | 'data.label.size' | 'data.label.rendering' | 'data.label.objects' | 'data.label.sampleTable' | 'data.label.rows' | 'data.label.columns' | 'data.label.sampleRows' | 'data.label.imports' | 'data.label.exports' | 'data.label.magic' | 'data.label.note' | 'data.label.container' | 'data.value.schemaRead' | 'data.value.schemaUnread' | 'data.note.aiSummary' | 'data.note.postscriptSummary' | 'data.note.webarchive' | 'data.image.alt' | 'psd.title' | 'psd.action.fit' | 'psd.action.showAll' | 'psd.action.hideAll' | 'psd.layers.title' | 'psd.layers.redrawable' | 'psd.layers.empty' | 'psd.layers.hidden' | 'drawing.error.viewerLoadFailed' | 'drawing.error.excalidrawEmpty' | 'drawing.error.excalidrawTimeout' | 'drawing.error.drawioParseFailed' | 'drawing.error.drawioNoModel' | 'drawing.error.drawioNoElements' | 'drawing.error.viewerInitFailed' | 'drawing.error.drawioTimeout' | 'drawing.error.svgParseFailed' | 'drawing.error.plantumlRenderFailed' | 'drawing.title.excalidraw' | 'drawing.title.mermaid' | 'drawing.title.plantuml' | 'drawing.title.drawio' | 'drawing.toolbar.zoomOut' | 'drawing.toolbar.zoomIn' | 'drawing.toolbar.fit' | 'drawing.toolbar.fitWidth' | 'drawing.state.loading' | 'text.code.loadingHighlight' | 'text.code.indexingLargeFile' | 'text.code.virtualized' | 'text.code.firstSegment' | 'text.code.previousSegment' | 'text.code.nextSegment' | 'text.code.lastSegment' | 'ebook.toc' | 'ebook.reading' | 'ebook.itemCount' | 'epub.title' | 'epub.previousPage' | 'epub.nextPage' | 'epub.loading' | 'epub.chapterFallback' | 'epub.renderIncomplete' | 'umd.title' | 'umd.previousChapter' | 'umd.nextChapter' | 'umd.loading' | 'umd.emptyContent' | 'umd.chapterFallback' | 'umd.galleryFallback' | 'umd.warningBodyTooShort' | 'umd.error.unexpectedEnd' | 'umd.error.invalidFile' | 'typst.summaryRenderer' | 'typst.pageSummary.empty' | 'typst.pageSummary.ready' | 'typst.status.compiling' | 'typst.status.failed' | 'typst.status.rendered' | 'typst.loading.title' | 'typst.loading.hint' | 'typst.error.title' | 'typst.error.timeout' | 'typst.error.timeoutHint' | 'typst.error.assetHint' | 'typst.error.svgParseFailed' | 'typst.error.wasmLoadFailed' | 'xmind.toolbar.zoomOut' | 'xmind.toolbar.zoomIn' | 'xmind.toolbar.fit' | 'xmind.toolbar.fitTitle' | 'xmind.state.loading' | 'xmind.stats.nodes' | 'xmind.stats.depth' | 'xmind.stats.theme' | 'xmind.stats.template' | 'xmind.badge.paused' | 'xmind.badge.collapsed' | 'xmind.badge.floating' | 'xmind.badge.summary' | 'xmind.badge.callout' | 'xmind.imageResource' | 'xmind.error.unrecognized' | 'xmind.error.noCanvas' | 'cad.toolbar.fit' | 'cad.toolbar.zoomOut' | 'cad.toolbar.zoomIn' | 'cad.layers.title' | 'cad.layers.count' | 'cad.inspector.title' | 'cad.inspector.entities' | 'cad.inspector.blocks' | 'cad.inspector.pages' | 'cad.inspector.drawn' | 'cad.state.loadingViewer' | 'cad.state.parsing' | 'cad.error.parseFailed' | 'image.alt' | 'image.lightbox.alt' | 'image.lightbox.close' | 'gitBundle.error.invalid' | 'gitBundle.error.missingPack' | 'gitBundle.notice.delta' | 'gitBundle.title.history' | 'gitBundle.title.fileTree' | 'gitBundle.file.choose' | 'gitBundle.file.noTree' | 'gitBundle.file.none' | 'gitBundle.history.empty' | 'gitBundle.toolbar.summary' | 'gitBundle.meta.bundle' | 'gitBundle.meta.refs' | 'gitBundle.meta.commits' | 'gitBundle.meta.objects' | 'gitBundle.meta.deltas' | 'gitBundle.meta.objectFormat' | 'gitBundle.meta.objectTypes' | 'geo.error.unrecognized' | 'geo.error.xmlParseFailed' | 'geo.error.unsupported' | 'geo.title' | 'geo.featureCount' | 'geo.bounds' | 'geo.geometryTypes' | 'geo.aria' | 'geo.loading' | 'geo.projection' | 'geo.engine' | 'geo.basemap' | 'geo.basemap.offline' | 'geo.basemap.custom' | 'geo.engine.maplibre' | 'geo.engine.svg' | 'geo.error.projection' | 'geo.action.fit' | 'model.toolbar.fit' | 'model.toolbar.rotate' | 'model.toolbar.wireframe' | 'model.toolbar.grid' | 'model.toolbar.axes' | 'model.state.loadingSummary' | 'model.state.loading' | 'model.state.loaded' | 'model.state.parseFailed' | 'model.summary.meshes' | 'model.summary.points' | 'model.error.daeEmpty' | 'model.error.unsupported' | 'model.error.parseFailed' | 'model.notice.signature' | 'loading.generic.label' | 'loading.generic.hint' | 'loading.word.label' | 'loading.word.hint' | 'loading.wordWorker.hint' | 'loading.sheet.label' | 'loading.sheet.hint' | 'loading.csv.label' | 'loading.csv.hint' | 'loading.presentation.label' | 'loading.presentation.hint' | 'loading.pdf.label' | 'loading.pdf.hint' | 'loading.ofd.label' | 'loading.ofd.hint' | 'loading.archive.label' | 'loading.archive.hint' | 'loading.email.label' | 'loading.email.hint' | 'loading.msg.hint' | 'loading.eda.label' | 'loading.eda.hint' | 'loading.cad.label' | 'loading.cad.hint' | 'loading.dwg.hint' | 'loading.dwf.hint' | 'loading.dwfx.hint' | 'loading.xps.hint' | 'loading.drawio.label' | 'loading.drawio.hint' | 'loading.excalidraw.label' | 'loading.excalidraw.hint' | 'loading.epub.label' | 'loading.epub.hint' | 'loading.umd.label' | 'loading.umd.hint' | 'loading.image.label' | 'loading.image.hint' | 'loading.video.label' | 'loading.video.hint' | 'loading.audio.label' | 'loading.audio.hint';
|
|
6
7
|
export type FileViewerMessageParams = Record<string, string | number | boolean | null | undefined>;
|
|
7
8
|
export type FileViewerMessageResolver = (key: FileViewerMessageKey, params: FileViewerMessageParams, locale: FileViewerLocale) => string | undefined;
|
|
8
9
|
export type FileViewerMessages = Partial<Record<FileViewerMessageKey, string>> | FileViewerMessageResolver;
|
|
@@ -23,8 +24,8 @@ export interface FileViewerFitOptions {
|
|
|
23
24
|
}
|
|
24
25
|
export type FileViewerLifecyclePhase = 'load-start' | 'load-complete' | 'unload-start' | 'unload-complete';
|
|
25
26
|
export type FileViewerOperationType = 'download' | 'print' | 'export-html' | 'zoom-in' | 'zoom-out' | 'zoom-reset';
|
|
26
|
-
export type FileViewerToolbarItem = 'search' | 'zoom' | 'download' | 'print' | 'exportHtml' | 'export-html';
|
|
27
|
-
export type FileViewerResolvedToolbarItem = 'search' | 'zoom' | 'download' | 'print' | 'exportHtml';
|
|
27
|
+
export type FileViewerToolbarItem = 'search' | 'zoom' | 'download' | 'print' | 'exportHtml' | 'export-html' | 'theme';
|
|
28
|
+
export type FileViewerResolvedToolbarItem = 'search' | 'zoom' | 'download' | 'print' | 'exportHtml' | 'theme';
|
|
28
29
|
export type FileViewerToolbarActionMap = Partial<Record<FileViewerOperationType, boolean>>;
|
|
29
30
|
export type FileViewerRenderStateKind = 'idle' | 'loading' | 'ready' | 'empty' | 'unsupported' | 'error';
|
|
30
31
|
export type FileViewerRendererCategory = 'office' | 'document' | 'archive' | 'email' | 'eda' | 'cad' | 'model' | 'geo' | 'drawing' | 'mindmap' | 'ebook' | 'image' | 'markdown' | 'code' | 'media' | 'asset' | 'fallback';
|
|
@@ -48,6 +49,8 @@ export interface FileViewerToolbarOptions {
|
|
|
48
49
|
exportHtml?: boolean;
|
|
49
50
|
zoom?: boolean;
|
|
50
51
|
search?: boolean;
|
|
52
|
+
/** Shows a manual light/dark mode toggle without changing the host page theme. */
|
|
53
|
+
theme?: boolean;
|
|
51
54
|
/** Built-in toolbar group order. Missing entries keep their default relative order. */
|
|
52
55
|
order?: FileViewerToolbarItem[];
|
|
53
56
|
/** Controls which built-in toolbar actions are displayed without disabling controller APIs. */
|
|
@@ -119,10 +122,33 @@ export interface FileViewerPdfOptions {
|
|
|
119
122
|
streaming?: boolean | 'same-origin';
|
|
120
123
|
rangeChunkSize?: number;
|
|
121
124
|
withCredentials?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Base URL for the self-hosted PDF worker, cMaps, WASM, standard fonts, and
|
|
127
|
+
* CJK fallback fonts. Useful for SPA routes whose document URL is deeper
|
|
128
|
+
* than the deployment public path, for example `/workspace/c/`.
|
|
129
|
+
*/
|
|
130
|
+
assetBaseUrl?: string | URL;
|
|
122
131
|
workerUrl?: string;
|
|
123
132
|
cMapUrl?: string;
|
|
124
133
|
wasmUrl?: string;
|
|
125
134
|
standardFontDataUrl?: string;
|
|
135
|
+
/**
|
|
136
|
+
* Enables the self-hosted CJK fallback used when a PDF references a font
|
|
137
|
+
* such as Microsoft YaHei without embedding the font data. Defaults to true.
|
|
138
|
+
*/
|
|
139
|
+
cjkFontFallback?: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Repairs malformed Identity-H/V CJK fonts that omit ToUnicode when the PDF
|
|
142
|
+
* also embeds a usable same-family TrueType cmap. Defaults to true. The
|
|
143
|
+
* repair is applied only to the in-memory preview and never changes the
|
|
144
|
+
* original file used by download operations.
|
|
145
|
+
*/
|
|
146
|
+
identityFontRepair?: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Directory containing `noto-sans-sc.css`, its `files/` font shards, and
|
|
149
|
+
* the bundled font license. The path is resolved against the document base.
|
|
150
|
+
*/
|
|
151
|
+
cjkFontFallbackPath?: string;
|
|
126
152
|
}
|
|
127
153
|
export interface FileViewerDocxOptions {
|
|
128
154
|
worker?: boolean;
|
|
@@ -160,6 +186,28 @@ export interface FileViewerPresentationOptions {
|
|
|
160
186
|
workerType?: WorkerType;
|
|
161
187
|
}
|
|
162
188
|
export type FileRenderExportMode = 'export' | 'print';
|
|
189
|
+
export type FileViewerRenderPurpose = 'preview' | 'thumbnail';
|
|
190
|
+
export type FileViewerThumbnailFormat = 'webp' | 'jpeg' | 'png';
|
|
191
|
+
export type FileViewerThumbnailFit = 'contain' | 'cover';
|
|
192
|
+
export interface FileViewerThumbnailCaptureOptions {
|
|
193
|
+
width: number;
|
|
194
|
+
height: number;
|
|
195
|
+
format: FileViewerThumbnailFormat;
|
|
196
|
+
quality: number;
|
|
197
|
+
fit: FileViewerThumbnailFit;
|
|
198
|
+
background: string;
|
|
199
|
+
signal?: AbortSignal;
|
|
200
|
+
}
|
|
201
|
+
export interface FileRenderThumbnailAdapter {
|
|
202
|
+
/** Prepare lazy content immediately before capture. */
|
|
203
|
+
beforeCapture?: (options: FileViewerThumbnailCaptureOptions) => void | Promise<void>;
|
|
204
|
+
/** Identifies a capture result that comes from packaged metadata rather than rendered content. */
|
|
205
|
+
captureSource?: 'embedded' | 'rendered';
|
|
206
|
+
/** A renderer-native fast path. Returning null delegates to the DOM fallback. */
|
|
207
|
+
capture?: (options: FileViewerThumbnailCaptureOptions) => Blob | null | Promise<Blob | null>;
|
|
208
|
+
/** The first page/slide/sheet/cover element used by the DOM fallback. */
|
|
209
|
+
getTarget?: (options: FileViewerThumbnailCaptureOptions) => Element | null | Promise<Element | null>;
|
|
210
|
+
}
|
|
163
211
|
export interface FileRenderExportOptions {
|
|
164
212
|
mode: FileRenderExportMode;
|
|
165
213
|
title: string;
|
|
@@ -176,9 +224,12 @@ export interface FileRenderContext {
|
|
|
176
224
|
filename?: string;
|
|
177
225
|
url?: string;
|
|
178
226
|
streamUrl?: string;
|
|
227
|
+
signal?: AbortSignal;
|
|
179
228
|
options?: FileViewerOptions;
|
|
180
229
|
surface?: RenderSurface;
|
|
181
230
|
registerExportAdapter?: (adapter: FileRenderExportAdapter | null) => void;
|
|
231
|
+
registerThumbnailAdapter?: (adapter: FileRenderThumbnailAdapter | null) => void;
|
|
232
|
+
renderPurpose?: FileViewerRenderPurpose;
|
|
182
233
|
onProgressiveRender?: () => void;
|
|
183
234
|
renderNestedBuffer?: (buffer: ArrayBuffer, type: string, target: HTMLDivElement, context?: FileRenderContext) => Promise<FileViewerRenderedInstance | undefined>;
|
|
184
235
|
}
|
|
@@ -380,6 +431,14 @@ export interface FileViewerAiOptions {
|
|
|
380
431
|
chunkSize?: number;
|
|
381
432
|
chunkOverlap?: number;
|
|
382
433
|
}
|
|
434
|
+
export interface FileViewerTextOptions {
|
|
435
|
+
/** Switches text/code/Markdown to bounded virtual rendering above this byte size. Defaults to 512 KiB. */
|
|
436
|
+
virtualizeAboveBytes?: number;
|
|
437
|
+
/** Maximum source bytes mounted for one very long logical line at a time. Defaults to 16 KiB. */
|
|
438
|
+
maxRenderedLineBytes?: number;
|
|
439
|
+
/** Extra logical lines mounted above and below the visible viewport. Defaults to 12. */
|
|
440
|
+
virtualOverscanLines?: number;
|
|
441
|
+
}
|
|
383
442
|
export type FileViewerUiDensity = 'comfortable' | 'compact';
|
|
384
443
|
export interface FileViewerUiOptions {
|
|
385
444
|
/**
|
|
@@ -460,6 +519,7 @@ export interface FileViewerOptions {
|
|
|
460
519
|
toolbar?: boolean | FileViewerToolbarOptions;
|
|
461
520
|
search?: boolean | FileViewerSearchOptions;
|
|
462
521
|
ai?: boolean | FileViewerAiOptions;
|
|
522
|
+
text?: FileViewerTextOptions;
|
|
463
523
|
/**
|
|
464
524
|
* Explicit content fitting strategy. When omitted, each renderer keeps its
|
|
465
525
|
* historical first-screen behavior for backward compatibility.
|
|
@@ -681,6 +741,7 @@ export interface FileViewerComponentEventMap {
|
|
|
681
741
|
'zoom-change': FileViewerZoomState;
|
|
682
742
|
'view-state-change': FileViewerViewStateChange;
|
|
683
743
|
'fit-change': FileViewerFitResult;
|
|
744
|
+
'theme-change': FileViewerResolvedThemeMode;
|
|
684
745
|
}
|
|
685
746
|
export type FileViewerEventType = keyof FileViewerComponentEventMap;
|
|
686
747
|
export type FileViewerEvent = {
|
|
@@ -703,6 +764,7 @@ export interface FileViewerComponentEmits {
|
|
|
703
764
|
(event: 'zoom-change', state: FileViewerComponentEventMap['zoom-change']): void;
|
|
704
765
|
(event: 'view-state-change', change: FileViewerComponentEventMap['view-state-change']): void;
|
|
705
766
|
(event: 'fit-change', result: FileViewerComponentEventMap['fit-change']): void;
|
|
767
|
+
(event: 'theme-change', theme: FileViewerComponentEventMap['theme-change']): void;
|
|
706
768
|
}
|
|
707
769
|
export interface FileViewerPublicApi {
|
|
708
770
|
destroy(): void;
|
|
@@ -809,6 +871,7 @@ export interface RendererLoadContext {
|
|
|
809
871
|
options: FileViewerOptions;
|
|
810
872
|
signal?: AbortSignal;
|
|
811
873
|
registerExportAdapter?: (adapter: FileRenderExportAdapter | null) => void;
|
|
874
|
+
registerThumbnailAdapter?: (adapter: FileRenderThumbnailAdapter | null) => void;
|
|
812
875
|
renderContext?: FileRenderContext;
|
|
813
876
|
}
|
|
814
877
|
export interface RendererSession {
|
|
@@ -860,9 +923,15 @@ export interface FileViewerRendererPreset<Handler = FileRenderHandler> {
|
|
|
860
923
|
}
|
|
861
924
|
export type FileViewerRendererPluginInput<Handler = FileRenderHandler> = FileViewerRendererPlugin<Handler> | FileViewerRendererPreset<Handler> | readonly FileViewerRendererPluginInput<Handler>[];
|
|
862
925
|
export type FileViewerRendererPresetInput<Handler = FileRenderHandler> = FileViewerRendererPresetName | FileViewerRendererPluginInput<Handler> | readonly FileViewerRendererPresetInput<Handler>[];
|
|
926
|
+
export interface FileViewerLoadOptions {
|
|
927
|
+
signal?: AbortSignal;
|
|
928
|
+
}
|
|
863
929
|
export interface FileViewerInstance {
|
|
864
930
|
readonly container: HTMLElement;
|
|
865
|
-
|
|
931
|
+
/** Installs configured renderer plugins without loading a document. */
|
|
932
|
+
prepare?(): Promise<void>;
|
|
933
|
+
load(source: FileViewerSource, options?: FileViewerLoadOptions): Promise<RendererSession | null>;
|
|
934
|
+
unload?(reason?: FileViewerLifecycleContext['reason']): Promise<void>;
|
|
866
935
|
destroy(reason?: FileViewerLifecycleContext['reason']): Promise<void>;
|
|
867
936
|
updateOptions(options: Partial<FileViewerOptions>): void;
|
|
868
937
|
getCapabilities(extension?: string): FileViewerOperationAvailability;
|
|
@@ -870,6 +939,8 @@ export interface FileViewerInstance {
|
|
|
870
939
|
getSource(): NormalizedFileViewerSource | null;
|
|
871
940
|
registerExportAdapter(adapter: FileRenderExportAdapter | null): void;
|
|
872
941
|
getExportAdapter(): FileRenderExportAdapter | null;
|
|
942
|
+
registerThumbnailAdapter?(adapter: FileRenderThumbnailAdapter | null): void;
|
|
943
|
+
getThumbnailAdapter?(): FileRenderThumbnailAdapter | null;
|
|
873
944
|
download(options?: FileViewerDownloadOptions): Promise<void>;
|
|
874
945
|
exportHtml(options?: FileViewerExportHtmlOptions): Promise<string>;
|
|
875
946
|
print(options?: FileViewerPrintOptions): Promise<void>;
|
|
@@ -322,7 +322,10 @@ export const createFileViewerDomSearchController = ({ root, options, waitForDomU
|
|
|
322
322
|
disconnectObserver();
|
|
323
323
|
const currentRoot = root();
|
|
324
324
|
const MutationObserverCtor = getMutationObserverConstructor(currentRoot);
|
|
325
|
-
if (!shouldObserve ||
|
|
325
|
+
if (!shouldObserve ||
|
|
326
|
+
!currentRoot ||
|
|
327
|
+
!MutationObserverCtor ||
|
|
328
|
+
findFileViewerSearchProvider(currentRoot)) {
|
|
326
329
|
return;
|
|
327
330
|
}
|
|
328
331
|
observer = new MutationObserverCtor(rerunAfterDomChange);
|
package/dist/headless.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, DEFAULT_FILE_VIEWER_TOOLBAR_
|
|
|
7
7
|
export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages';
|
|
8
8
|
export type { FileViewerI18nInput, FileViewerResolvedLocale, ResolveFileViewerI18nInput, } from './i18n/messages';
|
|
9
9
|
export type { BuildFileViewerLifecycleContextFromNormalizedSourceInput, BuildFileViewerOperationContextFromLifecycleStateInput, BuildFileViewerLifecycleContextInput, BuiltFileViewerLifecycleContext, BuiltFileViewerOperationContext, CreateFileViewerLifecycleActionsInput, CreateFileViewerPublicApiInput, CreateFileViewerToolbarActionsInput, CreateFileViewerToolbarControllerActionHandlersInput, DispatchFileViewerLifecycleEventInput, DispatchFileViewerOperationAvailabilityChangeInput, DispatchFileViewerOperationContextEventInput, DispatchFileViewerZoomChangeInput, FileViewerActiveUnloadState, FileViewerLifecycleActions, FileViewerLifecycleComponentEmit, FileViewerLifecycleHookErrorLogger, FileViewerLifecycleStateController, FileViewerOperationErrorLogger, FileViewerToolbarActions, FileViewerToolbarControllerActionHandlers, FileViewerToolbarState, FileViewerToolbarZoomSyncSnapshot, FileViewerZoomButtonAction, ReportFileViewerLifecycleHookErrorInput, ReportFileViewerOperationErrorInput, ResolveFileViewerBeforeOperationErrorMessageInput, ResolveFileViewerLifecycleHookErrorMessageInput, ResolveFileViewerOperationAvailabilityInput, ResolveFileViewerToolbarStateInput, RunFileViewerActiveUnloadCompleteInput, RunFileViewerActiveUnloadStartInput, RunFileViewerBeforeOperationInput, RunFileViewerToolbarAvailabilitySyncInput, RunFileViewerToolbarZoomSyncInput, SerializedFileViewerContext, } from './lifecycle/operations';
|
|
10
|
-
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, } from './config/options';
|
|
10
|
+
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerColorScheme, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, toggleFileViewerColorScheme, } from './config/options';
|
|
11
11
|
export type { FileViewerSerializableCadOptions, FileViewerSerializableOptions, FileViewerSerializableToolbarOptions, } from './config/options';
|
|
12
12
|
export { resolveFileViewerPresentationState, } from './presentation/state';
|
|
13
13
|
export type { FileViewerPresentationState, ResolveFileViewerPresentationStateInput, } from './presentation/state';
|
|
@@ -24,4 +24,4 @@ export { DEFAULT_FILE_VIEWER_STATE_THEME, DEFAULT_FILE_VIEWER_UNSUPPORTED_DESCRI
|
|
|
24
24
|
export type { FileViewerErrorMessageFormatter, } from './viewer/state';
|
|
25
25
|
export { buildFileViewerWatermarkBackgroundImage, buildFileViewerWatermarkInlineStyle, buildFileViewerWatermarkStyle, buildFileViewerWatermarkSvg, normalizeFileViewerWatermark, resolveFileViewerWatermarkPresentationState, } from './features/watermark';
|
|
26
26
|
export type { FileViewerWatermarkPresentationState, FileViewerWatermarkStyle, } from './features/watermark';
|
|
27
|
-
export type { FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerDownloadOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoOptions, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderStateKind, FileViewerRenderedInstance, FileViewerRendererCategory, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RenderSurface, RendererCapability, RendererDefinition, RendererLoadContext, RendererLoader, RendererPlugin, RendererRegistry, RendererSession, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
|
|
27
|
+
export type { FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerDownloadOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoOptions, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderStateKind, FileViewerRenderedInstance, FileViewerRendererCategory, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RenderSurface, RendererCapability, RendererDefinition, RendererLoadContext, RendererLoader, RendererPlugin, RendererRegistry, RendererSession, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
|
package/dist/headless.js
CHANGED
|
@@ -9,7 +9,7 @@ export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_
|
|
|
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, DEFAULT_FILE_VIEWER_TOOLBAR_ORDER, 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, resolveFileViewerToolbarOrder, resolveFileViewerToolbarState, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations.js';
|
|
11
11
|
export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages.js';
|
|
12
|
-
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, } from './config/options.js';
|
|
12
|
+
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerColorScheme, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, toggleFileViewerColorScheme, } from './config/options.js';
|
|
13
13
|
export { resolveFileViewerPresentationState, } from './presentation/state.js';
|
|
14
14
|
export { createRendererRegistry, } from './registry/registry.js';
|
|
15
15
|
export { createFileViewerRendererDispatcher, } from './rendering/dispatcher.js';
|
package/dist/i18n/messages.js
CHANGED
|
@@ -24,6 +24,9 @@ const ZH_CN_MESSAGES = {
|
|
|
24
24
|
'toolbar.searchPrevious': '上一个匹配',
|
|
25
25
|
'toolbar.searchNext': '下一个匹配',
|
|
26
26
|
'toolbar.searchClear': '清除搜索',
|
|
27
|
+
'toolbar.theme': '主题',
|
|
28
|
+
'toolbar.themeToLight': '切换为浅色模式',
|
|
29
|
+
'toolbar.themeToDark': '切换为深色模式',
|
|
27
30
|
'state.ready.title': '预览完成',
|
|
28
31
|
'state.ready.message': '文件内容已完成渲染。',
|
|
29
32
|
'state.empty.title': '暂无文件',
|
|
@@ -251,6 +254,12 @@ const ZH_CN_MESSAGES = {
|
|
|
251
254
|
'drawing.toolbar.fitWidth': '适合宽度',
|
|
252
255
|
'drawing.state.loading': '正在加载绘图预览...',
|
|
253
256
|
'text.code.loadingHighlight': '正在加载高亮...',
|
|
257
|
+
'text.code.indexingLargeFile': '正在建立大文件索引 {progress}%',
|
|
258
|
+
'text.code.virtualized': '大文件 · 虚拟滚动 · 已关闭高亮',
|
|
259
|
+
'text.code.firstSegment': '首段',
|
|
260
|
+
'text.code.previousSegment': '上一段',
|
|
261
|
+
'text.code.nextSegment': '下一段',
|
|
262
|
+
'text.code.lastSegment': '末段',
|
|
254
263
|
'ebook.toc': '目录',
|
|
255
264
|
'ebook.reading': '阅读中',
|
|
256
265
|
'ebook.itemCount': '{count} 项',
|
|
@@ -434,6 +443,9 @@ const EN_US_MESSAGES = {
|
|
|
434
443
|
'toolbar.searchPrevious': 'Previous match',
|
|
435
444
|
'toolbar.searchNext': 'Next match',
|
|
436
445
|
'toolbar.searchClear': 'Clear search',
|
|
446
|
+
'toolbar.theme': 'Theme',
|
|
447
|
+
'toolbar.themeToLight': 'Switch to light mode',
|
|
448
|
+
'toolbar.themeToDark': 'Switch to dark mode',
|
|
437
449
|
'state.ready.title': 'Preview ready',
|
|
438
450
|
'state.ready.message': 'The file has been rendered.',
|
|
439
451
|
'state.empty.title': 'No file selected',
|
|
@@ -661,6 +673,12 @@ const EN_US_MESSAGES = {
|
|
|
661
673
|
'drawing.toolbar.fitWidth': 'Fit width',
|
|
662
674
|
'drawing.state.loading': 'Loading drawing preview...',
|
|
663
675
|
'text.code.loadingHighlight': 'Loading syntax highlighting...',
|
|
676
|
+
'text.code.indexingLargeFile': 'Indexing large file {progress}%',
|
|
677
|
+
'text.code.virtualized': 'Large file · virtual scrolling · highlighting off',
|
|
678
|
+
'text.code.firstSegment': 'First segment',
|
|
679
|
+
'text.code.previousSegment': 'Previous segment',
|
|
680
|
+
'text.code.nextSegment': 'Next segment',
|
|
681
|
+
'text.code.lastSegment': 'Last segment',
|
|
664
682
|
'ebook.toc': 'Table of contents',
|
|
665
683
|
'ebook.reading': 'Reading',
|
|
666
684
|
'ebook.itemCount': '{count} items',
|
package/dist/index.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ export { FALLBACK_FILE_VIEWER_LOADING_THEME, FILE_VIEWER_LOADING_THEME_MAP, appl
|
|
|
55
55
|
export type { FileViewerLoadingController, FileViewerLoadingControllerActionHandlers, RunFileViewerLoadingExtensionSyncInput, } from './viewer/loading';
|
|
56
56
|
export { createFileViewerLifecycleFacade, } from './lifecycle/facade';
|
|
57
57
|
export type { BuildFileViewerLifecycleFacadeLoadStartStateInput, BuildFileViewerLifecycleFacadeRenderCompleteStateInput, CreateFileViewerLifecycleFacadeInput, FileViewerLifecycleFacade, } from './lifecycle/facade';
|
|
58
|
-
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, } from './config/options';
|
|
58
|
+
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerColorScheme, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, toggleFileViewerColorScheme, } from './config/options';
|
|
59
59
|
export { resolveFileViewerPresentationState, } from './presentation/state';
|
|
60
60
|
export type { FileViewerPresentationState, ResolveFileViewerPresentationStateInput, } from './presentation/state';
|
|
61
61
|
export { createFileViewerRendererDispatcher, } from './rendering/dispatcher';
|
|
@@ -88,4 +88,4 @@ export type { CreateFileViewerZoomControllerOptions, FileViewerZoomOperation, }
|
|
|
88
88
|
export type { CreateViewerOptions } from './viewer/createViewer';
|
|
89
89
|
export type { BuildExportHtmlDocumentOptions, BuildFileViewerRenderedHtmlDocumentOptions, } from './output/export';
|
|
90
90
|
export type { CreateFileViewerWorkerControllerOptions, FileViewerWorkerContext, FileViewerWorkerController, FileViewerWorkerErrorHook, FileViewerWorkerEventHandler, FileViewerWorkerFactory, FileViewerWorkerMessageHook, WorkerProvider, WorkerRef, } from './platform/worker';
|
|
91
|
-
export type { FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, 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, FileViewerStyleIsolation, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, 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';
|
|
91
|
+
export type { FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoBasemapOptions, FileViewerGeoBasemapPreset, FileViewerGeoOptions, FileRenderContext, FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLoadOptions, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderedInstance, FileViewerRendererMode, FileViewerRendererPluginAssetKind, FileViewerRendererPluginAssetManifest, FileViewerRendererPluginAssetEntry, FileViewerRenderStateKind, FileViewerRenderPurpose, FileViewerRendererCategory, FileViewerRendererHandlerRegistration, FileViewerRendererInstallContext, FileViewerRendererPlugin, FileViewerRendererPluginInput, FileViewerRendererPresetInput, FileViewerRendererPresetName, FileViewerRendererPreset, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerThumbnailCaptureOptions, FileViewerThumbnailFit, FileViewerThumbnailFormat, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerStyleIsolation, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, 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
|
@@ -166,7 +166,7 @@ export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, cre
|
|
|
166
166
|
export { FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, DEFAULT_FILE_VIEWER_TOOLBAR_ORDER, 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, resolveFileViewerToolbarOrder, resolveFileViewerToolbarState, resolveFileViewerToolbarPosition, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations.js';
|
|
167
167
|
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';
|
|
168
168
|
export { createFileViewerLifecycleFacade, } from './lifecycle/facade.js';
|
|
169
|
-
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, } from './config/options.js';
|
|
169
|
+
export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerColorScheme, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, toggleFileViewerColorScheme, } from './config/options.js';
|
|
170
170
|
export { resolveFileViewerPresentationState, } from './presentation/state.js';
|
|
171
171
|
export { createFileViewerRendererDispatcher, } from './rendering/dispatcher.js';
|
|
172
172
|
export { appendFileViewerStyle, buildFileRenderContextFromLoadContext, applyFileViewerRenderSurfaceState, clearFileViewerRenderSurface, createFileRenderHandlerRendererSession, createFileRenderHandlerRegistry, createFileRenderHandlerLoader, createFileViewerRenderSurfaceActionHandlers, createFileViewerRenderReadinessTarget, createFileViewerRenderSurface, createFileViewerRenderSurfaceState, createFileViewerRenderSurfaceStateTarget, createFileViewerRenderTarget, DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS, DEFAULT_FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_LOGGER, FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE, disposeActiveFileViewerRendererSession, disposeFileViewerRendered, disposeFileViewerRendererSession, getFileViewerShadowRootForNode, isFileViewerShadowRoot, normalizeFileViewerStyleIsolation, removeFileViewerRenderTarget, reportFileViewerRenderSessionDisposeError, resetFileViewerRenderSurface, resolveFileViewerStyleIsolation, resolveFileViewerRenderSessionDisposeErrorMessage, runFileViewerRenderSurfaceClear, runFileViewerRenderSurfaceMount, renderFileViewerHandler, } from './rendering/handler.js';
|
|
@@ -18,7 +18,7 @@ export declare const FILE_VIEWER_OPERATION_LABELS: {
|
|
|
18
18
|
};
|
|
19
19
|
export declare const FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX = "\u64CD\u4F5C\u524D\u7F6E\u6821\u9A8C\u5931\u8D25";
|
|
20
20
|
export declare const FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX = "FileViewer";
|
|
21
|
-
export declare const DEFAULT_FILE_VIEWER_TOOLBAR_ORDER: readonly ["search", "zoom", "download", "print", "exportHtml"];
|
|
21
|
+
export declare const DEFAULT_FILE_VIEWER_TOOLBAR_ORDER: readonly ["search", "zoom", "download", "print", "exportHtml", "theme"];
|
|
22
22
|
export interface FileViewerLifecycleComponentEmit {
|
|
23
23
|
(event: 'load-start', context: FileViewerLifecycleContext): void;
|
|
24
24
|
(event: 'load-complete', context: FileViewerLifecycleContext): void;
|
|
@@ -35,6 +35,7 @@ export const DEFAULT_FILE_VIEWER_TOOLBAR_ORDER = [
|
|
|
35
35
|
'download',
|
|
36
36
|
'print',
|
|
37
37
|
'exportHtml',
|
|
38
|
+
'theme',
|
|
38
39
|
];
|
|
39
40
|
export const buildFileViewerLifecycleContext = ({ phase, version, source, filename, file, url, size, bufferSize, startedAt, duration, timestamp, reason, }) => {
|
|
40
41
|
var _a;
|
|
@@ -257,6 +258,9 @@ const normalizeFileViewerToolbarItem = (item) => {
|
|
|
257
258
|
if (item === 'exportHtml' || item === 'export-html') {
|
|
258
259
|
return 'exportHtml';
|
|
259
260
|
}
|
|
261
|
+
if (item === 'theme') {
|
|
262
|
+
return 'theme';
|
|
263
|
+
}
|
|
260
264
|
return undefined;
|
|
261
265
|
};
|
|
262
266
|
export const resolveFileViewerToolbarOrder = (toolbar) => {
|
|
@@ -498,6 +502,7 @@ export const normalizeFileViewerToolbar = (options) => {
|
|
|
498
502
|
exportHtml: false,
|
|
499
503
|
zoom: false,
|
|
500
504
|
search: false,
|
|
505
|
+
theme: false,
|
|
501
506
|
order: resolveFileViewerToolbarOrder(undefined),
|
|
502
507
|
};
|
|
503
508
|
}
|
|
@@ -508,6 +513,7 @@ export const normalizeFileViewerToolbar = (options) => {
|
|
|
508
513
|
exportHtml: toolbar.exportHtml !== false && isFileViewerToolbarOperationVisible(toolbar, 'export-html'),
|
|
509
514
|
zoom: toolbar.zoom !== false && hasAnyToolbarZoomOperation(toolbar),
|
|
510
515
|
search: toolbar.search !== false,
|
|
516
|
+
theme: toolbar.theme !== false,
|
|
511
517
|
order: resolveFileViewerToolbarOrder(toolbar),
|
|
512
518
|
items: toolbar.items,
|
|
513
519
|
permissions: toolbar.permissions,
|
|
@@ -524,6 +530,7 @@ export const normalizeFileViewerToolbar = (options) => {
|
|
|
524
530
|
exportHtml: true,
|
|
525
531
|
zoom: true,
|
|
526
532
|
search: true,
|
|
533
|
+
theme: true,
|
|
527
534
|
order: resolveFileViewerToolbarOrder(undefined),
|
|
528
535
|
};
|
|
529
536
|
};
|
|
@@ -556,10 +563,11 @@ export const resolveVisibleFileViewerToolbar = (toolbar, availability) => {
|
|
|
556
563
|
print: toolbar.print && availability.print,
|
|
557
564
|
exportHtml: toolbar.exportHtml && availability.exportHtml,
|
|
558
565
|
zoom: toolbar.zoom && availability.zoom,
|
|
566
|
+
theme: toolbar.theme !== false,
|
|
559
567
|
};
|
|
560
568
|
};
|
|
561
569
|
export const hasVisibleFileViewerToolbarActions = (toolbar) => {
|
|
562
|
-
return !!(toolbar.download || toolbar.print || toolbar.exportHtml || toolbar.zoom);
|
|
570
|
+
return !!(toolbar.download || toolbar.print || toolbar.exportHtml || toolbar.zoom || toolbar.theme);
|
|
563
571
|
};
|
|
564
572
|
export const isFileViewerZoomButtonDisabled = ({ toolbarDisabled = false, availability, zoomState, action, }) => {
|
|
565
573
|
const operation = FILE_VIEWER_ZOOM_BUTTON_OPERATIONS[action];
|
|
@@ -9,6 +9,7 @@ export declare const DEFAULT_FILE_VIEWER_PDF_WORKER_PATH = "vendor/pdf/pdf.worke
|
|
|
9
9
|
export declare const DEFAULT_FILE_VIEWER_PDF_CMAP_PATH = "vendor/pdf/cmaps/";
|
|
10
10
|
export declare const DEFAULT_FILE_VIEWER_PDF_WASM_PATH = "vendor/pdf/wasm/";
|
|
11
11
|
export declare const DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH = "vendor/pdf/standard_fonts/";
|
|
12
|
+
export declare const DEFAULT_FILE_VIEWER_PDF_CJK_FONT_FALLBACK_PATH = "vendor/pdf/fonts/";
|
|
12
13
|
export declare const DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH = "vendor/drawio/viewer-static.min.js";
|
|
13
14
|
export declare const DEFAULT_FILE_VIEWER_DRAWIO_ASSET_PATH = "vendor/drawio/";
|
|
14
15
|
export declare const DEFAULT_FILE_VIEWER_CAD_WASM_PATH = "wasm/cad/";
|
|
@@ -38,10 +39,11 @@ export interface ResolvedFileViewerPdfAssetUrls {
|
|
|
38
39
|
cMapUrl: string;
|
|
39
40
|
wasmUrl: string;
|
|
40
41
|
standardFontDataUrl: string;
|
|
42
|
+
cjkFontFallbackPath: string;
|
|
41
43
|
}
|
|
42
44
|
export type FileViewerRendererAssetKind = 'directory' | 'worker' | 'wasm' | 'wasm-directory' | 'script' | 'bundled-wasm';
|
|
43
45
|
export type FileViewerRendererAssetTarget = 'public' | 'bundled' | 'external';
|
|
44
|
-
export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerJsZipUrl' | 'docx.workerUrl' | 'drawing.viewerScriptUrl' | 'pdf.workerUrl' | 'pdf.cMapUrl' | 'pdf.wasmUrl' | 'pdf.standardFontDataUrl' | 'presentation.workerUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.fontAssetsUrl' | 'typst.rendererWasmUrl';
|
|
46
|
+
export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerJsZipUrl' | 'docx.workerUrl' | 'drawing.viewerScriptUrl' | 'pdf.workerUrl' | 'pdf.cMapUrl' | 'pdf.wasmUrl' | 'pdf.standardFontDataUrl' | 'pdf.cjkFontFallbackPath' | 'presentation.workerUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.fontAssetsUrl' | 'typst.rendererWasmUrl';
|
|
45
47
|
export interface FileViewerRendererAssetDefinition {
|
|
46
48
|
id: string;
|
|
47
49
|
rendererId: string;
|
|
@@ -71,7 +73,7 @@ export declare const resolveFileViewerAssetUrl: (value: string | URL | undefined
|
|
|
71
73
|
export declare const resolveFileViewerArchiveWorkerUrl: (options?: Pick<FileViewerArchiveOptions, "workerUrl"> | null, baseUrl?: string) => string;
|
|
72
74
|
export declare const resolveFileViewerArchiveWasmUrl: (options?: Pick<FileViewerArchiveOptions, "wasmUrl"> | null, fallback?: string) => string;
|
|
73
75
|
export declare const resolveFileViewerCadAssetUrls: (options?: Pick<FileViewerCadOptions, "wasmPath" | "workerUrl" | "dwfWasmUrl"> | null, documentBaseUrl?: string) => ResolvedFileViewerCadAssetUrls;
|
|
74
|
-
export declare const resolveFileViewerPdfAssetUrls: (options?: Pick<FileViewerPdfOptions, "workerUrl" | "cMapUrl" | "wasmUrl" | "standardFontDataUrl"> | null, documentBaseUrl?: string) => ResolvedFileViewerPdfAssetUrls;
|
|
76
|
+
export declare const resolveFileViewerPdfAssetUrls: (options?: Pick<FileViewerPdfOptions, "assetBaseUrl" | "workerUrl" | "cMapUrl" | "wasmUrl" | "standardFontDataUrl" | "cjkFontFallbackPath"> | null, documentBaseUrl?: string) => ResolvedFileViewerPdfAssetUrls;
|
|
75
77
|
export declare const resolveFileViewerDrawioViewerScriptUrl: (options?: Pick<FileViewerDrawingOptions, "viewerScriptUrl"> | null, documentBaseUrl?: string) => string;
|
|
76
78
|
export declare const resolveFileViewerDocxWorkerUrl: (options?: Pick<FileViewerDocxOptions, "workerUrl"> | null, documentBaseUrl?: string) => string;
|
|
77
79
|
export declare const resolveFileViewerDocxWorkerJsZipUrl: (options?: Pick<FileViewerDocxOptions, "workerJsZipUrl"> | null, documentBaseUrl?: string) => string;
|
package/dist/platform/assets.js
CHANGED
|
@@ -8,6 +8,7 @@ export const DEFAULT_FILE_VIEWER_PDF_WORKER_PATH = 'vendor/pdf/pdf.worker.mjs';
|
|
|
8
8
|
export const DEFAULT_FILE_VIEWER_PDF_CMAP_PATH = 'vendor/pdf/cmaps/';
|
|
9
9
|
export const DEFAULT_FILE_VIEWER_PDF_WASM_PATH = 'vendor/pdf/wasm/';
|
|
10
10
|
export const DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH = 'vendor/pdf/standard_fonts/';
|
|
11
|
+
export const DEFAULT_FILE_VIEWER_PDF_CJK_FONT_FALLBACK_PATH = 'vendor/pdf/fonts/';
|
|
11
12
|
export const DEFAULT_FILE_VIEWER_DRAWIO_VIEWER_SCRIPT_PATH = 'vendor/drawio/viewer-static.min.js';
|
|
12
13
|
export const DEFAULT_FILE_VIEWER_DRAWIO_ASSET_PATH = 'vendor/drawio/';
|
|
13
14
|
export const DEFAULT_FILE_VIEWER_CAD_WASM_PATH = 'wasm/cad/';
|
|
@@ -77,10 +78,10 @@ export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
|
|
|
77
78
|
rendererId: 'pdf',
|
|
78
79
|
kind: 'wasm-directory',
|
|
79
80
|
target: 'public',
|
|
80
|
-
required:
|
|
81
|
+
required: true,
|
|
81
82
|
defaultPath: DEFAULT_FILE_VIEWER_PDF_WASM_PATH,
|
|
82
83
|
optionPath: 'pdf.wasmUrl',
|
|
83
|
-
description: '
|
|
84
|
+
description: 'PDF.js WebAssembly helpers for image decoding and fully self-hosted PDF rendering.',
|
|
84
85
|
},
|
|
85
86
|
{
|
|
86
87
|
id: 'pdf-standard-fonts',
|
|
@@ -92,6 +93,16 @@ export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
|
|
|
92
93
|
optionPath: 'pdf.standardFontDataUrl',
|
|
93
94
|
description: 'PDF.js standard font data used when PDF files reference base fonts.',
|
|
94
95
|
},
|
|
96
|
+
{
|
|
97
|
+
id: 'pdf-cjk-font-fallback',
|
|
98
|
+
rendererId: 'pdf',
|
|
99
|
+
kind: 'directory',
|
|
100
|
+
target: 'public',
|
|
101
|
+
required: true,
|
|
102
|
+
defaultPath: DEFAULT_FILE_VIEWER_PDF_CJK_FONT_FALLBACK_PATH,
|
|
103
|
+
optionPath: 'pdf.cjkFontFallbackPath',
|
|
104
|
+
description: 'Self-hosted Noto Sans SC variable font shards used for missing unembedded CJK fonts.',
|
|
105
|
+
},
|
|
95
106
|
],
|
|
96
107
|
},
|
|
97
108
|
{
|
|
@@ -300,17 +311,22 @@ export const resolveFileViewerCadAssetUrls = (options, documentBaseUrl) => {
|
|
|
300
311
|
};
|
|
301
312
|
};
|
|
302
313
|
export const resolveFileViewerPdfAssetUrls = (options, documentBaseUrl) => {
|
|
314
|
+
const rawAssetBaseUrl = (options === null || options === void 0 ? void 0 : options.assetBaseUrl) ? String(options.assetBaseUrl) : '';
|
|
315
|
+
const assetBaseUrl = rawAssetBaseUrl
|
|
316
|
+
? new URL(rawAssetBaseUrl.endsWith('/') ? rawAssetBaseUrl : `${rawAssetBaseUrl}/`, documentBaseUrl || DEFAULT_FILE_VIEWER_DOCUMENT_BASE_URL).href
|
|
317
|
+
: documentBaseUrl;
|
|
303
318
|
return {
|
|
304
319
|
workerUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, {
|
|
305
|
-
documentBaseUrl,
|
|
320
|
+
documentBaseUrl: assetBaseUrl,
|
|
306
321
|
}),
|
|
307
322
|
cMapUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.cMapUrl, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, {
|
|
308
|
-
documentBaseUrl,
|
|
323
|
+
documentBaseUrl: assetBaseUrl,
|
|
309
324
|
}),
|
|
310
325
|
wasmUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.wasmUrl, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, {
|
|
311
|
-
documentBaseUrl,
|
|
326
|
+
documentBaseUrl: assetBaseUrl,
|
|
312
327
|
}),
|
|
313
|
-
standardFontDataUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.standardFontDataUrl, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, { documentBaseUrl }),
|
|
328
|
+
standardFontDataUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.standardFontDataUrl, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, { documentBaseUrl: assetBaseUrl }),
|
|
329
|
+
cjkFontFallbackPath: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.cjkFontFallbackPath, DEFAULT_FILE_VIEWER_PDF_CJK_FONT_FALLBACK_PATH, { documentBaseUrl: assetBaseUrl }),
|
|
314
330
|
};
|
|
315
331
|
};
|
|
316
332
|
export const resolveFileViewerDrawioViewerScriptUrl = (options, documentBaseUrl) => {
|
|
@@ -353,7 +369,7 @@ export const getFileViewerRendererAssetManifest = (rendererId) => {
|
|
|
353
369
|
return DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS.find(manifest => manifest.rendererId === rendererId) || null;
|
|
354
370
|
};
|
|
355
371
|
const getRendererAssetOptionValue = (options, optionPath) => {
|
|
356
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
372
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
357
373
|
switch (optionPath) {
|
|
358
374
|
case 'archive.workerUrl':
|
|
359
375
|
return (_a = options === null || options === void 0 ? void 0 : options.archive) === null || _a === void 0 ? void 0 : _a.workerUrl;
|
|
@@ -381,16 +397,18 @@ const getRendererAssetOptionValue = (options, optionPath) => {
|
|
|
381
397
|
return (_m = options === null || options === void 0 ? void 0 : options.pdf) === null || _m === void 0 ? void 0 : _m.wasmUrl;
|
|
382
398
|
case 'pdf.standardFontDataUrl':
|
|
383
399
|
return (_o = options === null || options === void 0 ? void 0 : options.pdf) === null || _o === void 0 ? void 0 : _o.standardFontDataUrl;
|
|
400
|
+
case 'pdf.cjkFontFallbackPath':
|
|
401
|
+
return (_p = options === null || options === void 0 ? void 0 : options.pdf) === null || _p === void 0 ? void 0 : _p.cjkFontFallbackPath;
|
|
384
402
|
case 'presentation.workerUrl':
|
|
385
|
-
return (
|
|
403
|
+
return (_q = options === null || options === void 0 ? void 0 : options.presentation) === null || _q === void 0 ? void 0 : _q.workerUrl;
|
|
386
404
|
case 'spreadsheet.workerUrl':
|
|
387
|
-
return (
|
|
405
|
+
return (_r = options === null || options === void 0 ? void 0 : options.spreadsheet) === null || _r === void 0 ? void 0 : _r.workerUrl;
|
|
388
406
|
case 'typst.compilerWasmUrl':
|
|
389
|
-
return (
|
|
407
|
+
return (_s = options === null || options === void 0 ? void 0 : options.typst) === null || _s === void 0 ? void 0 : _s.compilerWasmUrl;
|
|
390
408
|
case 'typst.fontAssetsUrl':
|
|
391
|
-
return (
|
|
409
|
+
return (_t = options === null || options === void 0 ? void 0 : options.typst) === null || _t === void 0 ? void 0 : _t.fontAssetsUrl;
|
|
392
410
|
case 'typst.rendererWasmUrl':
|
|
393
|
-
return (
|
|
411
|
+
return (_u = options === null || options === void 0 ? void 0 : options.typst) === null || _u === void 0 ? void 0 : _u.rendererWasmUrl;
|
|
394
412
|
default:
|
|
395
413
|
return undefined;
|
|
396
414
|
}
|
|
@@ -315,4 +315,4 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
|
|
|
315
315
|
readonly search: true;
|
|
316
316
|
};
|
|
317
317
|
}];
|
|
318
|
-
export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "xyz" | "wasm" | "pdf" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "brep" | "pcd" | "wrl" | "vrml" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "patch" | "bundle" | "bdl" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "
|
|
318
|
+
export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "xyz" | "wasm" | "pdf" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "brep" | "pcd" | "wrl" | "vrml" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "patch" | "bundle" | "bdl" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "svg" | "avif" | "ico" | "heic" | "heif" | "jxl" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xltm" | "csv" | "ods" | "fods" | "numbers" | "ofd" | "typ" | "eml" | "msg" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "umd" | "md" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "ttf" | "otf" | "woff" | "woff2" | "psd" | "ai" | "eps" | "sqlite" | "parquet" | "avro" | "webarchive")[];
|
package/dist/renderers/image.js
CHANGED
|
@@ -102,10 +102,13 @@ const createLightbox = (documentRef, src, t) => {
|
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
104
|
export default async function renderImage(buffer, target, type, context) {
|
|
105
|
-
var _a;
|
|
105
|
+
var _a, _b;
|
|
106
106
|
const t = createFileViewerTranslator(context === null || context === void 0 ? void 0 : context.options);
|
|
107
107
|
const documentRef = target.ownerDocument || document;
|
|
108
108
|
const src = await resolveImageUrl(buffer, type);
|
|
109
|
+
(_a = context === null || context === void 0 ? void 0 : context.registerThumbnailAdapter) === null || _a === void 0 ? void 0 : _a.call(context, {
|
|
110
|
+
capture: () => new Blob([buffer], { type: getImageBlobType(type) }),
|
|
111
|
+
});
|
|
109
112
|
let userZoom = 1;
|
|
110
113
|
let fitScale = 1;
|
|
111
114
|
let currentScale = 1;
|
|
@@ -236,11 +239,13 @@ export default async function renderImage(buffer, target, type, context) {
|
|
|
236
239
|
subscribe: zoomEmitter.subscribe,
|
|
237
240
|
});
|
|
238
241
|
target.replaceChildren(createStyle(documentRef), root);
|
|
239
|
-
(((
|
|
242
|
+
(((_b = context === null || context === void 0 ? void 0 : context.surface) === null || _b === void 0 ? void 0 : _b.shadowRoot) || target).append(lightbox.element);
|
|
240
243
|
updateViewportSize();
|
|
241
244
|
return {
|
|
242
245
|
$el: target,
|
|
243
246
|
unmount() {
|
|
247
|
+
var _a;
|
|
248
|
+
(_a = context === null || context === void 0 ? void 0 : context.registerThumbnailAdapter) === null || _a === void 0 ? void 0 : _a.call(context, null);
|
|
244
249
|
unregisterFileViewerZoomProvider(root);
|
|
245
250
|
resizeObserver.disconnect();
|
|
246
251
|
image.removeEventListener('load', updateViewportSize);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FileViewerRendererDispatcher } from './dispatcher';
|
|
2
2
|
import { type FileViewerMutableAccessor, type MutableFileViewerRenderReadinessState } from '../source/loading';
|
|
3
|
-
import type { FileRenderExportAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, FileViewerOptions, FileViewerStyleIsolation, RenderSurface, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from '../contracts/types';
|
|
3
|
+
import type { FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, FileViewerOptions, FileViewerStyleIsolation, RenderSurface, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from '../contracts/types';
|
|
4
4
|
export declare const FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE = "\u9884\u89C8\u5185\u5BB9\u5378\u8F7D\u5931\u8D25";
|
|
5
5
|
export interface ResolveFileViewerRenderSessionDisposeErrorMessageInput {
|
|
6
6
|
message?: string;
|
|
@@ -34,6 +34,7 @@ export interface DisposeFileViewerRendererSessionOptions {
|
|
|
34
34
|
export interface FileViewerRenderSurfaceState<Session extends RendererSession = RendererSession> {
|
|
35
35
|
session: Session | null;
|
|
36
36
|
exportAdapter: FileRenderExportAdapter | null;
|
|
37
|
+
thumbnailAdapter: FileRenderThumbnailAdapter | null;
|
|
37
38
|
}
|
|
38
39
|
export type MutableFileViewerRenderSurfaceState<Session extends RendererSession = RendererSession> = FileViewerRenderSurfaceState<Session>;
|
|
39
40
|
export interface CreateFileViewerRenderReadinessTargetInput {
|
|
@@ -43,6 +44,7 @@ export interface CreateFileViewerRenderReadinessTargetInput {
|
|
|
43
44
|
export interface CreateFileViewerRenderSurfaceStateTargetInput<Session extends RendererSession = RendererSession> {
|
|
44
45
|
session: FileViewerMutableAccessor<Session | null>;
|
|
45
46
|
exportAdapter: FileViewerMutableAccessor<FileRenderExportAdapter | null>;
|
|
47
|
+
thumbnailAdapter?: FileViewerMutableAccessor<FileRenderThumbnailAdapter | null>;
|
|
46
48
|
}
|
|
47
49
|
export interface CreateFileViewerRenderTargetOptions {
|
|
48
50
|
className?: string;
|
|
@@ -171,7 +173,7 @@ export declare const appendFileViewerStyle: (target: HTMLElement | ShadowRoot, c
|
|
|
171
173
|
export declare const removeFileViewerRenderTarget: (container: HTMLElement, target: HTMLElement) => boolean;
|
|
172
174
|
export declare const createFileViewerRenderSurfaceState: <Session extends RendererSession = RendererSession>() => FileViewerRenderSurfaceState<Session>;
|
|
173
175
|
export declare const createFileViewerRenderReadinessTarget: ({ renderedReady, progressiveReady, }: CreateFileViewerRenderReadinessTargetInput) => MutableFileViewerRenderReadinessState;
|
|
174
|
-
export declare const createFileViewerRenderSurfaceStateTarget: <Session extends RendererSession = RendererSession>({ session, exportAdapter, }: CreateFileViewerRenderSurfaceStateTargetInput<Session>) => MutableFileViewerRenderSurfaceState<Session>;
|
|
176
|
+
export declare const createFileViewerRenderSurfaceStateTarget: <Session extends RendererSession = RendererSession>({ session, exportAdapter, thumbnailAdapter, }: CreateFileViewerRenderSurfaceStateTargetInput<Session>) => MutableFileViewerRenderSurfaceState<Session>;
|
|
175
177
|
export declare const applyFileViewerRenderSurfaceState: <Session extends RendererSession, Target extends MutableFileViewerRenderSurfaceState<Session>>(target: Target, state: Partial<FileViewerRenderSurfaceState<Session>>) => Target;
|
|
176
178
|
export declare const createFileRenderHandlerRendererSession: <Rendered = unknown>(rendered: Rendered, destroy?: () => void | Promise<void>) => FileRenderHandlerRendererSession<Rendered>;
|
|
177
179
|
export interface CreateFileRenderHandlerRegistryOptions<Rendered = unknown, Target extends HTMLElement = HTMLElement> extends Omit<CreateFileRenderHandlerLoaderOptions<Rendered, Target>, 'handler'> {
|
|
@@ -196,7 +198,7 @@ export declare const resetFileViewerRenderSurface: <Session extends RendererSess
|
|
|
196
198
|
export declare const runFileViewerRenderSurfaceClear: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ reason, surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, onStopFitObserver, onStopViewStateObserver, onClearViewStateProvider, }: RunFileViewerRenderSurfaceClearInput<Session, UnloadContext>) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
|
|
197
199
|
export declare const runFileViewerRenderSurfaceMount: <Session extends RendererSession>({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint, disposeSession, onStartZoomObserver, onStartFitObserver, onStartViewStateObserver, onApplyInitialFit, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: RunFileViewerRenderSurfaceMountInput<Session>) => Promise<Session | undefined>;
|
|
198
200
|
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, onStartFitObserver, onStopFitObserver, onStartViewStateObserver, onStopViewStateObserver, onClearViewStateProvider, onApplyInitialFit, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: CreateFileViewerRenderSurfaceActionHandlersInput<Session, UnloadContext>) => FileViewerRenderSurfaceActionHandlers<Session, UnloadContext>;
|
|
199
|
-
export declare const buildFileRenderContextFromLoadContext: ({ source, surface, options, registerExportAdapter, renderContext, }: RendererLoadContext) => FileRenderContext;
|
|
201
|
+
export declare const buildFileRenderContextFromLoadContext: ({ source, surface, options, signal, registerExportAdapter, registerThumbnailAdapter, renderContext, }: RendererLoadContext) => FileRenderContext;
|
|
200
202
|
export declare const renderFileViewerHandler: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ dispatcher, buffer, target, type, context, throwOnMissingHandler, }: RenderFileViewerHandlerInput<Rendered, Target>) => Promise<Rendered | undefined>;
|
|
201
203
|
export declare const createFileRenderHandlerLoader: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ handler, rendererId, getTarget, createContext, destroy, }: CreateFileRenderHandlerLoaderOptions<Rendered, Target>) => RendererLoader;
|
|
202
204
|
export declare const createFileRenderHandlerRegistry: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ definitions, handlers, getTarget, createContext, destroy, }: CreateFileRenderHandlerRegistryOptions<Rendered, Target>) => FileRenderHandlerRegistryResult<Rendered, Target>;
|
|
@@ -157,6 +157,7 @@ export const removeFileViewerRenderTarget = (container, target) => {
|
|
|
157
157
|
export const createFileViewerRenderSurfaceState = () => ({
|
|
158
158
|
session: null,
|
|
159
159
|
exportAdapter: null,
|
|
160
|
+
thumbnailAdapter: null,
|
|
160
161
|
});
|
|
161
162
|
export const createFileViewerRenderReadinessTarget = ({ renderedReady, progressiveReady, }) => {
|
|
162
163
|
return {
|
|
@@ -174,7 +175,8 @@ export const createFileViewerRenderReadinessTarget = ({ renderedReady, progressi
|
|
|
174
175
|
},
|
|
175
176
|
};
|
|
176
177
|
};
|
|
177
|
-
export const createFileViewerRenderSurfaceStateTarget = ({ session, exportAdapter, }) => {
|
|
178
|
+
export const createFileViewerRenderSurfaceStateTarget = ({ session, exportAdapter, thumbnailAdapter, }) => {
|
|
179
|
+
let localThumbnailAdapter = null;
|
|
178
180
|
return {
|
|
179
181
|
get session() {
|
|
180
182
|
return session.get();
|
|
@@ -188,16 +190,27 @@ export const createFileViewerRenderSurfaceStateTarget = ({ session, exportAdapte
|
|
|
188
190
|
set exportAdapter(value) {
|
|
189
191
|
exportAdapter.set(value);
|
|
190
192
|
},
|
|
193
|
+
get thumbnailAdapter() {
|
|
194
|
+
var _a;
|
|
195
|
+
return (_a = thumbnailAdapter === null || thumbnailAdapter === void 0 ? void 0 : thumbnailAdapter.get()) !== null && _a !== void 0 ? _a : localThumbnailAdapter;
|
|
196
|
+
},
|
|
197
|
+
set thumbnailAdapter(value) {
|
|
198
|
+
localThumbnailAdapter = value;
|
|
199
|
+
thumbnailAdapter === null || thumbnailAdapter === void 0 ? void 0 : thumbnailAdapter.set(value);
|
|
200
|
+
},
|
|
191
201
|
};
|
|
192
202
|
};
|
|
193
203
|
export const applyFileViewerRenderSurfaceState = (target, state) => {
|
|
194
|
-
var _a, _b;
|
|
204
|
+
var _a, _b, _c;
|
|
195
205
|
if ('session' in state) {
|
|
196
206
|
target.session = (_a = state.session) !== null && _a !== void 0 ? _a : null;
|
|
197
207
|
}
|
|
198
208
|
if ('exportAdapter' in state) {
|
|
199
209
|
target.exportAdapter = (_b = state.exportAdapter) !== null && _b !== void 0 ? _b : null;
|
|
200
210
|
}
|
|
211
|
+
if ('thumbnailAdapter' in state) {
|
|
212
|
+
target.thumbnailAdapter = (_c = state.thumbnailAdapter) !== null && _c !== void 0 ? _c : null;
|
|
213
|
+
}
|
|
201
214
|
return target;
|
|
202
215
|
};
|
|
203
216
|
export const createFileRenderHandlerRendererSession = (rendered, destroy) => ({
|
|
@@ -265,7 +278,7 @@ export const disposeActiveFileViewerRendererSession = (target, options = {}) =>
|
|
|
265
278
|
};
|
|
266
279
|
export const resetFileViewerRenderSurface = ({ surfaceState, readinessState, container, disposeOptions, }) => {
|
|
267
280
|
const session = disposeActiveFileViewerRendererSession(surfaceState, disposeOptions);
|
|
268
|
-
applyFileViewerRenderSurfaceState(surfaceState, { exportAdapter: null });
|
|
281
|
+
applyFileViewerRenderSurfaceState(surfaceState, { exportAdapter: null, thumbnailAdapter: null });
|
|
269
282
|
applyFileViewerRenderReadinessState(readinessState, {
|
|
270
283
|
renderedReady: false,
|
|
271
284
|
progressiveReady: false,
|
|
@@ -430,13 +443,15 @@ export const createFileViewerRenderSurfaceActionHandlers = ({ getContainer, surf
|
|
|
430
443
|
mountRenderedContent,
|
|
431
444
|
};
|
|
432
445
|
};
|
|
433
|
-
export const buildFileRenderContextFromLoadContext = ({ source, surface, options, registerExportAdapter, renderContext, }) => ({
|
|
446
|
+
export const buildFileRenderContextFromLoadContext = ({ source, surface, options, signal, registerExportAdapter, registerThumbnailAdapter, renderContext, }) => ({
|
|
434
447
|
filename: source.filename,
|
|
435
448
|
url: source.url,
|
|
436
449
|
streamUrl: source.url,
|
|
450
|
+
signal,
|
|
437
451
|
options,
|
|
438
452
|
surface,
|
|
439
453
|
registerExportAdapter,
|
|
454
|
+
registerThumbnailAdapter,
|
|
440
455
|
...renderContext,
|
|
441
456
|
});
|
|
442
457
|
export const renderFileViewerHandler = async ({ dispatcher, buffer, target, type = '', context, throwOnMissingHandler = false, }) => {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { FileViewerEventHandler, FileViewerInstance, FileViewerOptions, RendererRegistry } from '../contracts/types';
|
|
1
|
+
import type { FileViewerEventHandler, FileViewerInstance, FileViewerOptions, FileViewerRenderPurpose, RendererRegistry } from '../contracts/types';
|
|
2
2
|
export interface CreateViewerOptions {
|
|
3
3
|
registry?: RendererRegistry;
|
|
4
4
|
options?: FileViewerOptions;
|
|
5
5
|
signal?: AbortSignal;
|
|
6
6
|
onEvent?: FileViewerEventHandler;
|
|
7
|
+
renderPurpose?: FileViewerRenderPurpose;
|
|
7
8
|
}
|
|
8
9
|
export declare const createViewer: (container: HTMLElement, createOptions?: CreateViewerOptions) => FileViewerInstance;
|
|
@@ -56,6 +56,27 @@ const resolveAutoRenderersEnabled = (options) => {
|
|
|
56
56
|
}
|
|
57
57
|
return (options.rendererMode || 'extend') !== 'replace';
|
|
58
58
|
};
|
|
59
|
+
const createFileViewerLoadSignal = (controller, signals) => {
|
|
60
|
+
if (!controller) {
|
|
61
|
+
return signals.find(signal => signal);
|
|
62
|
+
}
|
|
63
|
+
const removeListeners = [];
|
|
64
|
+
const cleanup = () => removeListeners.splice(0).forEach(remove => remove());
|
|
65
|
+
controller.signal.addEventListener('abort', cleanup, { once: true });
|
|
66
|
+
for (const signal of signals) {
|
|
67
|
+
if (!signal) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (signal.aborted) {
|
|
71
|
+
controller.abort(signal.reason);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
const onAbort = () => controller.abort(signal.reason);
|
|
75
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
76
|
+
removeListeners.push(() => signal.removeEventListener('abort', onAbort));
|
|
77
|
+
}
|
|
78
|
+
return controller.signal;
|
|
79
|
+
};
|
|
59
80
|
const renderMissingRendererState = (container, type, options) => {
|
|
60
81
|
const documentRef = container.ownerDocument;
|
|
61
82
|
const state = createFileViewerUnsupportedState(type, undefined, options);
|
|
@@ -427,6 +448,7 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
427
448
|
applyFileViewerRenderSurfaceState(renderSurfaceState, {
|
|
428
449
|
session: null,
|
|
429
450
|
exportAdapter: null,
|
|
451
|
+
thumbnailAdapter: null,
|
|
430
452
|
});
|
|
431
453
|
removeWatermarkOverlay();
|
|
432
454
|
await documentActions.clearDocumentState();
|
|
@@ -440,8 +462,16 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
440
462
|
};
|
|
441
463
|
const instance = {
|
|
442
464
|
container,
|
|
443
|
-
async
|
|
465
|
+
async prepare() {
|
|
466
|
+
await ensureRendererPluginsInstalled();
|
|
467
|
+
},
|
|
468
|
+
async load(source, loadOptions = {}) {
|
|
444
469
|
const version = requestScope.requestController.createVersion();
|
|
470
|
+
const requestAbortController = requestScope.requestController.createAbortController();
|
|
471
|
+
const loadSignal = createFileViewerLoadSignal(requestAbortController, [
|
|
472
|
+
createOptions.signal,
|
|
473
|
+
loadOptions.signal,
|
|
474
|
+
]);
|
|
445
475
|
await destroyCurrent('replace');
|
|
446
476
|
await ensureRendererPluginsInstalled();
|
|
447
477
|
if (!requestScope.isCurrentRequest(version)) {
|
|
@@ -470,12 +500,20 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
470
500
|
source: normalized,
|
|
471
501
|
surface,
|
|
472
502
|
options,
|
|
473
|
-
signal:
|
|
503
|
+
signal: loadSignal,
|
|
474
504
|
registerExportAdapter: adapter => {
|
|
475
505
|
if (requestScope.isCurrentRequest(version)) {
|
|
476
506
|
applyFileViewerRenderSurfaceState(renderSurfaceState, { exportAdapter: adapter });
|
|
477
507
|
}
|
|
478
508
|
},
|
|
509
|
+
registerThumbnailAdapter: adapter => {
|
|
510
|
+
if (requestScope.isCurrentRequest(version)) {
|
|
511
|
+
applyFileViewerRenderSurfaceState(renderSurfaceState, { thumbnailAdapter: adapter });
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
renderContext: {
|
|
515
|
+
renderPurpose: createOptions.renderPurpose || 'preview',
|
|
516
|
+
},
|
|
479
517
|
});
|
|
480
518
|
}
|
|
481
519
|
catch (error) {
|
|
@@ -504,6 +542,10 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
504
542
|
await emitLifecycle(options, createOptions.onEvent, 'load-complete', normalized, version, startedAt);
|
|
505
543
|
return session;
|
|
506
544
|
},
|
|
545
|
+
async unload(reason = 'replace') {
|
|
546
|
+
requestScope.requestController.createVersion();
|
|
547
|
+
await destroyCurrent(reason);
|
|
548
|
+
},
|
|
507
549
|
async destroy(reason = 'component-unmount') {
|
|
508
550
|
requestScope.requestController.createVersion();
|
|
509
551
|
await destroyCurrent(reason);
|
|
@@ -540,6 +582,12 @@ export const createViewer = (container, createOptions = {}) => {
|
|
|
540
582
|
getExportAdapter() {
|
|
541
583
|
return renderSurfaceState.exportAdapter;
|
|
542
584
|
},
|
|
585
|
+
registerThumbnailAdapter(adapter) {
|
|
586
|
+
applyFileViewerRenderSurfaceState(renderSurfaceState, { thumbnailAdapter: adapter });
|
|
587
|
+
},
|
|
588
|
+
getThumbnailAdapter() {
|
|
589
|
+
return renderSurfaceState.thumbnailAdapter;
|
|
590
|
+
},
|
|
543
591
|
async download(downloadOptions = {}) {
|
|
544
592
|
const source = createFileViewerOriginalSourceStateFromNormalizedSource(currentSource);
|
|
545
593
|
await executeFileViewerDownloadOperation({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@file-viewer/core",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.27",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Framework-neutral modular TypeScript core for Flyfish File Viewer renderer orchestration, lifecycle APIs, search, zoom, print, and export",
|