{"version":3,"file":"primeng-defer.mjs","sources":["../../src/defer/defer.ts","../../src/defer/primeng-defer.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, ContentChild, Directive, EmbeddedViewRef, EventEmitter, inject, NgModule, OnDestroy, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Nullable } from 'primeng/ts-helpers';\n\n/**\n * Defer postpones the loading the content that is initially not in the viewport until it becomes visible on scroll.\n * @deprecated use Angular defer block instead.\n * @group Components\n */\n@Directive({\n    selector: '[pDefer]',\n    standalone: true\n})\nexport class Defer extends BaseComponent implements AfterViewInit, OnDestroy {\n    /**\n     * Callback to invoke when deferred content is loaded.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onLoad: EventEmitter<Event> = new EventEmitter<Event>();\n\n    @ContentChild(TemplateRef) template: TemplateRef<any> | undefined;\n\n    documentScrollListener: Nullable<Function>;\n\n    view: Nullable<EmbeddedViewRef<any>>;\n\n    viewContainer: ViewContainerRef = inject(ViewContainerRef);\n\n    ngOnInit() {\n        super.ngOnInit();\n        console.log('Defer is deprecated as of v18, use Angular defer block instead.');\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.shouldLoad()) {\n                this.load();\n            }\n\n            if (!this.isLoaded()) {\n                this.documentScrollListener = this.renderer.listen(this.document.defaultView, 'scroll', () => {\n                    if (this.shouldLoad()) {\n                        this.load();\n                        this.documentScrollListener && this.documentScrollListener();\n                        this.documentScrollListener = null;\n                    }\n                });\n            }\n        }\n    }\n\n    shouldLoad(): boolean {\n        if (this.isLoaded()) {\n            return false;\n        } else {\n            let rect = this.el.nativeElement.getBoundingClientRect();\n            let docElement = this.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 as TemplateRef<any>);\n        this.onLoad.emit();\n        this.cd.detectChanges();\n    }\n\n    isLoaded() {\n        return this.view != null && isPlatformBrowser(this.platformId);\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n\n        if (this.documentScrollListener) {\n            this.documentScrollListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [Defer],\n    exports: [Defer]\n})\nexport class DeferModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}