lzy-load
Version:
LzyLoad is an Angular Lib for loading content on demand
36 lines • 3.9 kB
JavaScript
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
export const LL_PRO_NAME = 'lzyLoadItemPos';
export class LzyLoadItemDirective {
constructor(hostElement, renderer) {
this.hostElement = hostElement;
this.renderer = renderer;
// Field that represent the current state of the observed element
this.isVisible = false;
// Field to know if the content should be loaded
this.loadContent = false;
}
set pos(value) {
if (value !== null && value !== undefined) {
this._pos = value;
// Marking the html element with the position that it is on the array so is easier to access it in the elements array
this.renderer.setProperty(this.hostElement.nativeElement, LL_PRO_NAME, this._pos);
}
}
get pos() {
return this._pos;
}
}
LzyLoadItemDirective.decorators = [
{ type: Directive, args: [{
selector: '[lzyLoadItem]',
exportAs: 'lzyLoadItem'
},] }
];
LzyLoadItemDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
LzyLoadItemDirective.propDecorators = {
pos: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHp5LWxvYWQtaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9senktbG9hZC9zcmMvbGliL2RpcmVjdGl2ZXMvbHp5LWxvYWQtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7QUFNNUMsTUFBTSxPQUFPLG9CQUFvQjtJQXFCL0IsWUFDUyxXQUF1QixFQUN0QixRQUFtQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBckI3QixpRUFBaUU7UUFDakUsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnREFBZ0Q7UUFDaEQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFvQnBCLENBQUM7SUFoQkQsSUFBYSxHQUFHLENBQUMsS0FBYTtRQUM1QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixxSEFBcUg7WUFDckgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7O1lBdkJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFLGFBQWE7YUFDeEI7OztZQVBtQixVQUFVO1lBQVMsU0FBUzs7O2tCQWlCN0MsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExMX1BST19OQU1FID0gJ2x6eUxvYWRJdGVtUG9zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2x6eUxvYWRJdGVtXScsXHJcbiAgZXhwb3J0QXM6ICdsenlMb2FkSXRlbSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEx6eUxvYWRJdGVtRGlyZWN0aXZlIHtcclxuXHJcbiAgLy8gRmllbGQgdGhhdCByZXByZXNlbnQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIG9ic2VydmVkIGVsZW1lbnRcclxuICBpc1Zpc2libGUgPSBmYWxzZTtcclxuICAvLyBGaWVsZCB0byBrbm93IGlmIHRoZSBjb250ZW50IHNob3VsZCBiZSBsb2FkZWRcclxuICBsb2FkQ29udGVudCA9IGZhbHNlO1xyXG4gIC8vIGl0ZW0gcG9zaXRpb24gaW4gdGhlIHJlc3VsdHNcclxuICBwcml2YXRlIF9wb3M6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgc2V0IHBvcyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9wb3MgPSB2YWx1ZTtcclxuICAgICAgLy8gTWFya2luZyB0aGUgaHRtbCBlbGVtZW50IHdpdGggdGhlIHBvc2l0aW9uIHRoYXQgaXQgaXMgb24gdGhlIGFycmF5IHNvIGlzIGVhc2llciB0byBhY2Nlc3MgaXQgaW4gdGhlIGVsZW1lbnRzIGFycmF5XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBMTF9QUk9fTkFNRSwgdGhpcy5fcG9zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wb3M7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBob3N0RWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==