| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | export default class Timer {	constructor(callback, delay, paused) {		this.callback = callback;		this.timerId = undefined;		this.start = undefined;		this.paused = paused;		this.remaining = delay;		this.timeWhenPaused = 0;		this.timePaused = Date.now();		if (!paused) {			this.resume();		}	}	pause() {		clearTimeout(this.timerId);		this.remaining -= Date.now() - this.start;		this.timePaused = Date.now();		this.paused = true;	}	ifNotPaused() {		if (!this.paused) {			this.resume();		}	}	resume() {		this.start = Date.now();		clearTimeout(this.timerId);		this.timerId = setTimeout(this.callback, this.remaining);		this.timeWhenPaused = Date.now() - this.timePaused;		this.paused = false;	}	resetTimeWhenPaused() {		this.timeWhenPaused = 0;	}	getTimePaused() {		if (!this.paused) {			return this.timeWhenPaused;		}		return Date.now() - this.timePaused;	}}
 |