UNPKG

@web-atoms/core

Version:
50 lines (49 loc) 1.42 kB
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