@thalesrc/resize-manager
Version:
Improved Resize Events of Window & Dom Elements
69 lines (68 loc) • 1.91 kB
TypeScript
import { Observable } from "rxjs";
/**
* Resizable Target Type (HTMLElement or Window)
*/
export declare type ResizableTarget = HTMLElement | Window;
/**
* Resize Event
*/
export interface ResizeEvent {
/**
* width of the target in pixels
*/
width: number;
/**
* height of the target in pixels
*/
height: number;
}
/**
* #### Resize Observer
* Provides improved resize observables
*/
export declare class GTResizeObserver {
private target;
private throttleTime;
/**
* The Base Resize Observable
* All the other events are derived from this
* Fires the width & height in pixels
*/
private _provider;
/**
* The buffer for the observables which are throttled by the same time
*/
private _buffer;
/**
* @param target Target to listen its resize events
* @param throttleTime Time interval to throttle resize events
* > The throttle time under 90ms will not work well because of performance prospects.
* > It will fire much less event than expected.
* > Use in caution!
*/
constructor(target: ResizableTarget, throttleTime?: number);
/**
* Base Resize Observable
*
* Fires on every resize event
*
* _By default, throttles events for every [90ms]{@link ScrollObserver#throttleTime}, use [throttleBy]{@link ScrollObserver#throttled} if need something else_
*/
get resize(): Observable<ResizeEvent>;
/**
* Emits only when resizing starts
*/
get resizeStart(): Observable<ResizeEvent>;
/**
* Emits only when resizing ends
*/
get resizeEnd(): Observable<ResizeEvent>;
/**
* Returns throttled resize events by given time
*
* Set `time` argument to `0` if want to catch all events
*
* @param time Time to throttle events
*/
throttleBy(time: number): Observable<ResizeEvent>;
}