UNPKG

labway-openseadragon

Version:

Provides a smooth, zoomable user interface for HTML/Javascript.

1,593 lines (1,201 loc) 64.3 kB
declare namespace OpenSeadragon { class Browser { vendor: BROWSERS; version: number; alpha: boolean; } enum BROWSERS { UNKNOWN = 0, IE = 1, FIREFOX = 2, SAFARI = 3, CHROME = 4, OPERA = 5, EDGE = 6, CHROMEEDGE = 7, } enum ButtonState { REST, GROUP, HOVER, DOWN, } enum ControlAnchor { NONE, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, ABSOLUTE, } const DEFAULT_SETTINGS: Options; const fullScreenApi: { supportsFullScreen: boolean; isFullScreen: () => boolean; getFullScreenElement: () => HTMLElement; requestFullScreen: () => void; exitFullScreen: () => void; cancelFullScreen: () => void; fullScreenEventName: string; fullScreenErrorEventName: string; }; enum OverlayPlacement { CENTER, TOP_LEFT, TOP, TOP_RIGHT, RIGHT, BOTTOM_RIGHT, BOTTOM, BOTTOM_LEFT, LEFT, } enum OverlayRotationMode { NO_ROTATION, EXACT, BOUNDING_BOX, } let pixelDensityRatio: number; enum Placement { CENTER, TOP_LEFT, TOP, TOP_RIGHT, RIGHT, BOTTOM_RIGHT, BOTTOM, BOTTOM_LEFT, LEFT, } let supportsCanvas: boolean; let version: { versionStr: string; major: number; minor: number; revision: number; }; function addClass(element: Element | string, className: string): void; function addEvent( element: Element | string, eventName: string, handler: (event: Event) => void, useCapture?: boolean | { capture?: boolean; passive?: boolean; once?: boolean }, ): void; function cancelEvent(event?: OSDEvent<any>): void; function capitalizeFirstLetter(value: string): string; function createCallback(object: object, method: (...args: any[]) => void, ...args: any[]): (...args: any[]) => void; function delegate(object: object, method: (...args: any[]) => void): (object: any, ...args: any[]) => void; // REVIEW: unsure of return type function eventIsCanceled(event: OSDEvent<any>): boolean; function extend(): any; function getCssPropertyWithVendorPrefix(property: string): string; function getElement(element: string | Element): Element; function getElementOffset(element: Element | string): Point; function getElementPosition(element: Element | string): Point; function getElementSize(element: Element | string): Point; function getElementStyle(element: Element | string): CSSStyleDeclaration; function getViewer(element: Element): Viewer; function getMousePosition(event?: OSDEvent<any>): Point; function getPageScroll(): Point; function getString(property: string): string; function getUrlParameter(key: string): string; function getWindowSize(): Point; function imageFormatSupported(extension?: string): boolean; function indexOf(array: any[], searchElement: object, fromIndex?: number): number; // (missing jquery functions) function makeAjaxRequest(options: { url: string; success: (obj: object) => void; error: (obj: object) => void; headers: object; responseType: string; withCredentials?: boolean | undefined; }): XMLHttpRequest; function makeCenteredNode(element: Element | string): Element; function makeNeutralElement(tagName: string): Element; function makeTransparentImage(src: string): Element; function normalizeEventListenerOptions( options: boolean | { capture?: boolean; passive?: boolean; once?: boolean }, ): string; function now(): number; function parseJSON(string: string): object; function parseXml(string: string): Document; function pointInElement(element: Element | string, point: Point): boolean; function positiveModulo(number: number, modulo: number): number; function removeClass(element: Element | string, className: string): void; function removeEvent( element: Element | string, eventName: string, handler: EventHandler<any>, useCapture?: boolean | { capture?: boolean }, ): void; function setElementOpacity(element: Element | string, opacity: number, usesAlpha?: boolean): void; function setElementPointerEvents(element: Element | string, value: string): void; function setElementPointerEventsNone(element: Element | string): void; function setElementTouchActionNone(element: Element | string): void; function setImageFormatsSupported(formats: { bmp?: boolean; jpeg?: boolean; jpg?: boolean; png?: boolean; tif?: boolean; wdp?: boolean; }): void; function setPageScroll(point: Point): void; function setString(property: string, value: string): void; function stopEvent(event?: OSDEvent<any>): void; interface GestureSettings { scrollToZoom?: boolean | undefined; clickToZoom?: boolean | undefined; dblClickToZoom?: boolean | undefined; dragToPan?: boolean | undefined; pinchToZoom?: boolean | undefined; flickEnabled?: boolean | undefined; flickMinSpeed?: number | undefined; flickMomentum?: number | undefined; } interface NavImagesValues { REST: string; GROUP: string; HOVER: string; DOWN: string; } interface NavImages { zoomIn: NavImagesValues; zoomOut: NavImagesValues; home: NavImagesValues; fullpage: NavImagesValues; rotateleft: NavImagesValues; rotateright: NavImagesValues; flip: NavImagesValues; previous: NavImagesValues; next: NavImagesValues; } interface ScalbarOptions { viewer?: Viewer; pixelsPerMeter?: number; minWidth?: string; xOffset?: number; yOffset?: number; color?: string; fontColor?: string; backgroundColor?: string; fontSize?: string; barThickness?: number, lineSegment?: number, fontFamily?: string; referenceItemIdx?: number; location?: number visible?: boolean; } interface Options { id?: string | undefined; element?: HTMLElement | undefined; tileSources?: | string | TileSourceOptions | TileSourceOptions[] | { type: string; levels?: Array<{ url: string; height: number; width: number; }>; } | { Image: { xmlns?: string | undefined; Url: string; Format: string; Overlap: string; TileSize: string; Size: { Width: string; Height: string; }; }; } | Array<string | TileSource | { type: "openstreetmaps" }>; tabIndex?: number | undefined; overlays?: any[] | undefined; prefixUrl?: string | undefined; navImages?: NavImages | undefined; debugMode?: boolean | undefined; debugGridColor?: string[] | undefined; blendTime?: number | undefined; alwaysBlend?: boolean | undefined; autoHideControls?: boolean | undefined; immediateRender?: boolean | undefined; defaultZoomLevel?: number | undefined; opacity?: number | undefined; preload?: boolean | undefined; compositeOperation?: | "source-over" | "source-atop" | "source-in" | "source-out" | "destination-over" | "destination-atop" | "destination-in" | "destination-out" | "lighter" | "copy" | "xor" | undefined; placeholderFillStyle?: string | CanvasGradient | CanvasPattern | undefined; degrees?: number | undefined; flipped?: boolean | undefined; minZoomLevel?: number | undefined; maxZoomLevel?: number | undefined; homeFillsViewer?: boolean | undefined; panHorizontal?: boolean | undefined; panVertical?: boolean | undefined; constrainDuringPan?: boolean | undefined; wrapHorizontal?: boolean | undefined; wrapVertical?: boolean | undefined; minZoomImageRatio?: number | undefined; maxZoomPixelRatio?: number | undefined; smoothTileEdgesMinZoom?: number | undefined; iOSDevice?: boolean | undefined; autoResize?: boolean | undefined; preserveImageSizeOnResize?: boolean | undefined; minScrollDeltaTime?: number | undefined; pixelsPerWheelLine?: number | undefined; pixelsPerArrowPress?: number | undefined; visibilityRatio?: number | undefined; viewportMargins?: object | undefined; imageLoaderLimit?: number | undefined; clickTimeThreshold?: number | undefined; clickDistThreshold?: number | undefined; dblClickTimeThreshold?: number | undefined; dblClickDistThreshold?: number | undefined; springStiffness?: number | undefined; animationTime?: number | undefined; gestureSettingsMouse?: GestureSettings | undefined; gestureSettingsTouch?: GestureSettings | undefined; gestureSettingsPen?: GestureSettings | undefined; gestureSettingsUnknown?: GestureSettings | undefined; zoomPerClick?: number | undefined; zoomPerScroll?: number | undefined; zoomPerSecond?: number | undefined; showNavigator?: boolean | undefined; showMoveControl?: boolean | undefined; moveControlOffset?: { x: number, y: number }; showScalebar?: boolean | undefined; drawer?: Array<'webgl' | 'canvas' | 'html'>; scalebarOptions?: ScalbarOptions; navigatorId?: string | undefined; navigatorPosition?: "TOP_LEFT" | "TOP_RIGHT" | "BOTTOM_LEFT" | "BOTTOM_RIGHT" | "ABSOLUTE" | undefined; navigatorSizeRatio?: number | undefined; navigatorMaintainSizeRatio?: boolean | undefined; navigatorTop?: number | string | undefined; navigatorLeft?: number | string | undefined; navigatorHeight?: number | string | undefined; navigatorWidth?: number | string | undefined; navigatorAutoResize?: boolean | undefined; navigatorAutoFade?: boolean | undefined; navigatorRotate?: boolean | undefined; navigatorBackground?: string | undefined; navigatorOpacity?: number | undefined; navigatorBorderColor?: string | undefined; navigatorDisplayRegionColor?: string | undefined; controlsFadeDelay?: number | undefined; controlsFadeLength?: number | undefined; maxImageCacheCount?: number | undefined; timeout?: number | undefined; useCanvas?: boolean | undefined; minPixelRatio?: number | undefined; mouseNavEnabled?: boolean | undefined; showNavigationControl?: boolean | undefined; navigationControlAnchor?: ControlAnchor | undefined; showZoomControl?: boolean | undefined; showHomeControl?: boolean | undefined; showFullPageControl?: boolean | undefined; showRotationControl?: boolean | undefined; showFlipControl?: boolean | undefined; showSequenceControl?: boolean | undefined; showPageControl?: boolean | undefined; sequenceControlAnchor?: ControlAnchor | undefined; navPrevNextWrap?: boolean | undefined; zoomInButton?: string | undefined; zoomOutButton?: string | undefined; homeButton?: string | undefined; fullPageButton?: string | undefined; rotateLeftButton?: string | undefined; rotateRightButton?: string | undefined; previousButton?: string | undefined; nextButton?: string | undefined; sequenceMode?: boolean | undefined; /** * If sequenceMode is true, display this page initially. * @default 0 */ initialPage?: number | undefined; preserveViewport?: boolean | undefined; preserveOverlays?: boolean | undefined; showReferenceStrip?: boolean | undefined; referenceStripScroll?: string | undefined; referenceStripElement?: HTMLElement | undefined; referenceStripHeight?: number | undefined; referenceStripWidth?: number | undefined; referenceStripPosition?: string | undefined; referenceStripSizeRatio?: number | undefined; collectionMode?: boolean | undefined; collectionRows?: number | undefined; collectionColumns?: number | undefined; collectionLayout?: "horizontal" | "vertical" | undefined; collectionTileSize?: number | undefined; collectionTileMargin?: number | undefined; crossOriginPolicy?: "Anonymous" | "use-credentials" | false | undefined; ajaxWithCredentials?: boolean | undefined; loadTilesWithAjax?: boolean | undefined; ajaxHeaders?: object | undefined; imageSmoothingEnabled?: boolean | undefined; rotationIncrement?: number | undefined; } interface TileSourceOptions { url?: string | undefined; referenceStripThumbnailUrl?: string | undefined; success?: ((event: Event) => void) | undefined; ajaxWithCredentials?: boolean | undefined; ajaxHeaders?: object | undefined; width?: number | undefined; height?: number | undefined; tileSize?: number | undefined; tileWidth?: number | undefined; tileHeight?: number | undefined; tileOverlap?: number | undefined; minLevel?: number | undefined; maxLevel?: number | undefined; getTileUrl?: ((l: number, x: number, y: number) => string) | undefined; } class Button extends EventSource { currentState: ButtonState; element: Element; fadeDelay: number; fadeLength: number; tracker: MouseTracker; constructor(options: { userData?: string | undefined; element?: Element | undefined; tooltip?: string | undefined; srcRest?: string | undefined; srcGroup?: string | undefined; srcHover?: string | undefined; srcDown?: string | undefined; fadeDelay?: number | undefined; fadeLength?: number | undefined; onPress?: EventHandler<ButtonEvent> | undefined; onRelease?: EventHandler<ButtonEvent> | undefined; onClick?: EventHandler<ButtonEvent> | undefined; onEnter?: EventHandler<ButtonEvent> | undefined; onExit?: EventHandler<ButtonEvent> | undefined; onFocus?: EventHandler<ButtonEvent> | undefined; onBlur?: EventHandler<ButtonEvent> | undefined; }); addHandler(eventName: ButtonEventName, handler: EventHandler<ButtonEvent>, userData?: object): void; addOnceHandler( eventName: ButtonEventName, handler: EventHandler<ButtonEvent>, userData?: object, times?: number, ): void; disable(): void; enable(): void; getHandler(eventName: ButtonEventName): (source: ButtonEventName, ...args: any[]) => void; raiseEvent(eventName: ButtonEventName, eventArgs: object): void; removeAllHandlers(eventName: ButtonEventName): void; removeHandler(eventName: ButtonEventName, handler: EventHandler<ButtonEvent>): void; notifyGroupEnter(): void; notifyGroupExit(): void; destroy(): void; } class ButtonGroup { buttons: Button[]; element: Element; tracker: MouseTracker; constructor(options: { buttons: Button[]; element?: Element | undefined }); destroy(): void; } interface TControlOptions { anchor?: ControlAnchor | undefined; attachToViewer?: boolean | undefined; autoFade?: boolean | undefined; } class Control { anchor: ControlAnchor; autoFade: boolean; container: Element; element: Element; wrapper: Element; constructor(element: Element, options: TControlOptions, container: Element); destroy(): void; isVisible(): boolean; setOpacity(opacity: number): void; setVisible(visible: boolean): void; } class ControlDock { constructor(options: object); addControl(element: string | Element, controlOptions: TControlOptions): void; areControlsEnabled(): boolean; clearControls(): ControlDock; removeControl(element: Control): ControlDock; setControlsEnabled(enabled: boolean): ControlDock; } class DisplayRect extends Rect { maxLevel: number; minLevel: number; constructor(x: number, y: number, width: number, height: number, minLevel: number, maxLevel: number); } class Drawer { canvas: HTMLCanvasElement | HTMLElement; container: Element; context: CanvasRenderingContext2D | null; // element : Element; // Deprecated constructor(options: { viewer: Viewer; viewport: Viewport; element: Element; debugGridColor?: string | undefined; }); blendSketch(options: { opacity: number; scale?: number | undefined; translate?: Point | undefined; compositeOperation?: string | undefined; bounds?: Rect | undefined; }): void; canRotate(): boolean; clear(): void; destroy(): void; drawTile( tile: Tile, drawingHandler: (context: CanvasRenderingContext2D, tile: any, rendered: any) => void, // TODO: determine handler parameter types useSketch: boolean, scale?: number, translate?: Point, ): void; getCanvasSize(sketch: boolean): Point; getOpacity(): number; setOpacity(opacity: number): Drawer; viewportToDrawerRectangle(rectangle: Rect): Rect; setImageSmoothingEnabled(imageSmoothingEnabled?: boolean): void; viewportCoordToDrawerCoord(point: Point): Point; clipWithPolygons(polygons: Point[][], useSketch?: boolean): void; } class DziTileSource extends TileSource { constructor( width: number, height: number, tileSize: number, tileOverlap: number, tilesUrl: number, fileFormat: number, displayRects: number, minLevel: number, maxLevel: number, ); } class IIIFTileSource extends TileSource { constructor(options: TileSourceOptions & { tileFormat?: string | undefined }); } class ImageLoader { constructor(options: { jobLimit?: number | undefined; timeout?: number | undefined }); addJob(options: { src?: string | undefined; loadWithAjax?: string | undefined; ajaxHeaders?: string | undefined; crossOriginPolicy?: string | boolean | undefined; ajaxWithCredentials?: boolean | undefined; callback?: (() => void) | undefined; abort?: (() => void) | undefined; }): void; clear(): void; } class ImageTileSource extends TileSource { constructor(options: { url: string; buildPyramid?: boolean | undefined; crossOriginPolicy?: string | boolean | undefined; ajaxWithCredentials?: string | boolean | undefined; useCanvas?: boolean | undefined; }); destroy(): void; } class LegacyTileSource extends TileSource { constructor( levels?: Array<{ url: string; width: number; height: number; }>, ); } interface MouseTrackerOptions { element: Element | string; startDisabled?: boolean | undefined; clickTimeThreshold?: number | undefined; clickDistThreshold?: number | undefined; dblClickTimeThreshold?: number | undefined; dblClickDistThreshold?: number | undefined; stopDelay?: number | undefined; preProcessEventHandler?: PreprocessEventHandler | undefined; contextMenuHandler?: EventHandler<ContextMenuMouseTrackerEvent> | undefined; enterHandler?: EventHandler<MouseTrackerEvent> | undefined; /** * @deprecated use leaveHandler instead */ exitHandler?: EventHandler<MouseTrackerEvent> | undefined; leaveHandler?: EventHandler<MouseTrackerEvent> | undefined; overHandler?: EventHandler<MouseTrackerEvent> | undefined; outHandler?: EventHandler<MouseTrackerEvent> | undefined; pressHandler?: EventHandler<PressMouseTrackerEvent> | undefined; nonPrimaryPressHandler?: EventHandler<MouseTrackerEvent> | undefined; releaseHandler?: EventHandler<MouseTrackerEvent> | undefined; nonPrimaryReleaseHandler?: EventHandler<MouseTrackerEvent> | undefined; moveHandler?: EventHandler<MouseTrackerEvent> | undefined; scrollHandler?: EventHandler<MouseTrackerEvent> | undefined; clickHandler?: EventHandler<MouseTrackerEvent> | undefined; dblClickHandler?: EventHandler<MouseTrackerEvent> | undefined; dragHandler?: EventHandler<MouseTrackerEvent> | undefined; dragEndHandler?: EventHandler<MouseTrackerEvent> | undefined; pinchHandler?: EventHandler<MouseTrackerEvent> | undefined; keyDownHandler?: EventHandler<MouseTrackerEvent> | undefined; keyUpHandler?: EventHandler<MouseTrackerEvent> | undefined; keyHandler?: EventHandler<MouseTrackerEvent> | undefined; focusHandler?: EventHandler<MouseTrackerEvent> | undefined; blurHandler?: EventHandler<MouseTrackerEvent> | undefined; userData?: object | undefined; } class MouseTracker { clickTimeThreshold: number; clickDistThreshold: number; dblClickTimeThreshold: number; dblClickDistThreshold: number; element: Element; constructor(options: MouseTrackerOptions); blurHandler: EventHandler<MouseTrackerEvent>; clickHandler: EventHandler<MouseTrackerEvent>; contextMenuHandler: EventHandler<ContextMenuMouseTrackerEvent>; dblClickHandler: EventHandler<MouseTrackerEvent>; destroy(): void; dragEndHandler: EventHandler<MouseTrackerEvent>; dragHandler: EventHandler<MouseTrackerEvent>; enterHandler: EventHandler<MouseTrackerEvent>; /** * @deprecated use leaveHandler instead */ exitHandler: EventHandler<MouseTrackerEvent>; leaveHandler: EventHandler<MouseTrackerEvent>; focusHandler: EventHandler<MouseTrackerEvent>; getActivePointerCount(): number; getActivePointersListByType(type: string): GesturePointList; keyDownHandler: EventHandler<KeyMouseTrackerEvent>; keyHandler: EventHandler<KeyMouseTrackerEvent>; keyUpHandler: EventHandler<KeyMouseTrackerEvent>; moveHandler: EventHandler<MouseTrackerEvent>; nonPrimaryPressHandler: EventHandler<MouseTrackerEvent>; nonPrimaryReleaseHandler: EventHandler<MouseTrackerEvent>; overHandler: EventHandler<MouseTrackerEvent>; outHandler: EventHandler<MouseTrackerEvent>; pinchHandler: EventHandler<MouseTrackerEvent>; pressHandler: EventHandler<PressMouseTrackerEvent>; preProcessEventHandler: PreprocessEventHandler; releaseHandler: EventHandler<MouseTrackerEvent>; scrollHandler: EventHandler<MouseTrackerEvent>; setTracking(track: boolean): MouseTracker; stopHandler: EventHandler<MouseTrackerEvent>; } interface EventProcessInfo { eventSource: MouseTracker; originalEvent: Event; originalTarget: Element; eventPhase: EventPhase; eventType: | "keydown" | "keyup" | "keypress" | "focus" | "blur" | "contextmenu" | "gotpointercapture" | "lostpointercapture" | "pointerenter" | "pointerleave" | "pointerover" | "pointerout" | "pointerdown" | "pointerup" | "pointermove" | "pointercancel" | "wheel" | "click" | "dblclick"; pointerType: string; isEmulated: boolean; isStoppable: boolean; isCancelable: boolean; defaultPrevented: boolean; preventDefault: boolean; preventGesture: boolean; stopPropagation: boolean; shouldCapture: boolean; shouldReleaseCapture: boolean; userData: unknown; } interface GesturePoint { id: number; type: string; captured: boolean; isPrimary: boolean; insideElementPressed: boolean; insideElement: boolean; speed: number; direction: number; contactPos: Point; contactTime: number; lastPos: Point; lastTime: number; currentPos: Point; currentTime: number; } class GesturePointList { buttons: Button[]; captureCount: number; clicks: number; contacts: number; type: string; constructor(type: string); add(gesturePoint: GesturePoint): number; addContact(): void; asArray(): GesturePoint[]; getById(id: number): GesturePoint | null; getByIndex(index: number): GesturePoint | null; getLength(): number; getPrimary(): GesturePoint | null; removeById(id: number): number; removeContact(): void; } class Navigator extends Viewer { setFlip(state: boolean): void; update(viewport: Viewport): void; updateSize(): void; setWidth(width: number | string): void; setHeight(width: number | string): void; } class OsmTileSource extends TileSource { constructor(width: number, height: number, tileSize: number, tileOverlap: number, tilesUrl: string); } type OnDrawCallback = (position: Point, size: Point, element: HTMLElement) => void; interface OverlayOptions { element: HTMLElement; location: Point | Rect; placement?: Placement | undefined; onDraw?: OnDrawCallback | undefined; checkResize?: boolean | undefined; width?: number | undefined; height?: number | undefined; rotationMode?: OverlayRotationMode | undefined; } class Overlay { constructor(options: OverlayOptions); adjust(position: Point, size: Point): void; destroy(): void; drawHTML(container: HTMLElement): void; getBounds(viewport: Viewport): Rect; update(location: Point | Rect, placement: Placement): void; } class Point { x: number; y: number; constructor(x?: number, y?: number); apply(func: (v: number) => number): Point; clone(): Point; distanceTo(point: Point): number; divide(factor: number): Point; equals(point: Point): boolean; minus(point: Point): Point; negate(): Point; plus(point: Point): Point; rotate(degrees: number, pivot?: Point): Point; squaredDistanceTo(point: Point): number; times(factor: number): Rect; toString(): string; } class Rect { x: number; y: number; width: number; height: number; degrees: number; constructor(x?: number, y?: number, width?: number, height?: number, degrees?: number); clone(): Rect; containsPoint(point: Point, epsilon?: number): boolean; equals(rectangle: Rect): boolean; getAspectRatio(): number; getBottomLeft(): Point; getBottomRight(): Point; getBoundingBox(): Rect; getCenter(): Point; getIntegerBoundingBox(): Rect; getSize(): Point; getTopLeft(): Point; getTopRight(): Point; intersection(rect: Rect): Rect; rotate(degrees: number, pivot?: Rect): Rect; times(factor: number): Rect; toString(): string; translate(delta: Point): Rect; union(rect: Rect): Rect; } class ReferenceStrip { constructor(options: object); setFocus(): void; update(): void; } class Spring { animationTime: number; current: { value: number; time: number; }; springStiffness: number; start: { value: number; time: number; }; constructor(options: { springStiffness: number; animationTime: number; initial?: number | undefined; exponential?: boolean | undefined; }); isAtTargetValue(): boolean; resetTo(target: number): void; shiftBy(delta: number): void; springTo(target: number): void; update(): void; } class Tile { ajaxHeaders: object; beingDrawn: boolean; blendStart: number; bounds: Rect; cacheKey: string; context2D: CanvasRenderingContext2D; element: Element; exists: boolean; flipped: boolean; image: object; imgElement: HTMLImageElement; isBottomMost: boolean; isRightMost: boolean; lastTouchTime: number; level: number; loaded: boolean; loading: boolean; loadWithAjax: boolean; opacity: number; position: Point; size: Point; sourceBounds: Rect; style: string; url: string; visibility: number; x: number; y: number; constructor( level: number, x: number, y: number, bounds: Rect, exists: boolean, url: string, context2D: CanvasRenderingContext2D, loadWithAjax: boolean, ajaxHeaders: object, sourceBounds: Rect, ); drawCanvas( context: CanvasRenderingContext2D, drawingHandler: (context: CanvasRenderingContext2D, tile: any, rendered: any) => void, scale?: number, translate?: Point, ): void; drawHTML(container: Element): void; getScaleForEdgeSmoothing(): number; getTranslationForEdgeSmoothing(scale?: number): Point; toString(): string; unload(): void; } class Scalebar { constructor(optons: ScalbarOptions) updateOptions(options: ScalbarOptions): void; refresh(options: Partial<ScalbarOptions>): void; drawMicroscopyScalebar(size: number, unit: string, value: number): void; getAsCanvas(): HTMLCanvasElement; getImageWithScalebarAsCanvas(): HTMLCanvasElement; getVisible(): boolean; } class TileCache { constructor(options: { maxImageCacheCount?: number | undefined }); cacheTile(options: { tile: Tile; image: HTMLImageElement; // TODO: check type tiledImage: TiledImage; cutoff?: number | undefined; }): void; clearTilesFor(tiledImage: TiledImage): void; numTilesLoaded(): number; } class TiledImage { source: TileSource; constructor(options: { source: TileSource; viewer: Viewer; tileCache: TileCache; drawer: Drawer; imageLoader: ImageLoader; x?: number | undefined; y?: number | undefined; width?: number | undefined; height?: number | undefined; fitBounds?: Rect | undefined; fitBoundsPlacement?: Placement | undefined; clip?: Rect | undefined; springStiffness?: number | undefined; animationTime?: boolean | undefined; minZoomImageRatio?: number | undefined; wrapHorizontal?: boolean | undefined; wrapVertical?: boolean | undefined; immediateRender?: boolean | undefined; blendTime?: number | undefined; alwaysBlend?: boolean | undefined; minPixelRatio?: number | undefined; smoothTileEdgesMinZoom?: number | undefined; iOSDevice?: boolean | undefined; opacity?: number | undefined; preload?: boolean | undefined; compositeOperation?: string | undefined; debugMode?: boolean | undefined; placeholderFillStyle?: string | CanvasGradient | CanvasPattern | undefined; crossOriginPolicy?: string | boolean | undefined; ajaxWithCredentials?: boolean | undefined; loadTilesWithAjax?: boolean | undefined; ajaxHeaders?: object | undefined; }); addHandler<T extends keyof TiledImageEventMap>( eventName: T, handler: EventHandler<TiledImageEventMap[T]>, userData?: object, ): void; addOnceHandler<T extends keyof TiledImageEventMap>( eventName: T, handler: EventHandler<TiledImageEventMap[T]>, userData?: object, ): void; destroy(): void; draw(): void; fitBounds(bounds: Rect, anchor?: Placement, immediately?: boolean): void; getBounds(current?: boolean): Rect; getBoundsNoRotate(current?: boolean): Rect; getClip(): Rect | null; getClippedBounds(current?: boolean): Rect; getCompositeOperation(): string; getContentSize(): Point; getFullyLoaded(): boolean; getFlip(): boolean; getHandler(eventName: string): (source: Event, ...args: any[]) => void; getOpacity(): number; getPreload(): boolean; getRotation(current?: boolean): number; getSizeInWindowCoordinates(): Point; getTileBounds(level: number, x: number, y: number): Rect; imageToViewerElementCoordinates(pixel: Point): Point; imageToViewportCoordinates(position: Point, current?: boolean): Point; imageToViewportCoordinates(imageX: number, imageY: number, current?: boolean): Point; imageToViewportRectangle( imageX: number, imageY?: number, pixelWidth?: number, pixelHeight?: number, current?: boolean, ): Rect; imageToViewportRectangle(position: Rect, pixelWidth?: number, pixelHeight?: number, current?: boolean): Rect; imageToViewportZoom(imageZoom: number): number; imageToWindowCoordinates(pixel: Point): Point; needsDraw(): boolean; raiseEvent(eventName: string, eventArgs: object): void; removeAllHandlers(eventName: keyof TiledImageEventMap): void; removeHandler<T extends keyof TiledImageEventMap>( eventName: T, handler: EventHandler<TiledImageEventMap[T]>, ): void; reset(): void; resetCroppingPolygons(): void; setClip(newClip: Rect | null): void; setCompositeOperation(compositeOperation: string): void; setCroppingPolygons(polygons: Point[][]): void; setFlip(flip: boolean): void; setHeight(height: number, immediately?: boolean): void; setOpacity(opacity: number): void; setPosition(position: Point, immediately?: boolean): void; setPreload(preload: boolean): void; setRotation(degrees: number, immediately?: boolean): void; setWidth(width: number, immediately?: boolean): void; update(): boolean; viewerElementToImageCoordinates(pixel: Point): Point; viewportToImageCoordinates(position: Point, current?: boolean): Point; viewportToImageCoordinates(viewerX: number, viewerY: number, current?: boolean): Point; viewportToImageRectangle(position: Rect): Rect; viewportToImageRectangle( viewportX: number, viewportY: number, pixelWidth?: number, pixelHeight?: number, current?: boolean, ): Rect; viewportToImageZoom(viewportZoom: number): number; windowToImageCoordinates(pixel: Point): Point; } class TileSource extends EventSource { aspectRatio: number; dimensions: Point; maxLevel: number; minLevel: number; ready: boolean; tileOverlap: number; constructor(options: TileSourceOptions); addHandler<T extends keyof TileSourceEventMap>( eventName: T, handler: EventHandler<TileSourceEventMap[T]>, userData?: object, ): void; addOnceHandler<T extends keyof TileSourceEventMap>( eventName: T, handler: EventHandler<TileSourceEventMap[T]>, userData?: object, times?: number, ): void; configure(data: string | object | any[] | Document): object; getClosestLevel(): number; getHandler(eventName: string): (event: Event) => void; getImageInfo(url: string): void; getLevelScale(level: number): number; getNumTiles(level: number): number; getPixelRatio(level: number): number; getTileAjaxHeaders(level: number, x: number, y: number): object; getTileAtPoint(level: number, point: Point): Tile; getTileBounds(level: number, x: number, y: number, isSource?: boolean): Rect; getTileHeight(level: number): number; getTileUrl(level: number, x: number, y: number): string; getTileWidth(level: number): number; raiseEvent(eventName: string, eventArgs: object): void; removeAllHandlers(eventName: keyof TileSourceEventMap): void; removeHandler<T extends keyof TileSourceEventMap>( eventName: T, handler: EventHandler<TileSourceEventMap[T]>, ): void; setMaxLevel(level: number): void; supports(data: string | object | any[] | Document, url: string): boolean; tileExists(level: number, x: number, y: number): boolean; } class TmsTileSource extends TileSource { constructor(width: number, height: number, tileSize: number, tileOverlap: number, tilesUrl: string); } interface ImageOptions { index?: number | undefined; replace?: boolean | undefined; x?: number | undefined; y?: number | undefined; width?: number | undefined; height?: number | undefined; fitBounds?: Rect | undefined; fitBoundsPlacement?: Placement | undefined; clip?: Rect | undefined; opacity?: number | undefined; preload?: boolean | undefined; degrees?: number | undefined; flipped?: boolean | undefined; compositeOperation?: string | undefined; crossOriginPolicy?: string | undefined; ajaxWithCredentials?: boolean | undefined; loadTilesWithAjax?: boolean | undefined; ajaxHeaders?: object | undefined; success?: ((event: Event) => void) | undefined; error?: ((error: Error) => void) | undefined; collectionImmediately?: boolean | undefined; placeholderFillStyle?: string | CanvasGradient | CanvasPattern | undefined; } interface TiledImageOptions extends ImageOptions { tileSource: string | object; } interface SimpleImageOptions extends ImageOptions { url: string; } class Viewer extends ControlDock { canvas: HTMLElement; container: HTMLElement; drawer: Drawer; element: HTMLElement; initialPage: number; navigator: Navigator; viewport: Viewport; world: World; referenceStrip: ReferenceStrip; pixelsPerArrowPress: number; scalebar: Scalebar | null; constructor(options: Options); _cancelPendingImages(): void; addHandler<T extends keyof ViewerEventMap>( eventName: T, callback: EventHandler<ViewerEventMap[T]>, userData?: object, ): void; addOnceHandler<T extends keyof ViewerEventMap>( eventName: T, callback: EventHandler<ViewerEventMap[T]>, userData?: object, times?: number, ): void; addOverlay( element: HTMLElement | string | OverlayOptions, location?: Point | Rect, placement?: Placement, onDraw?: (element: HTMLElement, location: Location, placement: Placement) => void, ): Viewer; addReferenceStrip(): void; addSimpleImage(options: SimpleImageOptions): void; addTiledImage(options: TiledImageOptions): void; bindSequenceControls(): Viewer; bindStandardControls(): Viewer; clearOverlays(): Viewer; close(): Viewer; currentPage(): number; destroy(): void; forceRedraw(): Viewer; gestureSettingsByDeviceType(type: string): GestureSettings; getHandler(eventName: string): (event: Event) => void; getOverlayById(element: Element | string): Overlay; goToPage(page: number): Viewer; isFullPage(): boolean; isMouseNavEnabled(): boolean; isOpen(): boolean; isVisible(): boolean; open(tileSources: string | object | TileSource[], initialPage?: number): Viewer; raiseEvent(eventName: string, eventArgs?: object): void; removeAllHandlers(eventName: keyof ViewerEventMap): void; removeHandler<T extends keyof ViewerEventMap>(eventName: T, handler: EventHandler<ViewerEventMap[T]>): void; removeOverlay(overlay: Element | string): Viewer; removeReferenceStrip(): void; setControlsEnabled(enabled: boolean): Viewer; setDebugMode(debug: boolean): Viewer; setFullPage(fullScreen: boolean): Viewer; setFullScreen(fullScreen: boolean): Viewer; setMouseNavEnabled(enabled: boolean): Viewer; setVisible(visible: boolean): Viewer; updateOverlay(element: Element | string, location: Point | Rect, placement?: Placement): Viewer; } class Viewport { constructor(options: { margins: object; springStiffness?: number | undefined; animationTime?: number | undefined; minZoomImageRatio?: number | undefined; maxZoomPixelRatio?: number | undefined; visibilityRatio?: number | undefined; wrapHorizontal?: boolean | undefined; wrapVertical?: boolean | undefined; defaultZoomLevel?: number | undefined; minZoomLevel?: number | undefined; maxZoomLevel?: number | undefined; degrees?: number | undefined; homeFillsViewer?: boolean | undefined; }); applyConstraints(immediately?: boolean): Viewport; deltaPixelsFromPoints(deltaPoints: Point, current?: boolean): Point; deltaPixelsFromPointsNoRotate(deltaPoints: Point, current?: boolean): Point; deltaPointsFromPixels(deltaPoints: Point, current?: boolean): Point; deltaPointsFromPixelsNoRotate(deltaPoints: Point, current?: boolean): Point; ensureVisible(immediately?: boolean): Viewport; fitBounds(bounds: Rect, immediately?: boolean): Viewport; fitBoundsWithConstraints(bounds: Rect, immediately?: boolean): Viewport; fitHorizontally(immediately?: boolean): Viewport; fitVertically(immediately?: boolean): Viewport; getAspectRatio(): number; getBounds(current?: boolean): Rect; getBoundsNoRotate(current?: boolean): Rect; getBoundsNoRotateWithMargins(current?: boolean): Rect; getBoundsWithMargins(current?: boolean): Rect; getCenter(current?: boolean): Point; getConstrainedBounds(current?: boolean): Viewport; getContainerSize(): Point; getFlip(): boolean; getHomeBounds(): Rect; getHomeBoundsNoRotate(): Rect; getHomeZoom(): number; getMargins(): object; getMaxZoom(): number; getMinZoom(): number; getRotation(current?: boolean): number; getZoom(current?: boolean): number; goHome(immediately?: boolean): void; imageToViewerElementCoordinates(pixel: Point): Point; imageToViewportCoordinates(position: Point): Point; imageToViewportCoordinates(imageX: number, imageY: number): Point; imageToViewportCoordinates(imageX: number, imageY: number, pixelWidth: number, pixelHeight: number): Point; imageToViewportRectangle( imageX: number | Rect, imageY?: number, pixelWidth?: number, pixelHeight?: number, ): Rect; imageToViewportZoom(imageZoom: number): number; imageToWindowCoordinates(pixel: Point): Point; panBy(delta: Point, immediately?: boolean): Viewport; panTo(center: Point, immediately?: boolean): Viewport; pixelFromPoint(point: Point, current?: boolean): Point; pixelFromPointNoRotate(point: Point, current?: boolean): Point; pointFromPixel(point: Point, current?: boolean): Point; pointFromPixelNoRotate(point: Point, current?: boolean): Point; resetContentSize(contentSize: Point): Viewport; resize(): Viewport; setFlip(state: boolean): Viewport; setMargins(margins: object): void; setRotation(degrees: number): Viewport; toggleFlip(): Viewport; update(): boolean; viewerElementToImageCoordinates(pixel: Point): Point; viewerElementToViewportCoordinates(pixel: Point): Point; viewerElementToViewportRectangle(rectangle: Rect): Rect; viewportToImageCoordinates(position: Point): Point; viewportToImageCoordinates(viewerX: number, viewerY: number): Point; viewportToImageRectangle(rectangle: Rect): Rect; viewportToImageRectangle(viewerX: number, viewerY: number, pointWidth: number, pointHeight: number): Rect; viewportToImageZoom(viewportZoom: number): number; viewportToViewerElementCoordinates(point: Point): Point; viewportToViewerElementRectangle(rectangle: Rect): Rect; viewportToWindowCoordinates(point: Point): Point; windowToImageCoordinates(pixel: Point): Point; windowToViewportCoordinates(pixel: Point): Point; zoomBy(factor: number, refPoint?: Point, immediately?: boolean): Viewport; zoomTo(factor: number, refPoint?: Point, immediately?: boolean): Viewport; } class World extends EventSource { constructor(options: object); addHandler<T extends keyof WorldEventMap>( eventName: T, callback: EventHandler<WorldEventMap[T]>, userData?: object, ): void; addItem(item: TiledImage, options?: { index?: number | undefined }): void; addOnceHandler<T extends keyof WorldEventMap>( eventName: T, callback: EventHandler<WorldEventMap[T]>, userData?: object, times?: number, ): void; arrange(options: { immediately?: boolean | undefined; layout?: "horizontal" | "vertical" | undefined; rows?: num