@grapecity/gcpdfviewer
Version:
GcDocs PDF Viewer
68 lines (67 loc) • 3.46 kB
TypeScript
/** @hidden */ /** */
/// <reference path="../../../vendor/react/react.d.ts" />
//@ts-ignore
import { MouseEvent } from 'react';
import { PluginModel, ReportViewerCmd, ReportViewerCommandStatus, DocumentMoniker } from '../api';
import { DocumentViewer } from "../components";
import { SearchResult } from '../features/search';
import { CancellationToken } from './CancellationToken';
import { ViewerAction } from '../api/PluginModel';
import { LoadResult } from './SessionState';
export declare type ViewerMouseEvent = MouseEvent;
/** Encapsulates viewer state and isolates it from main control.
*/
export declare class ViewerState {
readonly raiseChangedEvent: (model: DocumentViewer.Model) => void;
readonly raiseOpenDocumentEvent: (document: PluginModel.IDocument | null) => void;
readonly raiseOpenDocumentViewEvent: (document: PluginModel.IDocumentView | null) => void;
readonly onDocumentProgress: (view: PluginModel.ProgressMessage) => void;
readonly errorSink: PluginModel.IReportError;
readonly viewerState: PluginModel.IStateBinder<DocumentViewer.Model>;
constructor(raiseChangedEvent: (model: DocumentViewer.Model) => void, raiseOpenDocumentEvent: (document: PluginModel.IDocument | null) => void, raiseOpenDocumentViewEvent: (document: PluginModel.IDocumentView | null) => void, onDocumentProgress: (view: PluginModel.ProgressMessage) => void, errorSink: PluginModel.IReportError, viewerState: PluginModel.IStateBinder<DocumentViewer.Model>);
private _plugin;
private _session;
private readonly _settingsStore;
private readonly _viewerStore;
/** Gets the view settings */
get viewState(): DocumentViewer.Model;
get viewSettings(): DocumentViewer.ViewSettings;
get isDocumentOpened(): boolean;
get documentView(): PluginModel.IDocumentView | null;
updateUi: (msg: DocumentViewer.SettingsMsg) => void;
toggleNarrowScreen: (isNarrow?: boolean | undefined) => void;
highlight: (result: SearchResult | null) => Promise<void>;
setPlugin(plugin: PluginModel.IPluginModule<PluginModel.ViewerEvent, any>): void;
private onChangeDocument;
private onChangeDocumentView;
private getContext;
resolveAction: (event: ViewerMouseEvent) => any;
processAction: (action: ViewerAction) => boolean;
private processEvent;
/**
Seamless report change:
1) create new session, but don't put it to viewer state yet
2) load document into newSession to get newSession.document
3) execute newSession.run() to generate newSession.documentView
4) set newSession to viewerState
*/
private loadDocumentAndSwapSession;
handleViewerCmd: (cmd: ReportViewerCmd) => void;
get commandStatus(): ReportViewerCommandStatus;
resetDocument: () => Promise<void>;
load: (doc: DocumentMoniker, parentToken?: CancellationToken | undefined) => Promise<LoadResult>;
open: (doc: DocumentMoniker) => Promise<LoadResult>;
private processLoadFailure;
private cancelSession;
private setSession;
private createSession;
/** history store implementation. Consider moving it out */
private readonly _history;
private _historyPosition;
pushEvent: (event: PluginModel.ViewerEvent) => void;
private historyGoBack;
private historyGoParent;
private historyGoForward;
private historyReset;
private historyResetNavigation;
}