UNPKG

@igo2/utils

Version:
37 lines 4.15 kB
import { Subject } from 'rxjs'; import { distinctUntilChanged } from 'rxjs/operators'; export var SubjectStatus; (function (SubjectStatus) { SubjectStatus[SubjectStatus["Error"] = 0] = "Error"; SubjectStatus[SubjectStatus["Done"] = 1] = "Done"; SubjectStatus[SubjectStatus["Working"] = 2] = "Working"; SubjectStatus[SubjectStatus["Waiting"] = 3] = "Waiting"; })(SubjectStatus || (SubjectStatus = {})); export class Watcher { status$ = new Subject(); status$$; get status() { return this._status; } set status(value) { this._status = value; this.status$.next(value); } _status; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type subscribe(callback, scope) { this.watch(); this.status$$ = this.status$.pipe(distinctUntilChanged()).subscribe(() => { callback.call(scope, this); }); } unsubscribe() { this.unwatch(); if (this.status$$ !== undefined) { this.status$$.unsubscribe(); this.status$$ = undefined; } this.status = SubjectStatus.Waiting; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWxzL3NyYy9saWIvd2F0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLG1EQUFTLENBQUE7SUFDVCxpREFBUSxDQUFBO0lBQ1IsdURBQVcsQ0FBQTtJQUNYLHVEQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLE9BQWdCLE9BQU87SUFDcEIsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO0lBQ3BDLFFBQVEsQ0FBZTtJQUVqQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQW9CO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDTyxPQUFPLENBQWdCO0lBTS9CLHNFQUFzRTtJQUN0RSxTQUFTLENBQUMsUUFBa0IsRUFBRSxLQUFXO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGVudW0gU3ViamVjdFN0YXR1cyB7XG4gIEVycm9yID0gMCxcbiAgRG9uZSA9IDEsXG4gIFdvcmtpbmcgPSAyLFxuICBXYWl0aW5nID0gM1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2F0Y2hlciB7XG4gIHB1YmxpYyBzdGF0dXMkID0gbmV3IFN1YmplY3Q8U3ViamVjdFN0YXR1cz4oKTtcbiAgcHJvdGVjdGVkIHN0YXR1cyQkOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IHN0YXR1cygpOiBTdWJqZWN0U3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzO1xuICB9XG4gIHNldCBzdGF0dXModmFsdWU6IFN1YmplY3RTdGF0dXMpIHtcbiAgICB0aGlzLl9zdGF0dXMgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXR1cyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfc3RhdHVzOiBTdWJqZWN0U3RhdHVzO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB3YXRjaCgpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1bndhdGNoKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuICBzdWJzY3JpYmUoY2FsbGJhY2s6IEZ1bmN0aW9uLCBzY29wZT86IGFueSkge1xuICAgIHRoaXMud2F0Y2goKTtcblxuICAgIHRoaXMuc3RhdHVzJCQgPSB0aGlzLnN0YXR1cyQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY2FsbGJhY2suY2FsbChzY29wZSwgdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLnVud2F0Y2goKTtcbiAgICBpZiAodGhpcy5zdGF0dXMkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXR1cyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN0YXR1cyQkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1cyA9IFN1YmplY3RTdGF0dXMuV2FpdGluZztcbiAgfVxufVxuIl19