UNPKG

@lesjoursfr/browser-tools

Version:

Some browser tools for events & DOM manipulation.

54 lines (53 loc) 3.16 kB
/** * 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 };