{"version":3,"file":"fundamental-ngx-core-infinite-scroll.mjs","sources":["../../../../libs/core/infinite-scroll/infinite-scroll.directive.ts","../../../../libs/core/infinite-scroll/infinite-scroll.module.ts","../../../../libs/core/infinite-scroll/fundamental-ngx-core-infinite-scroll.ts"],"sourcesContent":["import { DestroyRef, Directive, ElementRef, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\n/**\n * Tool directive used to achieve the infinite scroll mechanism.\n */\n@Directive({\n    selector: '[fdInfiniteScroll]'\n})\nexport class InfiniteScrollDirective {\n    /** Scroll percentage at which the onScrollAction event is fired. */\n    readonly scrollPercent = input(75);\n\n    /** Scroll PX at which the onScrollAction event is fired. */\n    readonly scrollOffset = input<Nullable<number>>(null);\n\n    /** Event emitted when the scrollPercent threshold is met. */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    readonly onScrollAction = output<void>();\n\n    /** @hidden */\n    private readonly _element = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    constructor() {\n        this._listenOnScroll();\n    }\n\n    /** @hidden */\n    shouldTriggerAction(): boolean {\n        const element = this._element.nativeElement;\n        const offset: number = element.scrollTop + element.offsetHeight;\n        const scrollOffsetValue = this.scrollOffset();\n        if (scrollOffsetValue) {\n            return offset > element.scrollHeight - scrollOffsetValue;\n        } else {\n            return offset / element.scrollHeight > this.scrollPercent() / 100;\n        }\n    }\n\n    /** @hidden */\n    private _listenOnScroll(): void {\n        fromEvent(this._element.nativeElement, 'scroll')\n            .pipe(\n                debounceTime(50),\n                filter(() => this.shouldTriggerAction()),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => this.onScrollAction.emit());\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { InfiniteScrollDirective } from './infinite-scroll.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [InfiniteScrollDirective],\n    exports: [InfiniteScrollDirective]\n})\nexport class InfiniteScrollModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;MAIU,uBAAuB,CAAA;AAiBhC,IAAA,WAAA,GAAA;;AAfS,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,EAAE,yDAAC;;AAGzB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,IAAI,wDAAC;;;QAI5C,IAAA,CAAA,cAAc,GAAG,MAAM,EAAQ;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;;AAG7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAG7C,IAAI,CAAC,eAAe,EAAE;IAC1B;;IAGA,mBAAmB,GAAA;AACf,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;QAC3C,MAAM,MAAM,GAAW,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY;AAC/D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE;QAC7C,IAAI,iBAAiB,EAAE;AACnB,YAAA,OAAO,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,iBAAiB;QAC5D;aAAO;AACH,YAAA,OAAO,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,GAAG;QACrE;IACJ;;IAGQ,eAAe,GAAA;QACnB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ;aAC1C,IAAI,CACD,YAAY,CAAC,EAAE,CAAC,EAChB,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,EACxC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACpD;8GA1CS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACPD;;;AAGG;MAKU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CAHnB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAExB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB;AACpC,iBAAA;;;ACXD;;AAEG;;;;"}