scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
60 lines (59 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateSuspender = void 0;
var EventHandler_1 = require("../../Core/EventHandler");
/**
* A class which allows nested suspend/resume operations on an {@link ISuspendable} target
*/
var UpdateSuspender = /** @class */ (function () {
function UpdateSuspender() {
this.onResumed = new EventHandler_1.EventHandler();
this.suspendCounter = 0;
this.locks = new Set();
}
Object.defineProperty(UpdateSuspender.prototype, "isSuspended", {
/**
* Gets whether the current instance is suspended
*/
get: function () {
return this.suspendCounter > 0 || this.locks.size > 0;
},
enumerable: false,
configurable: true
});
/**
* Call this to suspend drawing
*/
UpdateSuspender.prototype.suspend = function () {
this.suspendCounter++;
};
/**
* Call this to resume drawing
*/
UpdateSuspender.prototype.resume = function (force) {
if (force === void 0) { force = false; }
this.suspendCounter = force ? 0 : Math.max(this.suspendCounter - 1, 0);
if (this.suspendCounter === 0) {
this.onResumed.raiseEvent();
}
};
/**
* Call this to force suspend drawing.
* Return unlock token.
* All of the unlock tokens are required to be called to resume drawing.
*/
UpdateSuspender.prototype.lock = function () {
var _this = this;
var token = function () {
var success = _this.locks.delete(token);
if (!success) {
console.warn("Seems like a suspender unlock token has been called multiple times. Make sure the logic is correct.\"");
}
return success;
};
this.locks.add(token);
return token;
};
return UpdateSuspender;
}());
exports.UpdateSuspender = UpdateSuspender;