@taiga-ui/kit
Version:
Taiga UI Angular main components kit
30 lines • 5.3 kB
JavaScript
import { __decorate, __param } from "tslib";
import { ChangeDetectorRef, Inject, Injectable } from '@angular/core';
import { IntersectionObserverService } from '@ng-web-apis/intersection-observer';
import { TuiDestroyService, watch } from '@taiga-ui/cdk';
import { Observable, of, Subject } from 'rxjs';
import { catchError, filter, mapTo, switchMap, take, takeUntil } from 'rxjs/operators';
let TuiLazyLoadingService = class TuiLazyLoadingService extends Observable {
constructor(changeDetectorRef, destroy$, intersections$) {
super(subscriber => this.src$
.pipe(switchMap(src => intersections$.pipe(filter(([{ isIntersecting }]) => isIntersecting), mapTo(src), catchError(() => of(src)), watch(changeDetectorRef), take(1))), takeUntil(destroy$))
.subscribe(subscriber));
this.src$ = new Subject();
}
next(src) {
this.src$.next(src);
}
};
TuiLazyLoadingService.ctorParameters = () => [
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
{ type: Observable, decorators: [{ type: Inject, args: [IntersectionObserverService,] }] }
];
TuiLazyLoadingService = __decorate([
Injectable(),
__param(0, Inject(ChangeDetectorRef)),
__param(1, Inject(TuiDestroyService)),
__param(2, Inject(IntersectionObserverService))
], TuiLazyLoadingService);
export { TuiLazyLoadingService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2RpcmVjdGl2ZXMvbGF6eS1sb2FkaW5nLyIsInNvdXJjZXMiOlsibGF6eS1sb2FkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3JGLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsVUFBa0I7SUFHekQsWUFDK0IsaUJBQW9DLEVBQ3BDLFFBQTBCLEVBRXJELGNBQXVEO1FBRXZELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNmLElBQUksQ0FBQyxJQUFJO2FBQ0osSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNaLGNBQWMsQ0FBQyxJQUFJLENBQ2YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLGNBQWMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUM5QyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ1YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUN6QixLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQ0osRUFDRCxTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3RCO2FBQ0EsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUM3QixDQUFDO1FBdkJFLFNBQUksR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBd0JyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVc7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTs7WUExQnFELGlCQUFpQix1QkFBOUQsTUFBTSxTQUFDLGlCQUFpQjtZQUNZLFVBQVUsdUJBQTlDLE1BQU0sU0FBQyxpQkFBaUI7WUFFVCxVQUFVLHVCQUR6QixNQUFNLFNBQUMsMkJBQTJCOztBQU45QixxQkFBcUI7SUFEakMsVUFBVSxFQUFFO0lBS0osV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3pCLFdBQUEsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUE7R0FOL0IscUJBQXFCLENBOEJqQztTQTlCWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2V9IGZyb20gJ0BuZy13ZWItYXBpcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHtUdWlEZXN0cm95U2VydmljZSwgd2F0Y2h9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwVG8sIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdWlMYXp5TG9hZGluZ1NlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHByaXZhdGUgc3JjJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHZvaWQ+LFxuICAgICAgICBASW5qZWN0KEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSlcbiAgICAgICAgaW50ZXJzZWN0aW9ucyQ6IE9ic2VydmFibGU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdPixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoc3Vic2NyaWJlciA9PlxuICAgICAgICAgICAgdGhpcy5zcmMkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcChzcmMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChbe2lzSW50ZXJzZWN0aW5nfV0pID0+IGlzSW50ZXJzZWN0aW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBUbyhzcmMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2Yoc3JjKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2goY2hhbmdlRGV0ZWN0b3JSZWYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHN1YnNjcmliZXIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5leHQoc3JjOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zcmMkLm5leHQoc3JjKTtcbiAgICB9XG59XG4iXX0=