@igo2/utils
Version:
37 lines • 4.15 kB
JavaScript
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