@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
20 lines • 2.48 kB
JavaScript
import { throttle as _throttle } from 'lodash-es';
/**
* Decorator to throttle functions call.
* @param wait throttle time.
* @param options set triggers, eg on trailing edge or falling edge,
* see lodash documentation for details
*/
export function throttle(wait, options) {
return (target, fnName, descriptor) => {
const fn = descriptor.value;
descriptor.value = function (...args) {
const throttledFnName = `_${fnName}Throttled`;
if (!this[throttledFnName]) {
this[throttledFnName] = _throttle(fn, wait, options);
}
return this[throttledFnName](...args);
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vdGhyb3R0bGUuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFLLEVBQUUsT0FBUTtJQUN0QyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNwQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLElBQUk7WUFDbEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLFdBQVcsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3R0bGUgYXMgX3Rocm90dGxlIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gdGhyb3R0bGUgZnVuY3Rpb25zIGNhbGwuXG4gKiBAcGFyYW0gd2FpdCB0aHJvdHRsZSB0aW1lLlxuICogQHBhcmFtIG9wdGlvbnMgc2V0IHRyaWdnZXJzLCBlZyBvbiB0cmFpbGluZyBlZGdlIG9yIGZhbGxpbmcgZWRnZSxcbiAqIHNlZSBsb2Rhc2ggZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3R0bGUod2FpdD8sIG9wdGlvbnM/KSB7XG4gIHJldHVybiAodGFyZ2V0LCBmbk5hbWUsIGRlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBmbiA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICBjb25zdCB0aHJvdHRsZWRGbk5hbWUgPSBgXyR7Zm5OYW1lfVRocm90dGxlZGA7XG4gICAgICBpZiAoIXRoaXNbdGhyb3R0bGVkRm5OYW1lXSkge1xuICAgICAgICB0aGlzW3Rocm90dGxlZEZuTmFtZV0gPSBfdGhyb3R0bGUoZm4sIHdhaXQsIG9wdGlvbnMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1t0aHJvdHRsZWRGbk5hbWVdKC4uLmFyZ3MpO1xuICAgIH07XG4gIH07XG59XG4iXX0=