javascript-decorators
Version:
49 lines (42 loc) • 1.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._defer = exports._debounce = exports._timeout = undefined;
var _helpers = require('./helpers');
/**
* Timeout decorator
*
* @method _timeout
*
* @param { number } wait = 300
*
*/
var __timeout = function timeout() {
var wait = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
var debounceKeys = {};
return function timeoutTarget(key, target, descriptor) {
var func = descriptor.value;
(0, _helpers.descriptorIsFunc)(key, func);
var dkey = Symbol('dkey');
descriptor.value = function descriptorValue() {
var _this = this;
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
debounceKeys[dkey] = setTimeout(function () {
delete debounceKeys[dkey];
func.apply(_this, args);
}, wait);
};
return descriptor;
};
}; /**
* Timing related decorators
*
* @author Avraam Mavridis <avr.mav@gmail.com>
*
*/
var _timeout = exports._timeout = __timeout;
var _debounce = exports._debounce = __timeout;
var _defer = exports._defer = __timeout.bind(undefined, 0);
;