DefinitelyTyped/types/diva.js/interfaces.d.ts
Juliette Regimbal b7a07d95dd [diva.js] Add types for diva.js (#37803)
* Initial commit autogenerated with dts-gen

* Add public functions to Diva class

* Add Settings definition.

* First attempt at adding Events

* Apply linting, fix default export to include class and Events

* Simple tests

Ensure the Diva class constructor exists along with the Events class.
Check that Diva class functions work.

* Move interfaces to separate file.

* Set members of Diva class.

* Add Region and Dimensions interfaces.

* Add definition for Viewport class

* Add Offset interface

* Add DocumentLayout class

* Move interfaces to interfaces.d.ts

* Add types for Renderer class

* Add ViewerCore class types, use in index.d.ts

* Move Settings type declaration to interfaces.d.ts

* Add settings member to Diva

* Change ViewerState.renderer type from object to Renderer

* Type of ViewerState.viewport from object to Viewport

* Use global import in tests.

* Add ImageManifest class.

* Replace XMLHttpRequest with Promise<Response>

Diva.js uses fetch(), which returns a Promise<Response>.

* Add types for the ViewHandler

* Properly type members of Viewport
2019-12-10 15:32:58 -05:00

207 lines
4.3 KiB
TypeScript

import Renderer from './renderer';
import Viewport from './viewport';
import ImageManifest from './image-manifest';
import { ViewHandler } from './handlers';
export interface Options {
acceptHeader: string;
adaptivePadding: number;
arrowScrollAmount: number;
blockMobileMove: boolean;
objectData: object | string;
enableAutoTitle: boolean;
enableFilename: boolean;
enableFullscreen: boolean;
enableGotoPage: boolean;
enableGotoSuggestions: boolean;
enableGridIcon: boolean;
enableGridControls: string;
enableImageTitles: boolean;
enableIndexAsLabel: boolean;
enableKeyScroll: boolean;
enableLinkIcon: boolean;
enableNonPagedVisibilityIcon: boolean;
enableSpaceScroll: boolean;
enableToolbar: boolean;
enableZoomControls: string;
fillParentHeight: boolean;
fixedPadding: number;
fixedHeightGrid: boolean;
goDirectlyTo: number;
hashParamSuffix: string;
inFullscreen: boolean;
inBookLayout: boolean;
inGrid: boolean;
maxPagesPerRow: number;
maxZoomLevel: number;
minPagesPerRow: number;
minZoomLevel: number;
onGotoSubmit: () => any;
pageAliases: object;
pageAliasFunction: () => any;
pageLoadTimeout: number;
pagesPerRow: number;
showNonPagedPages: boolean;
throbberTimeout: number;
tileHeight: number;
tileWidth: number;
toolbarParentObject: object;
verticallyOriented: boolean;
viewportMargin: number;
zoomLevel: number;
}
export interface ViewerState {
currentPageIndices: number[];
activePageIndex: number;
horizontalOffset: number;
horizontalPadding: number;
ID: string;
initialKeyScroll: boolean;
initialSpaceScroll: boolean;
innerElement: HTMLElement;
innerObject: HTMLElement;
isActiveDiva: boolean;
isScrollable: boolean;
isZooming: boolean;
loaded: boolean;
manifest: ImageManifest;
mobileWebkit: boolean;
numPages: number;
oldZoomLevel: number;
options: Options;
outerElement: HTMLElement;
outerObject: HTMLElement;
pageOverlays: object; // new PageOverlayManager();
pageTools: object[]; // plugins as page tools
parentObject: HTMLElement;
pendingManifestRequest: Promise<Response>;
pluginInstances: object[]; // enabled plugins from the registr;
renderer: Renderer;
resizeTimer: number;
scrollbarWidth: number;
selector: string;
throbberTimeoutID: number;
toolbar: object;
verticalOffset: number;
verticalPadding: number;
viewHandler: ViewHandler;
viewport: Viewport;
viewportElement: HTMLElement;
viewportObject: HTMLElement;
zoomDuration: number;
}
export interface State {
f: boolean;
v: string;
z: number;
n: number;
i: boolean | string;
p: boolean | number;
y: boolean | number;
x: boolean | number;
}
export interface Region {
top: number;
bottom: number;
left: number;
right: number;
}
export interface Dimensions {
height: number;
width: number;
}
export interface Offset {
top: number;
left: number;
}
export interface RendererConfig {
pageLayouts: object;
padding: Offset;
maxZoomLevel: number | null;
verticallyOriented: boolean;
}
export interface PageGroup {
index: number;
dimensions: Dimensions;
pages: number[];
region: Region;
padding: Offset;
}
export interface PageInfo {
index: number;
group: PageGroup;
dimensions: Dimensions;
groupOffset: Offset;
}
export interface ViewportPosition {
zoomLevel: null | number;
anchorPage: boolean;
verticalOffset: number;
horizontalOffset: number;
}
export interface SourceProvider {
zoomLevel: number;
rows: number;
cols: number;
titles: Array<{
url: string;
zoomLevel: number;
row: number;
col: number;
dimensions: Dimensions;
offset: Offset;
}>;
}
export interface Page {
d: { h: number; w: number };
m: number;
l: string;
il: string;
f: string;
url: string;
api: number;
paged: boolean;
facingPages: boolean;
canvas: string;
otherImages: {
f: string;
url: string;
il: string;
d: { h: number; w: number };
};
xoffset: number;
yoffset: number;
}
export interface ManifestData {
version?: number;
pgs: Page[];
max_zoom: number;
dims: {
a_wid: number;
a_hei: number;
max_w: number;
max_h: number;
max_ratio: number;
min_ratio: number;
t_hei: number;
t_wid: number;
};
item_title: string;
metadata: object;
paged: boolean;
}
export type Settings = Options & ViewerState;