ngx-rxjs-zone-scheduler
Version:
https://github.com/ftischler/ngx-rxjs-zone-scheduler/blob/main/libs/ngx-rxjs-zone-scheduler/README.md
84 lines (78 loc) • 3.44 kB
JavaScript
import * as i0 from '@angular/core';
import { NgZone, Injectable, NgModule, makeEnvironmentProviders } from '@angular/core';
import { asyncScheduler } from 'rxjs';
import { observeOn, subscribeOn } from 'rxjs/operators';
class ZoneScheduler {
constructor(ngZone, scheduler) {
this.ngZone = ngZone;
this.scheduler = scheduler;
}
now() {
return this.scheduler.now();
}
}
class LeaveZoneScheduler extends ZoneScheduler {
schedule(...args) {
return this.ngZone.runOutsideAngular(() => {
return this.scheduler.schedule(...args);
});
}
}
class EnterZoneScheduler extends ZoneScheduler {
schedule(...args) {
return NgZone.isInAngularZone()
? this.scheduler.schedule(...args)
: this.ngZone.run(() => this.scheduler.schedule(...args));
}
}
function enterNgZone(ngZone, scheduler = asyncScheduler) {
return new EnterZoneScheduler(ngZone, scheduler);
}
function leaveNgZone(ngZone, scheduler = asyncScheduler) {
return new LeaveZoneScheduler(ngZone, scheduler);
}
class RxNgZoneScheduler {
constructor(ngZone) {
this.ngZone = ngZone;
}
observeOnNgZone(scheduler) {
return observeOn(this.enterNgZone(scheduler));
}
observeOutOfNgZone(scheduler) {
return observeOn(this.leaveNgZone(scheduler));
}
subscribeOnNgZone(scheduler) {
return subscribeOn(this.enterNgZone(scheduler));
}
subscribeOutOfNgZone(scheduler) {
return subscribeOn(this.leaveNgZone(scheduler));
}
enterNgZone(scheduler = asyncScheduler) {
return enterNgZone(this.ngZone, scheduler);
}
leaveNgZone(scheduler = asyncScheduler) {
return leaveNgZone(this.ngZone, scheduler);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneScheduler }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneScheduler, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i0.NgZone }] });
class RxNgZoneSchedulerModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneSchedulerModule }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneSchedulerModule, providers: [RxNgZoneScheduler] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: RxNgZoneSchedulerModule, decorators: [{
type: NgModule,
args: [{
providers: [RxNgZoneScheduler],
}]
}] });
const provideRxNgZoneScheduler = () => makeEnvironmentProviders([RxNgZoneScheduler]);
/**
* Generated bundle index. Do not edit.
*/
export { RxNgZoneScheduler, RxNgZoneSchedulerModule, enterNgZone, leaveNgZone, provideRxNgZoneScheduler };
//# sourceMappingURL=ngx-rxjs-zone-scheduler.mjs.map