tdg-react-doc-viewer
Version:
File viewer for React.
71 lines (69 loc) • 2.01 kB
TypeScript
import { FC, ReactElement, ComponentType, PropsWithChildren } from 'react';
import { IMainState } from './store/mainStateReducer';
import { FileLoaderFunction } from './utils/fileLoaders';
export interface IConfig {
header?: IHeaderConfig;
loadingRenderer?: ILoadingRendererConfig;
noRenderer?: INoRendererConfig;
csvDelimiter?: string;
pdfZoom?: IPdfZoomConfig;
pdfVerticalScrollByDefault?: boolean;
}
export interface ILoadingRendererConfig {
overrideComponent?: ComponentType<{
document: IDocument | undefined;
fileName: string;
}>;
showLoadingTimeout?: false | number;
}
export interface INoRendererConfig {
overrideComponent?: ComponentType<{
document: IDocument | undefined;
fileName: string;
}>;
}
export interface IHeaderConfig {
disableHeader?: boolean;
disableFileName?: boolean;
retainURLParams?: boolean;
overrideComponent?: IHeaderOverride;
}
export interface IPdfZoomConfig {
defaultZoom: number;
zoomJump: number;
}
export type IHeaderOverride = (state: IMainState, previousDocument: () => void, nextDocument: () => void) => ReactElement<any, any> | null;
export interface ITheme {
primary?: string;
secondary?: string;
tertiary?: string;
textPrimary?: string;
textSecondary?: string;
textTertiary?: string;
disableThemeScrollbar?: boolean;
}
export interface IStyledProps {
theme: ITheme;
}
export interface IDocument {
uri: string;
fileType?: string;
fileData?: string | ArrayBuffer;
fileName?: string;
baseUrl?: string;
isClickable?: boolean;
highlightedWords?: string[];
originalFilename?: string;
}
export interface DocRendererProps {
mainState: IMainState;
}
export interface DocRenderer extends FC<PropsWithChildren<DocRendererProps>> {
fileTypes: string[];
weight: number;
fileLoader?: FileLoaderFunction | null | undefined;
}
export interface DocViewerRef {
prev: () => void;
next: () => void;
}