raid-addons
Version:
Add-ons functions for use with Raid
36 lines (30 loc) • 755 B
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.lock = void 0;
/**
* @param {Raid::Signal} signal - the Raid::Signal to attach to
* @returns {Func} void - a function to dispose the current update function
*/
var lock = function lock(signal) {
var dispose = null;
var cached = [];
return function (fn) {
if (dispose) {
dispose();
}
cached.push(fn);
dispose = signal.register(fn);
return function () {
// Dispose from signal, dump from cached update array
dispose();
cached.pop(); // If there was a previous one, reinstate it
var last = cached.pop();
if (last) {
dispose = signal.register(last);
}
};
};
};
exports.lock = lock;
;