UNPKG

@thalesrc/resize-manager

Version:

Improved Resize Events of Window & Dom Elements

69 lines (68 loc) 1.91 kB
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>; }