{"version":3,"file":"primeng-defer.mjs","sources":["../../src/app/components/defer/defer.ts","../../src/app/components/defer/primeng-defer.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,AfterViewInit,OnDestroy,TemplateRef,EmbeddedViewRef,\n        ViewContainerRef,Renderer2,EventEmitter,Output,ContentChild, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Directive({\n    selector: '[pDefer]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DeferredLoader implements AfterViewInit,OnDestroy {\n\n    @Output() onLoad: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n    documentScrollListener: Function;\n\n    view: EmbeddedViewRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public viewContainer: ViewContainerRef, private cd: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        if (this.shouldLoad()) {\n            this.load();\n        }\n\n        if (!this.isLoaded()) {\n            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {\n                if (this.shouldLoad()) {\n                    this.load();\n                    this.documentScrollListener();\n                    this.documentScrollListener = null;\n                }\n            });\n        }\n    }\n\n    shouldLoad(): boolean {\n        if (this.isLoaded()) {\n            return false;\n        }\n        else {\n            let rect = this.el.nativeElement.getBoundingClientRect();\n            let docElement = document.documentElement;\n            let winHeight = docElement.clientHeight;\n\n            return (winHeight >= rect.top);\n        }\n    }\n\n    load(): void {\n        this.view = this.viewContainer.createEmbeddedView(this.template);\n        this.onLoad.emit();\n        this.cd.detectChanges();\n    }\n\n    isLoaded() {\n        return this.view != null;\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n\n        if (this.documentScrollListener) {\n            this.documentScrollListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [DeferredLoader],\n    declarations: [DeferredLoader]\n})\nexport class DeferModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAUa,cAAc;IAUvB,YAAmB,EAAc,EAAS,QAAmB,EAAS,aAA+B,EAAU,EAAqB;QAAjH,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,kBAAa,GAAb,aAAa,CAAkB;QAAU,OAAE,GAAF,EAAE,CAAmB;QAR1H,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;KAQ+E;IAExI,eAAe;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBACnE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACnB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACtC;aACJ,CAAC,CAAC;SACN;KACJ;IAED,UAAU;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC;SAChB;aACI;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACzD,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;YAExC,QAAQ,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;SAClC;KACJ;IAED,IAAI;QACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KAC5B;IAED,WAAW;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;KACJ;;2GAzDQ,cAAc;+FAAd,cAAc,4JAIT,WAAW;2FAJhB,cAAc;kBAN1B,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;wLAGa,MAAM;sBAAf,MAAM;gBAEoB,QAAQ;sBAAlC,YAAY;uBAAC,WAAW;;MA6DhB,WAAW;;wGAAX,WAAW;yGAAX,WAAW,iBAjEX,cAAc,aA6Db,YAAY,aA7Db,cAAc;yGAiEd,WAAW,YAJX,CAAC,YAAY,CAAC;2FAId,WAAW;kBALvB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;iBACjC;;;AC1ED;;;;;;"}