[59329aa] | 1 | import * as i0 from '@angular/core';
|
---|
| 2 | import { EventEmitter, TemplateRef, Directive, Output, ContentChild, NgModule } from '@angular/core';
|
---|
| 3 | import { CommonModule } from '@angular/common';
|
---|
| 4 |
|
---|
| 5 | class DeferredLoader {
|
---|
| 6 | constructor(el, renderer, viewContainer, cd) {
|
---|
| 7 | this.el = el;
|
---|
| 8 | this.renderer = renderer;
|
---|
| 9 | this.viewContainer = viewContainer;
|
---|
| 10 | this.cd = cd;
|
---|
| 11 | this.onLoad = new EventEmitter();
|
---|
| 12 | }
|
---|
| 13 | ngAfterViewInit() {
|
---|
| 14 | if (this.shouldLoad()) {
|
---|
| 15 | this.load();
|
---|
| 16 | }
|
---|
| 17 | if (!this.isLoaded()) {
|
---|
| 18 | this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {
|
---|
| 19 | if (this.shouldLoad()) {
|
---|
| 20 | this.load();
|
---|
| 21 | this.documentScrollListener();
|
---|
| 22 | this.documentScrollListener = null;
|
---|
| 23 | }
|
---|
| 24 | });
|
---|
| 25 | }
|
---|
| 26 | }
|
---|
| 27 | shouldLoad() {
|
---|
| 28 | if (this.isLoaded()) {
|
---|
| 29 | return false;
|
---|
| 30 | }
|
---|
| 31 | else {
|
---|
| 32 | let rect = this.el.nativeElement.getBoundingClientRect();
|
---|
| 33 | let docElement = document.documentElement;
|
---|
| 34 | let winHeight = docElement.clientHeight;
|
---|
| 35 | return (winHeight >= rect.top);
|
---|
| 36 | }
|
---|
| 37 | }
|
---|
| 38 | load() {
|
---|
| 39 | this.view = this.viewContainer.createEmbeddedView(this.template);
|
---|
| 40 | this.onLoad.emit();
|
---|
| 41 | this.cd.detectChanges();
|
---|
| 42 | }
|
---|
| 43 | isLoaded() {
|
---|
| 44 | return this.view != null;
|
---|
| 45 | }
|
---|
| 46 | ngOnDestroy() {
|
---|
| 47 | this.view = null;
|
---|
| 48 | if (this.documentScrollListener) {
|
---|
| 49 | this.documentScrollListener();
|
---|
| 50 | }
|
---|
| 51 | }
|
---|
| 52 | }
|
---|
| 53 | DeferredLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
---|
| 54 | DeferredLoader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DeferredLoader, selector: "[pDefer]", outputs: { onLoad: "onLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
---|
| 55 | i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, decorators: [{
|
---|
| 56 | type: Directive,
|
---|
| 57 | args: [{
|
---|
| 58 | selector: '[pDefer]',
|
---|
| 59 | host: {
|
---|
| 60 | 'class': 'p-element'
|
---|
| 61 | }
|
---|
| 62 | }]
|
---|
| 63 | }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onLoad: [{
|
---|
| 64 | type: Output
|
---|
| 65 | }], template: [{
|
---|
| 66 | type: ContentChild,
|
---|
| 67 | args: [TemplateRef]
|
---|
| 68 | }] } });
|
---|
| 69 | class DeferModule {
|
---|
| 70 | }
|
---|
| 71 | DeferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
---|
| 72 | DeferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, declarations: [DeferredLoader], imports: [CommonModule], exports: [DeferredLoader] });
|
---|
| 73 | DeferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, imports: [[CommonModule]] });
|
---|
| 74 | i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, decorators: [{
|
---|
| 75 | type: NgModule,
|
---|
| 76 | args: [{
|
---|
| 77 | imports: [CommonModule],
|
---|
| 78 | exports: [DeferredLoader],
|
---|
| 79 | declarations: [DeferredLoader]
|
---|
| 80 | }]
|
---|
| 81 | }] });
|
---|
| 82 |
|
---|
| 83 | /**
|
---|
| 84 | * Generated bundle index. Do not edit.
|
---|
| 85 | */
|
---|
| 86 |
|
---|
| 87 | export { DeferModule, DeferredLoader };
|
---|