UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

23 lines 4.28 kB
import { inject, Injectable } from '@angular/core'; import { IntersectionObserverService } from '@ng-web-apis/intersection-observer'; import { tuiWatch } from '@taiga-ui/cdk/observables'; import { filter, map, Observable, Subject, switchMap, take } from 'rxjs'; import * as i0 from "@angular/core"; class TuiLazyLoadingService extends Observable { constructor() { super((subscriber) => this.stream$.subscribe(subscriber)); this.src$ = new Subject(); this.intersections$ = inject(IntersectionObserverService); this.stream$ = this.src$.pipe(switchMap((src) => this.intersections$.pipe(filter((entry) => !!entry[0]?.isIntersecting), map(() => src), take(1))), tuiWatch()); } next(src) { this.src$.next(src); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLazyLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLazyLoadingService }); } } export { TuiLazyLoadingService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLazyLoadingService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9sYXp5LWxvYWRpbmcvbGF6eS1sb2FkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFdkUsTUFDYSxxQkFBc0IsU0FBUSxVQUFvQztJQWMzRTtRQUNJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQWQ3QyxTQUFJLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNyRCxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3JDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFDN0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDVixDQUNKLEVBQ0QsUUFBUSxFQUFFLENBQ2IsQ0FBQztJQUlGLENBQUM7SUFFTSxJQUFJLENBQUMsR0FBNkI7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQzsrR0FwQlEscUJBQXFCO21IQUFyQixxQkFBcUI7O1NBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1NhZmVSZXNvdXJjZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0ludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZX0gZnJvbSAnQG5nLXdlYi1hcGlzL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQge3R1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZX0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdWlMYXp5TG9hZGluZ1NlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IHN0cmluZz4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3JjJCA9IG5ldyBTdWJqZWN0PFNhZmVSZXNvdXJjZVVybCB8IHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGludGVyc2VjdGlvbnMkID0gaW5qZWN0KEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW0kID0gdGhpcy5zcmMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoc3JjKSA9PlxuICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25zJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZW50cnkpID0+ICEhZW50cnlbMF0/LmlzSW50ZXJzZWN0aW5nKSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gc3JjKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdHVpV2F0Y2goKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB0aGlzLnN0cmVhbSQuc3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dChzcmM6IFNhZmVSZXNvdXJjZVVybCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNyYyQubmV4dChzcmMpO1xuICAgIH1cbn1cbiJdfQ==