// Type definitions for html2canvas.js 1.0-alpha // Project: https://github.com/niklasvh/html2canvas // Definitions by: Richard Hepburn , Pei-Tang Huang , Sebastian Schocke , Rickard Staaf // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 /// declare namespace Html2Canvas { interface Html2CanvasOptions { /** Whether to parse and render the element asynchronously */ async?: boolean; /** Whether to allow cross-origin images to taint the canvas */ allowTaint?: boolean; /** Canvas background color, if none is specified in DOM. Set null for transparent */ backgroundColor?: string | null; /** Existing canvas element to use as a base for drawing on */ canvas?: any; /** Whether to use ForeignObject rendering if the browser supports it */ foreignObjectRendering?: boolean; /** Predicate function which removes the matching elements from the render. */ ignoreElements?: (element: HTMLElement) => boolean; /** Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout. */ imageTimeout?: number; /** Whether to render each letter seperately. Necessary if letter-spacing is used. */ letterRendering?: boolean; /** Whether to log events in the console. */ logging?: boolean; /** Callback function which is called when the Document has been cloned for rendering, can be used to modify the contents that will be rendered without affecting the original source document. */ onclone?: { (doc: HTMLDocument): void }; /** Url to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded. */ proxy?: string; /** Whether to cleanup the cloned DOM elements html2canvas creates temporarily */ removeContainer?: boolean; /** The scale to use for rendering. Defaults to the browsers device pixel ratio. */ scale?: number; /** Use svg powered rendering where available (FF11+). */ svgRendering?: boolean; /** Whether to test each image if it taints the canvas before drawing them */ taintTest?: boolean; /** Whether to attempt to load cross-origin images as CORS served, before reverting back to proxy. */ useCORS?: boolean; /** Define the width of the canvas in pixels. If null, renders with full width of the window. */ width?: number; /** Define the heigt of the canvas in pixels. If null, renders with full height of the window. */ height?: number; /** Crop canvas x-coordinate */ x?: number; /** Crop canvas y-coordinate */ y?: number; /** The x-scroll position to used when rendering element, (for example if the Element uses position: fixed ) */ scrollX?: number; /** The y-scroll position to used when rendering element, (for example if the Element uses position: fixed ) */ scrollY?: number; /** Window width to use when rendering Element, which may affect things like Media queries */ windowWidth?: number; /** Window height to use when rendering Element, which may affect things like Media queries */ windowHeight?: number; } } interface Html2CanvasStatic { /** * Renders an HTML element to a canvas so that a screenshot can be generated. * * The screenshot is based on the DOM and as such may not be 100% accurate to the real representation as it does not make an actual screenshot, * but builds the screenshot based on the information available on the page. * * @param {HTMLElement} element The HTML element which will be rendered to the canvas. Use the root element to render the entire window. * @param {Html2CanvasOptions} options The options object that controls how the element will be rendered. */ (element: HTMLElement, options?: Html2Canvas.Html2CanvasOptions): Html2CanvasPromise; } // FIXME: // Find out a way to dependent on real Promise interface. // And remove following custome Promise interface. interface Html2CanvasThenable { then(onFulfilled?: (value: R) => U | Html2CanvasThenable, onRejected?: (error: any) => U | Html2CanvasThenable): Html2CanvasThenable; then(onFulfilled?: (value: R) => U | Html2CanvasThenable, onRejected?: (error: any) => void): Html2CanvasThenable; } interface Html2CanvasPromise extends Html2CanvasThenable { then(onFulfilled?: (value: R) => U | Html2CanvasThenable, onRejected?: (error: any) => U | Html2CanvasThenable): Html2CanvasPromise; then(onFulfilled?: (value: R) => U | Html2CanvasThenable, onRejected?: (error: any) => void): Html2CanvasPromise; catch(onRejected?: (error: any) => U | Html2CanvasThenable): Html2CanvasPromise; } declare module 'html2canvas' { export = html2canvas; } declare var html2canvas: Html2CanvasStatic;