UNPKG

scichart

Version:

Fast WebGL JavaScript Charting Library and Framework

60 lines (59 loc) 2.02 kB
"use strict"; 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;