UNPKG

@playkit-js/playkit-js-ui

Version:

[![Build Status](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml/badge.svg)](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml) [![code style: prettier](https://img.shields.io/badge/c

34 lines (32 loc) 1.08 kB
/** * This function is built in order to limit the amount of times a function is called in a certain time frame * @param {Component} origFunc - the original function to be called * @param {Function} time - the time frame to allow only one function call * @param {boolean} immediate - trigger the function on the leading edge, instead of the trailing * @returns {Function} the wrapped debounce function * @example * this.props.eventManager.listen( * window, * 'resize', * debounce(e => { * this._onWindowResize(e); * }, ON_WINDOW_RESIZE_DEBOUNCE_DELAY) * ); */ export const debounce = (origFunc: (...args: any) => any, time: number, immediate = true): ((...args) => void) => { let timeout; return (...args): void => { // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this; if (immediate && !timeout) { origFunc.apply(context, args); } clearTimeout(timeout); timeout = setTimeout(() => { timeout = null; if (!immediate) { origFunc.apply(context, args); } }, time); }; };