@lesjoursfr/browser-tools
Version:
Some browser tools for events & DOM manipulation.
54 lines (53 loc) • 3.16 kB
TypeScript
/**
* Based on lodash version of throttle : https://github.com/lodash/lodash/blob/master/throttle.js
*/
/**
* Creates a debounced function that delays invoking `func` until after `wait`
* milliseconds have elapsed since the last time the debounced function was
* invoked, or until the next browser frame is drawn. Provide `options` to indicate
* whether `func` should be invoked on the leading and/or trailing edge of the
* `wait` timeout. The `func` is invoked with the last arguments provided to the
* debounced function. Subsequent calls to the debounced function return the
* result of the last `func` invocation.
* **Note:** If `leading` and `trailing` options are `true`, `func` is
* invoked on the trailing edge of the timeout only if the debounced function
* is invoked more than once during the `wait` timeout.
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
* until the next tick, similar to `setTimeout` with a timeout of `0`.
* @param {Function} func The function to debounce
* @param {number} wait The number of milliseconds to delay
* @param {Object} [options={}] The options object
* @param {boolean} [options.leading=false] Specify invoking on the leading edge of the timeout
* @param {boolean} [options.trailing=true] Specify invoking on the trailing edge of the timeout
* @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's invoked
* @returns {Function} Returns the new debounced function
*/
declare function debounce<F extends (...args: any) => any>(func: F, wait: number, options?: {
leading?: boolean;
trailing?: boolean;
maxWait?: number;
}): (...args: Parameters<F>) => ReturnType<F>;
/**
* Creates a throttled function that only invokes `func` at most once per
* every `wait` milliseconds (or once per browser frame). Provide `options` to indicate
* whether `func` should be invoked on the leading and/or trailing edge of the
* `wait` timeout. The `func` is invoked with the last arguments provided to the
* throttled function. Subsequent calls to the throttled function return the
* result of the last `func` invocation.
* **Note:** If `leading` and `trailing` options are `true`, `func` is
* invoked on the trailing edge of the timeout only if the throttled function
* is invoked more than once during the `wait` timeout.
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
* until the next tick, similar to `setTimeout` with a timeout of `0`.
* @param {Function} func The function to throttle
* @param {number} wait The number of milliseconds to throttle invocations to
* @param {Object} [options={}] The options object
* @param {boolean} [options.leading=true] Specify invoking on the leading edge of the timeout
* @param {boolean} [options.trailing=true] Specify invoking on the trailing edge of the timeout
* @returns {Function} Returns the new throttled function
*/
declare function throttle<F extends (...args: any) => any>(func: F, wait: number, options?: {
leading?: boolean;
trailing?: boolean;
}): (...args: Parameters<F>) => ReturnType<F>;
export { debounce, throttle };