UNPKG

@pilotlab/lux-debug

Version:

A luxurious user experience framework, developed by your friends at Pilot.

47 lines (29 loc) 1.06 kB
import { Signal } from '@pilotlab/lux-signals'; export class LogSpinner { constructor() { this._characters = '▉▊▋▌▍▎▏▎▍▌▋▊▉'.split(''); } private _intervalReference:any; private _characters:string[] = []; get isRunning():boolean { return this._isRunning; } private _isRunning:boolean = false; ticked:Signal<string> = new Signal<string>(false); stopped:Signal<string> = new Signal<string>(false); start():void { if (this._isRunning) return; let current = 0; this._intervalReference = setInterval(() => { let spinnerText = this._characters[current]; this.ticked.dispatch(spinnerText); current = ++current % this._characters.length; }, 100); this._isRunning = true; }; stop():void { clearInterval(this._intervalReference); this._intervalReference = null; this._isRunning = false; this.stopped.dispatch(' '); } } // End class export default LogSpinner;