@nlabs/gothamjs
Version:
Platform
38 lines (37 loc) • 3.82 kB
JavaScript
/**
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
*/ /**
* Create a Timer
* @param {Number} delay
* @param {Function} callback
* @constructor
*/ export class GothamTimer {
timerId;
start = 0;
remaining = 0;
delay = 0;
callback;
constructor(delay, callback){
this.callback = callback;
this.delay = delay;
this.remaining = delay;
// Methods
this.getTimeRemaining = this.getTimeRemaining.bind(this);
this.pause = this.pause.bind(this);
this.resume = this.resume.bind(this);
}
pause() {
clearTimeout(this.timerId);
this.remaining -= +new Date() - this.start;
}
resume() {
this.start = +new Date();
clearTimeout(this.timerId);
this.timerId = setTimeout(this.callback, this.remaining);
}
getTimeRemaining() {
return this.remaining;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy90aW1lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSBUaW1lclxuICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBjbGFzcyBHb3RoYW1UaW1lciB7XG4gIHRpbWVySWQ6IHVua25vd247XG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xuICByZW1haW5pbmc6IG51bWJlciA9IDA7XG4gIGRlbGF5OiBudW1iZXIgPSAwO1xuICBjYWxsYmFjazogdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihkZWxheTogbnVtYmVyLCBjYWxsYmFjazogdW5rbm93bikge1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5yZW1haW5pbmcgPSBkZWxheTtcblxuICAgIC8vIE1ldGhvZHNcbiAgICB0aGlzLmdldFRpbWVSZW1haW5pbmcgPSB0aGlzLmdldFRpbWVSZW1haW5pbmcuYmluZCh0aGlzKTtcbiAgICB0aGlzLnBhdXNlID0gdGhpcy5wYXVzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVzdW1lID0gdGhpcy5yZXN1bWUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnJlbWFpbmluZyAtPSAoKyhuZXcgRGF0ZSgpKSAtIHRoaXMuc3RhcnQpO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHRoaXMuc3RhcnQgPSArKG5ldyBEYXRlKCkpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnRpbWVySWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsbGJhY2sgYXMgKCkgPT4gdm9pZCwgdGhpcy5yZW1haW5pbmcpO1xuICB9XG5cbiAgZ2V0VGltZVJlbWFpbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1haW5pbmc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJHb3RoYW1UaW1lciIsInRpbWVySWQiLCJzdGFydCIsInJlbWFpbmluZyIsImRlbGF5IiwiY2FsbGJhY2siLCJnZXRUaW1lUmVtYWluaW5nIiwiYmluZCIsInBhdXNlIiwicmVzdW1lIiwiY2xlYXJUaW1lb3V0IiwiRGF0ZSIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNEOzs7OztDQUtDLEdBQ0QsT0FBTyxNQUFNQTtJQUNYQyxRQUFpQjtJQUNqQkMsUUFBZ0IsRUFBRTtJQUNsQkMsWUFBb0IsRUFBRTtJQUN0QkMsUUFBZ0IsRUFBRTtJQUNsQkMsU0FBa0I7SUFFbEIsWUFBWUQsS0FBYSxFQUFFQyxRQUFpQixDQUFFO1FBQzVDLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNELFNBQVMsR0FBR0M7UUFFakIsVUFBVTtRQUNWLElBQUksQ0FBQ0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFDdkQsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFDQSxLQUFLLENBQUNELElBQUksQ0FBQyxJQUFJO1FBQ2pDLElBQUksQ0FBQ0UsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDRixJQUFJLENBQUMsSUFBSTtJQUNyQztJQUVBQyxRQUFRO1FBQ05FLGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0UsU0FBUyxJQUFLLENBQUUsSUFBSVEsU0FBVSxJQUFJLENBQUNULEtBQUs7SUFDL0M7SUFFQU8sU0FBUztRQUNQLElBQUksQ0FBQ1AsS0FBSyxHQUFHLENBQUUsSUFBSVM7UUFDbkJELGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0EsT0FBTyxHQUFHVyxXQUFXLElBQUksQ0FBQ1AsUUFBUSxFQUFnQixJQUFJLENBQUNGLFNBQVM7SUFDdkU7SUFFQUcsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDSCxTQUFTO0lBQ3ZCO0FBQ0YifQ==