UNPKG

@taiga-ui/kit

Version:
45 lines 5.24 kB
import { __decorate, __param } from "tslib"; import { Directive, ElementRef, HostBinding, Inject, Input } from '@angular/core'; import { IntersectionObserverService } from '@ng-web-apis/intersection-observer'; import { TuiDestroyService } from '@taiga-ui/cdk'; import { TuiLazyLoadingService } from './lazy-loading.service'; let TuiLazyLoadingDirective = class TuiLazyLoadingDirective { constructor(src$, elementRef) { this.src$ = src$; this.elementRef = elementRef; this.src = null; this.supported = 'loading' in this.elementRef.nativeElement; if (!this.supported) { this.src$.subscribe(src => { this.src = src; }); } } set srcSetter(src) { this.src = this.supported ? src : null; this.src$.next(src); } }; TuiLazyLoadingDirective.ctorParameters = () => [ { type: TuiLazyLoadingService, decorators: [{ type: Inject, args: [TuiLazyLoadingService,] }] }, { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] } ]; __decorate([ Input('src') ], TuiLazyLoadingDirective.prototype, "srcSetter", null); __decorate([ HostBinding('attr.src') ], TuiLazyLoadingDirective.prototype, "src", void 0); TuiLazyLoadingDirective = __decorate([ Directive({ selector: 'img[loading="lazy"]', providers: [TuiLazyLoadingService, IntersectionObserverService, TuiDestroyService], host: { '[style.animation]': '"tuiSkeletonBackgroundVibe ease-in-out 1s infinite alternate"', }, }), __param(0, Inject(TuiLazyLoadingService)), __param(1, Inject(ElementRef)) ], TuiLazyLoadingDirective); export { TuiLazyLoadingDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcy9sYXp5LWxvYWRpbmcvIiwic291cmNlcyI6WyJsYXp5LWxvYWRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFVN0QsSUFBYSx1QkFBdUIsR0FBcEMsTUFBYSx1QkFBdUI7SUFZaEMsWUFFcUIsSUFBMkIsRUFFM0IsVUFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBdUI7UUFFM0IsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFSN0QsUUFBRyxHQUFrQixJQUFJLENBQUM7UUFFVCxjQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBUXBFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQXJCRCxJQUFJLFNBQVMsQ0FBQyxHQUFXO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQW1CSixDQUFBOztZQVY4QixxQkFBcUIsdUJBRDNDLE1BQU0sU0FBQyxxQkFBcUI7WUFHQSxVQUFVLHVCQUR0QyxNQUFNLFNBQUMsVUFBVTs7QUFidEI7SUFEQyxLQUFLLENBQUMsS0FBSyxDQUFDO3dEQUlaO0FBR0Q7SUFEQyxXQUFXLENBQUMsVUFBVSxDQUFDO29EQUNFO0FBUmpCLHVCQUF1QjtJQVJuQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLGlCQUFpQixDQUFDO1FBQ2xGLElBQUksRUFBRTtZQUNGLG1CQUFtQixFQUNmLCtEQUErRDtTQUN0RTtLQUNKLENBQUM7SUFjTyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBRTdCLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0dBZmQsdUJBQXVCLENBd0JuQztTQXhCWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2V9IGZyb20gJ0BuZy13ZWItYXBpcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHtUdWlEZXN0cm95U2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aUxhenlMb2FkaW5nU2VydmljZX0gZnJvbSAnLi9sYXp5LWxvYWRpbmcuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW1nW2xvYWRpbmc9XCJsYXp5XCJdJyxcbiAgICBwcm92aWRlcnM6IFtUdWlMYXp5TG9hZGluZ1NlcnZpY2UsIEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSwgVHVpRGVzdHJveVNlcnZpY2VdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS5hbmltYXRpb25dJzpcbiAgICAgICAgICAgICdcInR1aVNrZWxldG9uQmFja2dyb3VuZFZpYmUgZWFzZS1pbi1vdXQgMXMgaW5maW5pdGUgYWx0ZXJuYXRlXCInLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUxhenlMb2FkaW5nRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoJ3NyYycpXG4gICAgc2V0IHNyY1NldHRlcihzcmM6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNyYyA9IHRoaXMuc3VwcG9ydGVkID8gc3JjIDogbnVsbDtcbiAgICAgICAgdGhpcy5zcmMkLm5leHQoc3JjKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuc3JjJylcbiAgICBzcmM6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdXBwb3J0ZWQgPSAnbG9hZGluZycgaW4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUdWlMYXp5TG9hZGluZ1NlcnZpY2UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3JjJDogVHVpTGF6eUxvYWRpbmdTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PixcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLnN1cHBvcnRlZCkge1xuICAgICAgICAgICAgdGhpcy5zcmMkLnN1YnNjcmliZShzcmMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gc3JjO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=