@web-atoms/core
Version:
50 lines (49 loc) • 1.42 kB
JavaScript
System.register(["./baseTypes"], function (_export, _context) {
"use strict";
var registerInit, timerSymbol, Once;
return {
setters: [function (_baseTypes) {
registerInit = _baseTypes.registerInit;
}],
execute: function () {
timerSymbol = Symbol();
Once = (timeInMS = 100) => (target, key) => {
registerInit(target, vm => {
const oldMethod = vm[key];
let keyTimer = vm[timerSymbol];
if (typeof keyTimer === "undefined") {
keyTimer = {};
vm[timerSymbol] = keyTimer;
}
let running = false;
vm[key] = (...a) => {
if (running) {
return;
}
const pending = keyTimer[key];
if (pending) {
clearTimeout(pending);
}
keyTimer[key] = setTimeout((...b) => {
running = true;
delete keyTimer[key];
const r = oldMethod.apply(vm, b);
if (r && r.then) {
r.then(() => {
running = false;
}, e => {
running = false;
console.warn(e);
});
} else {
running = false;
}
}, timeInMS, ...a);
};
});
};
_export("default", Once);
}
};
});
//# sourceMappingURL=Once.js.map