ng-devui
Version:
DevUI components based on Angular
40 lines • 5.63 kB
JavaScript
import { EventEmitter } from '@angular/core';
export class PreserveNextEventEmitter extends EventEmitter {
get schedulerFns() { return this._schedulerFns; }
constructor(isAsync = false) {
super(isAsync);
this._isAsync = isAsync;
}
forceCallback(value, once = false) {
if (this.schedulerFns && this.schedulerFns.size) {
this.schedulerFns.forEach(fn => {
fn(value);
});
if (once) {
this.cleanCallbackFn();
}
}
}
cleanCallbackFn() {
this._schedulerFns = undefined;
}
emit(value) { super.emit(value); }
subscribe(generatorOrNext, error, complete) {
let schedulerFn;
if (generatorOrNext && typeof generatorOrNext === 'object') {
schedulerFn = this._isAsync ? (value) => {
setTimeout(() => generatorOrNext.next(value));
} : (value) => { generatorOrNext.next(value); };
}
else {
schedulerFn = this._isAsync ? (value) => { setTimeout(() => generatorOrNext(value)); } :
(value) => { generatorOrNext(value); };
}
if (!this._schedulerFns) {
this._schedulerFns = new Set();
}
this._schedulerFns.add(schedulerFn);
return super.subscribe(generatorOrNext, error, complete);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VydmUtbmV4dC1ldmVudC1lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2dWkvZHJhZ2Ryb3Avc2hhcmVkL3ByZXNlcnZlLW5leHQtZXZlbnQtZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sT0FBTyx3QkFBNEIsU0FBUSxZQUFlO0lBSTlELElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFakQsWUFBWSxPQUFPLEdBQUcsS0FBSztRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVEsRUFBRSxJQUFJLEdBQUcsS0FBSztRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDN0IsRUFBRSxDQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsU0FBUyxDQUFDLGVBQXFCLEVBQUUsS0FBVyxFQUFFLFFBQWM7UUFDMUQsSUFBSSxXQUE0QixDQUFDO1FBRWpDLElBQUksZUFBZSxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNELFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRixDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBQcmVzZXJ2ZU5leHRFdmVudEVtaXR0ZXI8VD4gZXh0ZW5kcyBFdmVudEVtaXR0ZXI8VD4ge1xuICAvKiog5L+d55WZ5rOo5YaM55qEIGdlbmVyYXRvck9yTmV4dOaehOaIkOeahOWHveaVsCovXG4gIHByaXZhdGUgX3NjaGVkdWxlckZuczogU2V0PGFueT47XG4gIHByaXZhdGUgX2lzQXN5bmM6IGJvb2xlYW47XG4gIGdldCBzY2hlZHVsZXJGbnMoKSB7IHJldHVybiB0aGlzLl9zY2hlZHVsZXJGbnM7IH1cblxuICBjb25zdHJ1Y3Rvcihpc0FzeW5jID0gZmFsc2UpIHtcbiAgICBzdXBlcihpc0FzeW5jKTtcbiAgICB0aGlzLl9pc0FzeW5jID0gaXNBc3luYztcbiAgfVxuXG4gIGZvcmNlQ2FsbGJhY2sodmFsdWU6IFQsIG9uY2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNjaGVkdWxlckZucyAmJiB0aGlzLnNjaGVkdWxlckZucy5zaXplKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlckZucy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgZm4gKHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKG9uY2UpIHtcbiAgICAgICAgdGhpcy5jbGVhbkNhbGxiYWNrRm4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2xlYW5DYWxsYmFja0ZuKCkge1xuICAgIHRoaXMuX3NjaGVkdWxlckZucyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGVtaXQodmFsdWU/OiBUKSB7IHN1cGVyLmVtaXQodmFsdWUpOyB9XG5cbiAgc3Vic2NyaWJlKGdlbmVyYXRvck9yTmV4dD86IGFueSwgZXJyb3I/OiBhbnksIGNvbXBsZXRlPzogYW55KTogYW55IHtcbiAgICBsZXQgc2NoZWR1bGVyRm46ICh0OiBhbnkpID0+IGFueTtcblxuICAgIGlmIChnZW5lcmF0b3JPck5leHQgJiYgdHlwZW9mIGdlbmVyYXRvck9yTmV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHNjaGVkdWxlckZuID0gdGhpcy5faXNBc3luYyA/ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0Lm5leHQodmFsdWUpKTtcbiAgICAgIH0gOiAodmFsdWU6IGFueSkgPT4geyBnZW5lcmF0b3JPck5leHQubmV4dCh2YWx1ZSk7IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjaGVkdWxlckZuID0gdGhpcy5faXNBc3luYyA/ICh2YWx1ZTogYW55KSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0KHZhbHVlKSk7IH0gOlxuICAgICAgICAodmFsdWU6IGFueSkgPT4geyBnZW5lcmF0b3JPck5leHQodmFsdWUpOyB9O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3NjaGVkdWxlckZucykge1xuICAgICAgdGhpcy5fc2NoZWR1bGVyRm5zID0gbmV3IFNldDxhbnk+KCk7XG4gICAgfVxuICAgIHRoaXMuX3NjaGVkdWxlckZucy5hZGQoc2NoZWR1bGVyRm4pO1xuXG4gICAgcmV0dXJuIHN1cGVyLnN1YnNjcmliZShnZW5lcmF0b3JPck5leHQsIGVycm9yLCBjb21wbGV0ZSk7XG4gIH1cblxufVxuIl19