{"version":3,"file":"primeng-scroller.mjs","sources":["../../src/scroller/style/scrollerstyle.ts","../../src/scroller/scroller.ts","../../src/scroller/primeng-scroller.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-virtualscroller {\n    position: relative;\n    overflow: auto;\n    contain: strict;\n    transform: translateZ(0);\n    will-change: scroll-position;\n    outline: 0 none;\n}\n\n.p-virtualscroller-content {\n    position: absolute;\n    top: 0;\n    left: 0;\n    min-height: 100%;\n    min-width: 100%;\n    will-change: transform;\n}\n\n.p-virtualscroller-spacer {\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 1px;\n    width: 1px;\n    transform-origin: 0 0;\n    pointer-events: none;\n}\n\n.p-virtualscroller-loader {\n    position: sticky;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: ${dt('virtualscroller.loader.mask.background')};\n    color: ${dt('virtualscroller.loader.mask.color')};\n}\n\n.p-virtualscroller-loader-mask {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.p-virtualscroller-loading-icon {\n    font-size: ${dt('virtualscroller.loader.icon.size')};\n    width: ${dt('virtualscroller.loader.icon.size')};\n    height: ${dt('virtualscroller.loader.icon.size')};\n}\n\n.p-virtualscroller-horizontal > .p-virtualscroller-content {\n    display: flex;\n}\n\n.p-virtualscroller-inline .p-virtualscroller-content {\n    position: static;\n}\n`;\n\n@Injectable()\nexport class ScrollerStyle extends BaseStyle {\n    name = 'virtualscroller';\n\n    theme = theme;\n}\n\n/**\n *\n * VirtualScroller is a performant approach to handle huge data efficiently.\n *\n * [Live Demo](https://www.primeng.org/scroller/)\n *\n * @module scrollerstyle\n *\n */\nexport enum ScrollerClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-virtualscroller',\n    /**\n     * Class name of the content element\n     */\n    content = 'p-virtualscroller-content',\n    /**\n     * Class name of the spacer element\n     */\n    spacer = 'p-virtualscroller-spacer',\n    /**\n     * Class name of the loader element\n     */\n    loader = 'p-virtualscroller-loader',\n    /**\n     * Class name of the loading icon element\n     */\n    loadingIcon = 'p-virtualscroller-loading-icon'\n}\n\nexport interface ScrollerStyle extends BaseStyle {}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterContentInit,\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    NgModule,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { findSingle, getHeight, getWidth, isTouchDevice, isVisible } from '@primeuix/utils';\nimport { PrimeTemplate, ScrollerOptions, SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { SpinnerIcon } from 'primeng/icons';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { ScrollerLazyLoadEvent, ScrollerScrollEvent, ScrollerScrollIndexChangeEvent, ScrollerToType } from './scroller.interface';\nimport { ScrollerStyle } from './style/scrollerstyle';\n\n/**\n * Scroller is a performance-approach to handle huge data efficiently.\n * @group Components\n */\n@Component({\n    selector: 'p-scroller, p-virtualscroller, p-virtual-scroller, p-virtualScroller',\n    imports: [CommonModule, SpinnerIcon, SharedModule],\n    standalone: true,\n    template: `\n        <ng-container *ngIf=\"!_disabled; else disabledContainer\">\n            <div\n                #element\n                [attr.id]=\"_id\"\n                [attr.tabindex]=\"tabindex\"\n                [ngStyle]=\"_style\"\n                [class]=\"_styleClass\"\n                [ngClass]=\"{\n                    'p-virtualscroller': true,\n                    'p-virtualscroller-inline': inline,\n                    'p-virtualscroller-both p-both-scroll': both,\n                    'p-virtualscroller-horizontal p-horizontal-scroll': horizontal\n                }\"\n                (scroll)=\"onContainerScroll($event)\"\n                [attr.data-pc-name]=\"'scroller'\"\n                [attr.data-pc-section]=\"'root'\"\n            >\n                <ng-container *ngIf=\"contentTemplate || _contentTemplate; else buildInContent\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate || _contentTemplate; context: { $implicit: loadedItems, options: getContentOptions() }\"></ng-container>\n                </ng-container>\n                <ng-template #buildInContent>\n                    <div #content class=\"p-virtualscroller-content\" [ngClass]=\"{ 'p-virtualscroller-loading ': d_loading }\" [ngStyle]=\"contentStyle\" [attr.data-pc-section]=\"'content'\">\n                        <ng-container *ngFor=\"let item of loadedItems; let index = index; trackBy: _trackBy\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate || _itemTemplate; context: { $implicit: item, options: getOptions(index) }\"></ng-container>\n                        </ng-container>\n                    </div>\n                </ng-template>\n                <div *ngIf=\"_showSpacer\" class=\"p-virtualscroller-spacer\" [ngStyle]=\"spacerStyle\" [attr.data-pc-section]=\"'spacer'\"></div>\n                <div *ngIf=\"!loaderDisabled && _showLoader && d_loading\" class=\"p-virtualscroller-loader\" [ngClass]=\"{ 'p-virtualscroller-loader-mask': !loaderTemplate }\" [attr.data-pc-section]=\"'loader'\">\n                    <ng-container *ngIf=\"loaderTemplate || _loaderTemplate; else buildInLoader\">\n                        <ng-container *ngFor=\"let item of loaderArr; let index = index\">\n                            <ng-container\n                                *ngTemplateOutlet=\"\n                                    loaderTemplate || _loaderTemplate;\n                                    context: {\n                                        options: getLoaderOptions(index, both && { numCols: numItemsInViewport.cols })\n                                    }\n                                \"\n                            ></ng-container>\n                        </ng-container>\n                    </ng-container>\n                    <ng-template #buildInLoader>\n                        <ng-container *ngIf=\"loaderIconTemplate || _loaderIconTemplate; else buildInLoaderIcon\">\n                            <ng-container *ngTemplateOutlet=\"loaderIconTemplate || _loaderIconTemplate; context: { options: { styleClass: 'p-virtualscroller-loading-icon' } }\"></ng-container>\n                        </ng-container>\n                        <ng-template #buildInLoaderIcon>\n                            <SpinnerIcon [styleClass]=\"'p-virtualscroller-loading-icon pi-spin'\" [attr.data-pc-section]=\"'loadingIcon'\" />\n                        </ng-template>\n                    </ng-template>\n                </div>\n            </div>\n        </ng-container>\n        <ng-template #disabledContainer>\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate || _contentTemplate\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate || _contentTemplate; context: { $implicit: items, options: { rows: _items, columns: loadedColumns } }\"></ng-container>\n            </ng-container>\n        </ng-template>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    providers: [ScrollerStyle]\n})\nexport class Scroller extends BaseComponent implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n    /**\n     * Unique identifier of the element.\n     * @group Props\n     */\n    @Input() get id(): string | undefined {\n        return this._id;\n    }\n    set id(val: string | undefined) {\n        this._id = val;\n    }\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    @Input() get style(): any {\n        return this._style;\n    }\n    set style(val: any) {\n        this._style = val;\n    }\n    /**\n     * Style class of the element.\n     * @group Props\n     */\n    @Input() get styleClass(): string | undefined {\n        return this._styleClass;\n    }\n    set styleClass(val: string | undefined) {\n        this._styleClass = val;\n    }\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input() get tabindex() {\n        return this._tabindex;\n    }\n    set tabindex(val: number) {\n        this._tabindex = val;\n    }\n    /**\n     * An array of objects to display.\n     * @group Props\n     */\n    @Input() get items(): any[] | undefined | null {\n        return this._items;\n    }\n    set items(val: any[] | undefined | null) {\n        this._items = val;\n    }\n    /**\n     * The height/width of item according to orientation.\n     * @group Props\n     */\n    @Input() get itemSize(): number[] | number {\n        return this._itemSize;\n    }\n    set itemSize(val: number[] | number) {\n        this._itemSize = val;\n    }\n    /**\n     * Height of the scroll viewport.\n     * @group Props\n     */\n    @Input() get scrollHeight(): string | undefined {\n        return this._scrollHeight;\n    }\n    set scrollHeight(val: string | undefined) {\n        this._scrollHeight = val;\n    }\n    /**\n     * Width of the scroll viewport.\n     * @group Props\n     */\n    @Input() get scrollWidth(): string | undefined {\n        return this._scrollWidth;\n    }\n    set scrollWidth(val: string | undefined) {\n        this._scrollWidth = val;\n    }\n    /**\n     * The orientation of scrollbar.\n     * @group Props\n     */\n    @Input() get orientation(): 'vertical' | 'horizontal' | 'both' {\n        return this._orientation;\n    }\n    set orientation(val: 'vertical' | 'horizontal' | 'both') {\n        this._orientation = val;\n    }\n    /**\n     * Used to specify how many items to load in each load method in lazy mode.\n     * @group Props\n     */\n    @Input() get step(): number {\n        return this._step;\n    }\n    set step(val: number) {\n        this._step = val;\n    }\n    /**\n     * Delay in scroll before new data is loaded.\n     * @group Props\n     */\n    @Input() get delay() {\n        return this._delay;\n    }\n    set delay(val: number) {\n        this._delay = val;\n    }\n    /**\n     * Delay after window's resize finishes.\n     * @group Props\n     */\n    @Input() get resizeDelay() {\n        return this._resizeDelay;\n    }\n    set resizeDelay(val: number) {\n        this._resizeDelay = val;\n    }\n    /**\n     * Used to append each loaded item to top without removing any items from the DOM. Using very large data may cause the browser to crash.\n     * @group Props\n     */\n    @Input() get appendOnly(): boolean {\n        return this._appendOnly;\n    }\n    set appendOnly(val: boolean) {\n        this._appendOnly = val;\n    }\n    /**\n     * Specifies whether the scroller should be displayed inline or not.\n     * @group Props\n     */\n    @Input() get inline() {\n        return this._inline;\n    }\n    set inline(val: boolean) {\n        this._inline = val;\n    }\n    /**\n     * Defines if data is loaded and interacted with in lazy manner.\n     * @group Props\n     */\n    @Input() get lazy() {\n        return this._lazy;\n    }\n    set lazy(val: boolean) {\n        this._lazy = val;\n    }\n    /**\n     * If disabled, the scroller feature is eliminated and the content is displayed directly.\n     * @group Props\n     */\n    @Input() get disabled() {\n        return this._disabled;\n    }\n    set disabled(val: boolean) {\n        this._disabled = val;\n    }\n    /**\n     * Used to implement a custom loader instead of using the loader feature in the scroller.\n     * @group Props\n     */\n    @Input() get loaderDisabled() {\n        return this._loaderDisabled;\n    }\n    set loaderDisabled(val: boolean) {\n        this._loaderDisabled = val;\n    }\n    /**\n     * Columns to display.\n     * @group Props\n     */\n    @Input() get columns(): any[] | undefined | null {\n        return this._columns;\n    }\n    set columns(val: any[] | undefined | null) {\n        this._columns = val;\n    }\n    /**\n     * Used to implement a custom spacer instead of using the spacer feature in the scroller.\n     * @group Props\n     */\n    @Input() get showSpacer() {\n        return this._showSpacer;\n    }\n    set showSpacer(val: boolean) {\n        this._showSpacer = val;\n    }\n    /**\n     * Defines whether to show loader.\n     * @group Props\n     */\n    @Input() get showLoader() {\n        return this._showLoader;\n    }\n    set showLoader(val: boolean) {\n        this._showLoader = val;\n    }\n    /**\n     * Determines how many additional elements to add to the DOM outside of the view. According to the scrolls made up and down, extra items are added in a certain algorithm in the form of multiples of this number. Default value is half the number of items shown in the view.\n     * @group Props\n     */\n    @Input() get numToleratedItems() {\n        return this._numToleratedItems;\n    }\n    set numToleratedItems(val: number) {\n        this._numToleratedItems = val;\n    }\n    /**\n     * Defines whether the data is loaded.\n     * @group Props\n     */\n    @Input() get loading(): boolean | undefined {\n        return this._loading;\n    }\n    set loading(val: boolean | undefined) {\n        this._loading = val;\n    }\n    /**\n     * Defines whether to dynamically change the height or width of scrollable container.\n     * @group Props\n     */\n    @Input() get autoSize(): boolean {\n        return this._autoSize;\n    }\n    set autoSize(val: boolean) {\n        this._autoSize = val;\n    }\n    /**\n     * Function to optimize the dom operations by delegating to ngForTrackBy, default algoritm checks for object identity.\n     * @group Props\n     */\n    @Input() get trackBy(): Function {\n        return this._trackBy;\n    }\n    set trackBy(val: Function) {\n        this._trackBy = val;\n    }\n    /**\n     * Defines whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n     * @group Props\n     */\n    @Input() get options(): ScrollerOptions | undefined {\n        return this._options;\n    }\n    set options(val: ScrollerOptions | undefined) {\n        this._options = val;\n\n        if (val && typeof val === 'object') {\n            //@ts-ignore\n            Object.entries(val).forEach(([k, v]) => this[`_${k}`] !== v && (this[`_${k}`] = v));\n        }\n    }\n    /**\n     * Callback to invoke in lazy mode to load new data.\n     * @param {ScrollerLazyLoadEvent} event - Custom lazy load event.\n     * @group Emits\n     */\n    @Output() onLazyLoad: EventEmitter<ScrollerLazyLoadEvent> = new EventEmitter<ScrollerLazyLoadEvent>();\n    /**\n     * Callback to invoke when scroll position changes.\n     * @param {ScrollerScrollEvent} event - Custom scroll event.\n     * @group Emits\n     */\n    @Output() onScroll: EventEmitter<ScrollerScrollEvent> = new EventEmitter<ScrollerScrollEvent>();\n    /**\n     * Callback to invoke when scroll position and item's range in view changes.\n     * @param {ScrollerScrollEvent} event - Custom scroll index change event.\n     * @group Emits\n     */\n    @Output() onScrollIndexChange: EventEmitter<ScrollerScrollIndexChangeEvent> = new EventEmitter<ScrollerScrollIndexChangeEvent>();\n\n    @ViewChild('element') elementViewChild: Nullable<ElementRef>;\n\n    @ViewChild('content') contentViewChild: Nullable<ElementRef>;\n\n    _id: string | undefined;\n\n    _style: { [klass: string]: any } | null | undefined;\n\n    _styleClass: string | undefined;\n\n    _tabindex: number = 0;\n\n    _items: any[] | undefined | null;\n\n    _itemSize: number | number[] = 0;\n\n    _scrollHeight: string | undefined;\n\n    _scrollWidth: string | undefined;\n\n    _orientation: 'vertical' | 'horizontal' | 'both' = 'vertical';\n\n    _step: number = 0;\n\n    _delay: number = 0;\n\n    _resizeDelay: number = 10;\n\n    _appendOnly: boolean = false;\n\n    _inline: boolean = false;\n\n    _lazy: boolean = false;\n\n    _disabled: boolean = false;\n\n    _loaderDisabled: boolean = false;\n\n    _columns: any[] | undefined | null;\n\n    _showSpacer: boolean = true;\n\n    _showLoader: boolean = false;\n\n    _numToleratedItems: any;\n\n    _loading: boolean | undefined;\n\n    _autoSize: boolean = false;\n\n    _trackBy: any;\n\n    _options: ScrollerOptions | undefined;\n\n    d_loading: boolean = false;\n\n    d_numToleratedItems: any;\n\n    contentEl: any;\n    /**\n     * Content template of the component.\n     * @group Templates\n     */\n    @ContentChild('content', { descendants: false }) contentTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Item template of the component.\n     * @group Templates\n     */\n    @ContentChild('item', { descendants: false }) itemTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Loader template of the component.\n     * @group Templates\n     */\n    @ContentChild('loader', { descendants: false }) loaderTemplate: Nullable<TemplateRef<any>>;\n\n    /**\n     * Loader icon template of the component.\n     * @group Templates\n     */\n    @ContentChild('loadericon', { descendants: false }) loaderIconTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<PrimeTemplate>>;\n\n    _contentTemplate: TemplateRef<any> | undefined;\n\n    _itemTemplate: TemplateRef<any> | undefined;\n\n    _loaderTemplate: TemplateRef<any> | undefined;\n\n    _loaderIconTemplate: TemplateRef<any> | undefined;\n\n    first: any = 0;\n\n    last: any = 0;\n\n    page: number = 0;\n\n    isRangeChanged: boolean = false;\n\n    numItemsInViewport: any = 0;\n\n    lastScrollPos: any = 0;\n\n    lazyLoadState: any = {};\n\n    loaderArr: any[] = [];\n\n    spacerStyle: { [klass: string]: any } | null | undefined = {};\n\n    contentStyle: { [klass: string]: any } | null | undefined = {};\n\n    scrollTimeout: any;\n\n    resizeTimeout: any;\n\n    initialized: boolean = false;\n\n    windowResizeListener: VoidListener;\n\n    defaultWidth: number | undefined;\n\n    defaultHeight: number | undefined;\n\n    defaultContentWidth: number | undefined;\n\n    defaultContentHeight: number | undefined;\n\n    get vertical() {\n        return this._orientation === 'vertical';\n    }\n\n    get horizontal() {\n        return this._orientation === 'horizontal';\n    }\n\n    get both() {\n        return this._orientation === 'both';\n    }\n\n    get loadedItems() {\n        if (this._items && !this.d_loading) {\n            if (this.both) return this._items.slice(this._appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this._columns ? item : item.slice(this._appendOnly ? 0 : this.first.cols, this.last.cols)));\n            else if (this.horizontal && this._columns) return this._items;\n            else return this._items.slice(this._appendOnly ? 0 : this.first, this.last);\n        }\n\n        return [];\n    }\n\n    get loadedRows() {\n        return this.d_loading ? (this._loaderDisabled ? this.loaderArr : []) : this.loadedItems;\n    }\n\n    get loadedColumns() {\n        if (this._columns && (this.both || this.horizontal)) {\n            return this.d_loading && this._loaderDisabled ? (this.both ? this.loaderArr[0] : this.loaderArr) : this._columns.slice(this.both ? this.first.cols : this.first, this.both ? this.last.cols : this.last);\n        }\n\n        return this._columns;\n    }\n\n    _componentStyle = inject(ScrollerStyle);\n\n    constructor(private zone: NgZone) {\n        super();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.setInitialState();\n    }\n\n    ngOnChanges(simpleChanges: SimpleChanges) {\n        super.ngOnChanges(simpleChanges);\n        let isLoadingChanged = false;\n\n        if (simpleChanges.loading) {\n            const { previousValue, currentValue } = simpleChanges.loading;\n\n            if (this.lazy && previousValue !== currentValue && currentValue !== this.d_loading) {\n                this.d_loading = currentValue;\n                isLoadingChanged = true;\n            }\n        }\n\n        if (simpleChanges.orientation) {\n            this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n        }\n\n        if (simpleChanges.numToleratedItems) {\n            const { previousValue, currentValue } = simpleChanges.numToleratedItems;\n\n            if (previousValue !== currentValue && currentValue !== this.d_numToleratedItems) {\n                this.d_numToleratedItems = currentValue;\n            }\n        }\n\n        if (simpleChanges.options) {\n            const { previousValue, currentValue } = simpleChanges.options;\n\n            if (this.lazy && previousValue?.loading !== currentValue?.loading && currentValue?.loading !== this.d_loading) {\n                this.d_loading = currentValue.loading;\n                isLoadingChanged = true;\n            }\n\n            if (previousValue?.numToleratedItems !== currentValue?.numToleratedItems && currentValue?.numToleratedItems !== this.d_numToleratedItems) {\n                this.d_numToleratedItems = currentValue.numToleratedItems;\n            }\n        }\n\n        if (this.initialized) {\n            const isChanged = !isLoadingChanged && (simpleChanges.items?.previousValue?.length !== simpleChanges.items?.currentValue?.length || simpleChanges.itemSize || simpleChanges.scrollHeight || simpleChanges.scrollWidth);\n\n            if (isChanged) {\n                this.init();\n                this.calculateAutoSize();\n            }\n        }\n    }\n\n    ngAfterContentInit() {\n        (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this._contentTemplate = item.template;\n                    break;\n\n                case 'item':\n                    this._itemTemplate = item.template;\n                    break;\n\n                case 'loader':\n                    this._loaderTemplate = item.template;\n                    break;\n\n                case 'loadericon':\n                    this._loaderIconTemplate = item.template;\n                    break;\n\n                default:\n                    this._itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        Promise.resolve().then(() => {\n            this.viewInit();\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (!this.initialized) {\n            this.viewInit();\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindResizeListener();\n\n        this.contentEl = null;\n        this.initialized = false;\n        super.ngOnDestroy();\n    }\n\n    viewInit() {\n        if (isPlatformBrowser(this.platformId) && !this.initialized) {\n            if (isVisible(this.elementViewChild?.nativeElement)) {\n                this.setInitialState();\n                this.setContentEl(this.contentEl);\n                this.init();\n\n                this.defaultWidth = getWidth(this.elementViewChild?.nativeElement);\n                this.defaultHeight = getHeight(this.elementViewChild?.nativeElement);\n                this.defaultContentWidth = getWidth(this.contentEl);\n                this.defaultContentHeight = getHeight(this.contentEl);\n                this.initialized = true;\n            }\n        }\n    }\n\n    init() {\n        if (!this._disabled) {\n            this.setSize();\n            this.calculateOptions();\n            this.setSpacerSize();\n            this.bindResizeListener();\n\n            this.cd.detectChanges();\n        }\n    }\n\n    setContentEl(el?: HTMLElement) {\n        this.contentEl = el || this.contentViewChild?.nativeElement || findSingle(this.elementViewChild?.nativeElement, '.p-virtualscroller-content');\n    }\n\n    setInitialState() {\n        this.first = this.both ? { rows: 0, cols: 0 } : 0;\n        this.last = this.both ? { rows: 0, cols: 0 } : 0;\n        this.numItemsInViewport = this.both ? { rows: 0, cols: 0 } : 0;\n        this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n        this.d_loading = this._loading || false;\n        this.d_numToleratedItems = this._numToleratedItems;\n        this.loaderArr = [];\n        this.spacerStyle = {};\n        this.contentStyle = {};\n    }\n\n    getElementRef() {\n        return this.elementViewChild;\n    }\n\n    getPageByFirst(first?: any) {\n        return Math.floor(((first ?? this.first) + this.d_numToleratedItems * 4) / (this._step || 1));\n    }\n\n    isPageChanged(first?: any) {\n        return this._step ? this.page !== this.getPageByFirst(first ?? this.first) : true;\n    }\n\n    scrollTo(options: ScrollToOptions) {\n        // this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n        this.elementViewChild?.nativeElement?.scrollTo(options);\n    }\n\n    scrollToIndex(index: number | number[], behavior: ScrollBehavior = 'auto') {\n        const valid = this.both ? (index as number[]).every((i) => i > -1) : (index as number) > -1;\n\n        if (valid) {\n            const first = this.first;\n            const { scrollTop = 0, scrollLeft = 0 } = this.elementViewChild?.nativeElement;\n            const { numToleratedItems } = this.calculateNumItems();\n            const contentPos = this.getContentPosition();\n            const itemSize = this.itemSize;\n            const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);\n            const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;\n            const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n            let newFirst = this.both ? { rows: 0, cols: 0 } : 0;\n            let isRangeChanged = false,\n                isScrollChanged = false;\n\n            if (this.both) {\n                newFirst = {\n                    rows: calculateFirst(index[0], numToleratedItems[0]),\n                    cols: calculateFirst(index[1], numToleratedItems[1])\n                };\n                scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPos.left), calculateCoord(newFirst.rows, itemSize[0], contentPos.top));\n                isScrollChanged = this.lastScrollPos.top !== scrollTop || this.lastScrollPos.left !== scrollLeft;\n                isRangeChanged = newFirst.rows !== first.rows || newFirst.cols !== first.cols;\n            } else {\n                newFirst = calculateFirst(index as number, numToleratedItems);\n                this.horizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPos.left), scrollTop) : scrollTo(scrollLeft, calculateCoord(newFirst, itemSize, contentPos.top));\n                isScrollChanged = this.lastScrollPos !== (this.horizontal ? scrollLeft : scrollTop);\n                isRangeChanged = newFirst !== first;\n            }\n\n            this.isRangeChanged = isRangeChanged;\n            isScrollChanged && (this.first = newFirst);\n        }\n    }\n\n    scrollInView(index: number, to: ScrollerToType, behavior: ScrollBehavior = 'auto') {\n        if (to) {\n            const { first, viewport } = this.getRenderedRange();\n            const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n            const isToStart = to === 'to-start';\n            const isToEnd = to === 'to-end';\n\n            if (isToStart) {\n                if (this.both) {\n                    if (viewport.first.rows - first.rows > (<any>index)[0]) {\n                        scrollTo(viewport.first.cols * (<number[]>this._itemSize)[1], (viewport.first.rows - 1) * (<number[]>this._itemSize)[0]);\n                    } else if (viewport.first.cols - first.cols > (<any>index)[1]) {\n                        scrollTo((viewport.first.cols - 1) * (<number[]>this._itemSize)[1], viewport.first.rows * (<number[]>this._itemSize)[0]);\n                    }\n                } else {\n                    if (viewport.first - first > index) {\n                        const pos = (viewport.first - 1) * <number>this._itemSize;\n                        this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n                    }\n                }\n            } else if (isToEnd) {\n                if (this.both) {\n                    if (viewport.last.rows - first.rows <= (<any>index)[0] + 1) {\n                        scrollTo(viewport.first.cols * (<number[]>this._itemSize)[1], (viewport.first.rows + 1) * (<number[]>this._itemSize)[0]);\n                    } else if (viewport.last.cols - first.cols <= (<any>index)[1] + 1) {\n                        scrollTo((viewport.first.cols + 1) * (<number[]>this._itemSize)[1], viewport.first.rows * (<number[]>this._itemSize)[0]);\n                    }\n                } else {\n                    if (viewport.last - first <= index + 1) {\n                        const pos = (viewport.first + 1) * <number>this._itemSize;\n                        this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n                    }\n                }\n            }\n        } else {\n            this.scrollToIndex(index, behavior);\n        }\n    }\n\n    getRenderedRange() {\n        const calculateFirstInViewport = (_pos: number, _size: number) => (_size || _pos ? Math.floor(_pos / (_size || _pos)) : 0);\n\n        let firstInViewport = this.first;\n        let lastInViewport: any = 0;\n\n        if (this.elementViewChild?.nativeElement) {\n            const { scrollTop, scrollLeft } = this.elementViewChild.nativeElement;\n\n            if (this.both) {\n                firstInViewport = {\n                    rows: calculateFirstInViewport(scrollTop, (<number[]>this._itemSize)[0]),\n                    cols: calculateFirstInViewport(scrollLeft, (<number[]>this._itemSize)[1])\n                };\n                lastInViewport = {\n                    rows: firstInViewport.rows + this.numItemsInViewport.rows,\n                    cols: firstInViewport.cols + this.numItemsInViewport.cols\n                };\n            } else {\n                const scrollPos = this.horizontal ? scrollLeft : scrollTop;\n                firstInViewport = calculateFirstInViewport(scrollPos, <number>this._itemSize);\n                lastInViewport = firstInViewport + this.numItemsInViewport;\n            }\n        }\n\n        return {\n            first: this.first,\n            last: this.last,\n            viewport: {\n                first: firstInViewport,\n                last: lastInViewport\n            }\n        };\n    }\n\n    calculateNumItems() {\n        const contentPos = this.getContentPosition();\n        const contentWidth = (this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetWidth - contentPos.left : 0) || 0;\n        const contentHeight = (this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetHeight - contentPos.top : 0) || 0;\n        const calculateNumItemsInViewport = (_contentSize: number, _itemSize: number) => (_itemSize || _contentSize ? Math.ceil(_contentSize / (_itemSize || _contentSize)) : 0);\n        const calculateNumToleratedItems = (_numItems: number) => Math.ceil(_numItems / 2);\n        const numItemsInViewport: any = this.both\n            ? {\n                  rows: calculateNumItemsInViewport(contentHeight, (<number[]>this._itemSize)[0]),\n                  cols: calculateNumItemsInViewport(contentWidth, (<number[]>this._itemSize)[1])\n              }\n            : calculateNumItemsInViewport(this.horizontal ? contentWidth : contentHeight, <number>this._itemSize);\n\n        const numToleratedItems = this.d_numToleratedItems || (this.both ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] : calculateNumToleratedItems(numItemsInViewport));\n\n        return { numItemsInViewport, numToleratedItems };\n    }\n\n    calculateOptions() {\n        const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();\n        const calculateLast = (_first: number, _num: number, _numT: number, _isCols: boolean = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);\n        const first = this.first;\n        const last = this.both\n            ? {\n                  rows: calculateLast(this.first.rows, numItemsInViewport.rows, numToleratedItems[0]),\n                  cols: calculateLast(this.first.cols, numItemsInViewport.cols, numToleratedItems[1], true)\n              }\n            : calculateLast(this.first, numItemsInViewport, numToleratedItems);\n\n        this.last = last;\n        this.numItemsInViewport = numItemsInViewport;\n        this.d_numToleratedItems = numToleratedItems;\n\n        if (this.showLoader) {\n            this.loaderArr = this.both ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) : Array.from({ length: numItemsInViewport });\n        }\n\n        if (this._lazy) {\n            Promise.resolve().then(() => {\n                this.lazyLoadState = {\n                    first: this._step ? (this.both ? { rows: 0, cols: first.cols } : 0) : first,\n                    last: Math.min(this._step ? this._step : this.last, (<any[]>this.items).length)\n                };\n\n                this.handleEvents('onLazyLoad', this.lazyLoadState);\n            });\n        }\n    }\n\n    calculateAutoSize() {\n        if (this._autoSize && !this.d_loading) {\n            Promise.resolve().then(() => {\n                if (this.contentEl) {\n                    this.contentEl.style.minHeight = this.contentEl.style.minWidth = 'auto';\n                    this.contentEl.style.position = 'relative';\n                    (<ElementRef>this.elementViewChild).nativeElement.style.contain = 'none';\n\n                    const [contentWidth, contentHeight] = [getWidth(this.contentEl), getHeight(this.contentEl)];\n                    contentWidth !== this.defaultContentWidth && ((<ElementRef>this.elementViewChild).nativeElement.style.width = '');\n                    contentHeight !== this.defaultContentHeight && ((<ElementRef>this.elementViewChild).nativeElement.style.height = '');\n\n                    const [width, height] = [getWidth((<ElementRef>this.elementViewChild).nativeElement), getHeight((<ElementRef>this.elementViewChild).nativeElement)];\n                    (this.both || this.horizontal) && ((<ElementRef>this.elementViewChild).nativeElement.style.width = width < <number>this.defaultWidth ? width + 'px' : this._scrollWidth || this.defaultWidth + 'px');\n                    (this.both || this.vertical) && ((<ElementRef>this.elementViewChild).nativeElement.style.height = height < <number>this.defaultHeight ? height + 'px' : this._scrollHeight || this.defaultHeight + 'px');\n\n                    this.contentEl.style.minHeight = this.contentEl.style.minWidth = '';\n                    this.contentEl.style.position = '';\n                    (<ElementRef>this.elementViewChild).nativeElement.style.contain = '';\n                }\n            });\n        }\n    }\n\n    getLast(last = 0, isCols = false) {\n        return this._items ? Math.min(isCols ? (this._columns || this._items[0]).length : this._items.length, last) : 0;\n    }\n\n    getContentPosition() {\n        if (this.contentEl) {\n            const style = getComputedStyle(this.contentEl);\n            const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);\n            const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);\n            const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);\n            const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);\n\n            return { left, right, top, bottom, x: left + right, y: top + bottom };\n        }\n\n        return { left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\n    }\n\n    setSize() {\n        if (this.elementViewChild?.nativeElement) {\n            const parentElement = this.elementViewChild.nativeElement.parentElement.parentElement;\n            const width = this._scrollWidth || `${this.elementViewChild.nativeElement.offsetWidth || parentElement.offsetWidth}px`;\n            const height = this._scrollHeight || `${this.elementViewChild.nativeElement.offsetHeight || parentElement.offsetHeight}px`;\n            const setProp = (_name: string, _value: any) => ((<ElementRef>this.elementViewChild).nativeElement.style[_name] = _value);\n\n            if (this.both || this.horizontal) {\n                setProp('height', height);\n                setProp('width', width);\n            } else {\n                setProp('height', height);\n            }\n        }\n    }\n\n    setSpacerSize() {\n        if (this._items) {\n            const contentPos = this.getContentPosition();\n            const setProp = (_name: string, _value: any, _size: number, _cpos: number = 0) =>\n                (this.spacerStyle = {\n                    ...this.spacerStyle,\n                    ...{ [`${_name}`]: (_value || []).length * _size + _cpos + 'px' }\n                });\n\n            if (this.both) {\n                setProp('height', this._items, (<number[]>this._itemSize)[0], contentPos.y);\n                setProp('width', this._columns || this._items[1], (<number[]>this._itemSize)[1], contentPos.x);\n            } else {\n                this.horizontal ? setProp('width', this._columns || this._items, <number>this._itemSize, contentPos.x) : setProp('height', this._items, <number>this._itemSize, contentPos.y);\n            }\n        }\n    }\n\n    setContentPosition(pos: any) {\n        if (this.contentEl && !this._appendOnly) {\n            const first = pos ? pos.first : this.first;\n            const calculateTranslateVal = (_first: number, _size: number) => _first * _size;\n            const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });\n\n            if (this.both) {\n                setTransform(calculateTranslateVal(first.cols, (<number[]>this._itemSize)[1]), calculateTranslateVal(first.rows, (<number[]>this._itemSize)[0]));\n            } else {\n                const translateVal = calculateTranslateVal(first, <number>this._itemSize);\n                this.horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);\n            }\n        }\n    }\n\n    onScrollPositionChange(event: Event) {\n        const target = event.target;\n        const contentPos = this.getContentPosition();\n        const calculateScrollPos = (_pos: number, _cpos: number) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);\n        const calculateCurrentIndex = (_pos: number, _size: number) => (_size || _pos ? Math.floor(_pos / (_size || _pos)) : 0);\n        const calculateTriggerIndex = (_currentIndex: number, _first: number, _last: number, _num: number, _numT: number, _isScrollDownOrRight: any) => {\n            return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;\n        };\n        const calculateFirst = (_currentIndex: number, _triggerIndex: number, _first: number, _last: number, _num: number, _numT: number, _isScrollDownOrRight: any) => {\n            if (_currentIndex <= _numT) return 0;\n            else return Math.max(0, _isScrollDownOrRight ? (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) : _currentIndex > _triggerIndex ? _first : _currentIndex - 2 * _numT);\n        };\n        const calculateLast = (_currentIndex: number, _first: number, _last: number, _num: number, _numT: number, _isCols = false) => {\n            let lastValue = _first + _num + 2 * _numT;\n\n            if (_currentIndex >= _numT) {\n                lastValue += _numT + 1;\n            }\n\n            return this.getLast(lastValue, _isCols);\n        };\n\n        const scrollTop = calculateScrollPos((<HTMLElement>target).scrollTop, contentPos.top);\n        const scrollLeft = calculateScrollPos((<HTMLElement>target).scrollLeft, contentPos.left);\n\n        let newFirst = this.both ? { rows: 0, cols: 0 } : 0;\n        let newLast = this.last;\n        let isRangeChanged = false;\n        let newScrollPos = this.lastScrollPos;\n\n        if (this.both) {\n            const isScrollDown = this.lastScrollPos.top <= scrollTop;\n            const isScrollRight = this.lastScrollPos.left <= scrollLeft;\n\n            if (!this._appendOnly || (this._appendOnly && (isScrollDown || isScrollRight))) {\n                const currentIndex = {\n                    rows: calculateCurrentIndex(scrollTop, (<number[]>this._itemSize)[0]),\n                    cols: calculateCurrentIndex(scrollLeft, (<number[]>this._itemSize)[1])\n                };\n                const triggerIndex = {\n                    rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n                    cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n                };\n\n                newFirst = {\n                    rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n                    cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n                };\n                newLast = {\n                    rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),\n                    cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)\n                };\n\n                isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;\n                newScrollPos = { top: scrollTop, left: scrollLeft };\n            }\n        } else {\n            const scrollPos = this.horizontal ? scrollLeft : scrollTop;\n            const isScrollDownOrRight = this.lastScrollPos <= scrollPos;\n\n            if (!this._appendOnly || (this._appendOnly && isScrollDownOrRight)) {\n                const currentIndex = calculateCurrentIndex(scrollPos, <number>this._itemSize);\n                const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n\n                newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n                newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);\n                isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;\n                newScrollPos = scrollPos;\n            }\n        }\n\n        return {\n            first: newFirst,\n            last: newLast,\n            isRangeChanged,\n            scrollPos: newScrollPos\n        };\n    }\n\n    onScrollChange(event: Event) {\n        const { first, last, isRangeChanged, scrollPos } = this.onScrollPositionChange(event);\n\n        if (isRangeChanged) {\n            const newState = { first, last };\n\n            this.setContentPosition(newState);\n\n            this.first = first;\n            this.last = last;\n            this.lastScrollPos = scrollPos;\n\n            this.handleEvents('onScrollIndexChange', newState);\n\n            if (this._lazy && this.isPageChanged(first)) {\n                const lazyLoadState = {\n                    first: this._step ? Math.min(this.getPageByFirst(first) * this._step, (<any[]>this.items).length - this._step) : first,\n                    last: Math.min(this._step ? (this.getPageByFirst(first) + 1) * this._step : last, (<any[]>this.items).length)\n                };\n                const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;\n\n                isLazyStateChanged && this.handleEvents('onLazyLoad', lazyLoadState);\n                this.lazyLoadState = lazyLoadState;\n            }\n        }\n    }\n\n    onContainerScroll(event: Event) {\n        this.handleEvents('onScroll', { originalEvent: event });\n\n        if (this._delay && this.isPageChanged()) {\n            if (this.scrollTimeout) {\n                clearTimeout(this.scrollTimeout);\n            }\n\n            if (!this.d_loading && this.showLoader) {\n                const { isRangeChanged } = this.onScrollPositionChange(event);\n                const changed = isRangeChanged || (this._step ? this.isPageChanged() : false);\n\n                if (changed) {\n                    this.d_loading = true;\n\n                    this.cd.detectChanges();\n                }\n            }\n\n            this.scrollTimeout = setTimeout(() => {\n                this.onScrollChange(event);\n\n                if (this.d_loading && this.showLoader && (!this._lazy || this._loading === undefined)) {\n                    this.d_loading = false;\n                    this.page = this.getPageByFirst();\n                }\n                this.cd.detectChanges();\n            }, this._delay);\n        } else {\n            !this.d_loading && this.onScrollChange(event);\n        }\n    }\n\n    bindResizeListener() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (!this.windowResizeListener) {\n                this.zone.runOutsideAngular(() => {\n                    const window = this.document.defaultView as Window;\n                    const event = isTouchDevice() ? 'orientationchange' : 'resize';\n                    this.windowResizeListener = this.renderer.listen(window, event, this.onWindowResize.bind(this));\n                });\n            }\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.windowResizeListener) {\n            this.windowResizeListener();\n            this.windowResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (this.resizeTimeout) {\n            clearTimeout(this.resizeTimeout);\n        }\n\n        this.resizeTimeout = setTimeout(() => {\n            if (isVisible(this.elementViewChild?.nativeElement)) {\n                const [width, height] = [getWidth(this.elementViewChild?.nativeElement), getHeight(this.elementViewChild?.nativeElement)];\n                const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];\n                const reinit = this.both ? isDiffWidth || isDiffHeight : this.horizontal ? isDiffWidth : this.vertical ? isDiffHeight : false;\n\n                reinit &&\n                    this.zone.run(() => {\n                        this.d_numToleratedItems = this._numToleratedItems;\n                        this.defaultWidth = width;\n                        this.defaultHeight = height;\n                        this.defaultContentWidth = getWidth(this.contentEl);\n                        this.defaultContentHeight = getHeight(this.contentEl);\n\n                        this.init();\n                    });\n            }\n        }, this._resizeDelay);\n    }\n\n    handleEvents(name: string, params: any) {\n        //@ts-ignore\n        return this.options && (<any>this.options)[name] ? (<any>this.options)[name](params) : this[name].emit(params);\n    }\n\n    getContentOptions() {\n        return {\n            contentStyleClass: `p-virtualscroller-content ${this.d_loading ? 'p-virtualscroller-loading' : ''}`,\n            items: this.loadedItems,\n            getItemOptions: (index: number) => this.getOptions(index),\n            loading: this.d_loading,\n            getLoaderOptions: (index: number, options?: any) => this.getLoaderOptions(index, options),\n            itemSize: this._itemSize,\n            rows: this.loadedRows,\n            columns: this.loadedColumns,\n            spacerStyle: this.spacerStyle,\n            contentStyle: this.contentStyle,\n            vertical: this.vertical,\n            horizontal: this.horizontal,\n            both: this.both\n        };\n    }\n\n    getOptions(renderedIndex: number) {\n        const count = (this._items || []).length;\n        const index = this.both ? this.first.rows + renderedIndex : this.first + renderedIndex;\n\n        return {\n            index,\n            count,\n            first: index === 0,\n            last: index === count - 1,\n            even: index % 2 === 0,\n            odd: index % 2 !== 0\n        };\n    }\n\n    getLoaderOptions(index: number, extOptions: any) {\n        const count = this.loaderArr.length;\n\n        return {\n            index,\n            count,\n            first: index === 0,\n            last: index === count - 1,\n            even: index % 2 === 0,\n            odd: index % 2 !== 0,\n            ...extOptions\n        };\n    }\n}\n\n@NgModule({\n    imports: [Scroller, SharedModule],\n    exports: [Scroller, SharedModule]\n})\nexport class ScrollerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}