{"version":3,"file":"axulus-uikit-scroller.mjs","sources":["../../src/app/components/scroller/scroller.ts","../../src/app/components/scroller/axulus-uikit-scroller.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\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 { PrimeTemplate, SharedModule } from '@axulus/uikit/api';\nimport { DomHandler } from '@axulus/uikit/dom';\n\nexport type ScrollerToType = 'to-start' | 'to-end' | undefined;\n\nexport type ScrollerOrientationType = 'vertical' | 'horizontal' | 'both';\n\nexport interface ScrollerOptions {\n  id?: string | undefined;\n  style?: any;\n  styleClass?: string | undefined;\n  tabindex?: number | undefined;\n  items?: any[];\n  itemSize?: any;\n  scrollHeight?: string | undefined;\n  scrollWidth?: string | undefined;\n  orientation?: ScrollerOrientationType;\n  step?: number | undefined;\n  delay?: number | undefined;\n  resizeDelay?: number | undefined;\n  appendOnly?: boolean;\n  inline?: boolean;\n  lazy?: boolean;\n  disabled?: boolean;\n  loaderDisabled?: boolean;\n  columns?: any[] | undefined;\n  showSpacer?: boolean;\n  showLoader?: boolean;\n  numToleratedItems?: any;\n  loading?: boolean;\n  autoSize?: boolean;\n  trackBy?: any;\n  onLazyLoad?: Function | undefined;\n  onScroll?: Function | undefined;\n  onScrollIndexChange?: Function | undefined;\n}\n\n@Component({\n  selector: 'p-scroller',\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-scroller': true,\n          'p-scroller-inline': inline,\n          'p-both-scroll': both,\n          'p-horizontal-scroll': horizontal\n        }\"\n        (scroll)=\"onContainerScroll($event)\"\n      >\n        <ng-container *ngIf=\"contentTemplate; else buildInContent\">\n          <ng-container\n            *ngTemplateOutlet=\"contentTemplate; context: { $implicit: loadedItems, options: getContentOptions() }\"\n          ></ng-container>\n        </ng-container>\n        <ng-template #buildInContent>\n          <div #content class=\"p-scroller-content\" [ngClass]=\"{ 'p-scroller-loading': d_loading }\" [ngStyle]=\"contentStyle\">\n            <ng-container *ngFor=\"let item of loadedItems; let index = index; trackBy: _trackBy || index\">\n              <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, options: getOptions(index) }\"></ng-container>\n            </ng-container>\n          </div>\n        </ng-template>\n        <div *ngIf=\"_showSpacer\" class=\"p-scroller-spacer\" [ngStyle]=\"spacerStyle\"></div>\n        <div\n          *ngIf=\"!loaderDisabled && _showLoader && d_loading\"\n          class=\"p-scroller-loader\"\n          [ngClass]=\"{ 'p-component-overlay': !loaderTemplate }\"\n        >\n          <ng-container *ngIf=\"loaderTemplate; else buildInLoader\">\n            <ng-container *ngFor=\"let item of loaderArr; let index = index\">\n              <ng-container\n                *ngTemplateOutlet=\"\n                  loaderTemplate;\n                  context: { options: getLoaderOptions(index, both && { numCols: _numItemsInViewport.cols }) }\n                \"\n              ></ng-container>\n            </ng-container>\n          </ng-container>\n          <ng-template #buildInLoader>\n            <ng-container *ngIf=\"loaderIconTemplate; else buildInLoaderIcon\">\n              <ng-container\n                *ngTemplateOutlet=\"loaderIconTemplate; context: { options: { styleClass: 'p-scroller-loading-icon' } }\"\n              ></ng-container>\n            </ng-container>\n            <ng-template #buildInLoaderIcon>\n              <i class=\"p-scroller-loading-icon pi pi-spinner pi-spin\"></i>\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\">\n        <ng-container\n          *ngTemplateOutlet=\"contentTemplate; context: { $implicit: items, options: { rows: _items, columns: loadedColumns } }\"\n        ></ng-container>\n      </ng-container>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./scroller.css'],\n  host: {\n    class: 'p-scroller-viewport p-element'\n  }\n})\nexport class Scroller implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n  @Input() get id() {\n    return this._id;\n  }\n  set id(val: string) {\n    this._id = val;\n  }\n\n  @Input() get style() {\n    return this._style;\n  }\n  set style(val: any) {\n    this._style = val;\n  }\n\n  @Input() get styleClass() {\n    return this._styleClass;\n  }\n  set styleClass(val: string) {\n    this._styleClass = val;\n  }\n\n  @Input() get tabindex() {\n    return this._tabindex;\n  }\n  set tabindex(val: number) {\n    this._tabindex = val;\n  }\n\n  @Input() get items() {\n    return this._items;\n  }\n  set items(val: any[]) {\n    this._items = val;\n  }\n\n  @Input() get itemSize() {\n    return this._itemSize;\n  }\n  set itemSize(val: any) {\n    this._itemSize = val;\n  }\n\n  @Input() get scrollHeight() {\n    return this._scrollHeight;\n  }\n  set scrollHeight(val: string) {\n    this._scrollHeight = val;\n  }\n\n  @Input() get scrollWidth() {\n    return this._scrollWidth;\n  }\n  set scrollWidth(val: string) {\n    this._scrollWidth = val;\n  }\n\n  @Input() get orientation() {\n    return this._orientation;\n  }\n  set orientation(val: string) {\n    this._orientation = val;\n  }\n\n  @Input() get step() {\n    return this._step;\n  }\n  set step(val: number) {\n    this._step = val;\n  }\n\n  @Input() get delay() {\n    return this._delay;\n  }\n  set delay(val: number) {\n    this._delay = val;\n  }\n\n  @Input() get resizeDelay() {\n    return this._resizeDelay;\n  }\n  set resizeDelay(val: number) {\n    this._resizeDelay = val;\n  }\n\n  @Input() get appendOnly() {\n    return this._appendOnly;\n  }\n  set appendOnly(val: boolean) {\n    this._appendOnly = val;\n  }\n\n  @Input() get inline() {\n    return this._inline;\n  }\n  set inline(val: boolean) {\n    this._inline = val;\n  }\n\n  @Input() get lazy() {\n    return this._lazy;\n  }\n  set lazy(val: boolean) {\n    this._lazy = val;\n  }\n\n  @Input() get disabled() {\n    return this._disabled;\n  }\n  set disabled(val: boolean) {\n    this._disabled = val;\n  }\n\n  @Input() get loaderDisabled() {\n    return this._loaderDisabled;\n  }\n  set loaderDisabled(val: boolean) {\n    this._loaderDisabled = val;\n  }\n\n  @Input() get columns() {\n    return this._columns;\n  }\n  set columns(val: any[]) {\n    this._columns = val;\n  }\n\n  @Input() get showSpacer() {\n    return this._showSpacer;\n  }\n  set showSpacer(val: boolean) {\n    this._showSpacer = val;\n  }\n\n  @Input() get showLoader() {\n    return this._showLoader;\n  }\n  set showLoader(val: boolean) {\n    this._showLoader = val;\n  }\n\n  @Input() get numToleratedItems() {\n    return this._numToleratedItems;\n  }\n  set numToleratedItems(val: number) {\n    this._numToleratedItems = val;\n  }\n\n  @Input() get loading() {\n    return this._loading;\n  }\n  set loading(val: boolean) {\n    this._loading = val;\n  }\n\n  @Input() get autoSize() {\n    return this._autoSize;\n  }\n  set autoSize(val: boolean) {\n    this._autoSize = val;\n  }\n\n  @Input() get trackBy() {\n    return this._trackBy;\n  }\n  set trackBy(val: any) {\n    this._trackBy = val;\n  }\n\n  @Input() get options() {\n    return this._options;\n  }\n  set options(val: ScrollerOptions) {\n    this._options = val;\n\n    if (val && typeof val === 'object') {\n      Object.entries(val).forEach(([k, v]) => this[`_${k}`] !== v && (this[`_${k}`] = v));\n    }\n  }\n\n  @ViewChild('element') elementViewChild: ElementRef;\n\n  @ViewChild('content') contentViewChild: ElementRef;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n  @Output() onScroll: EventEmitter<any> = new EventEmitter();\n\n  @Output() onScrollIndexChange: EventEmitter<any> = new EventEmitter();\n\n  _id: string;\n\n  _style: any;\n\n  _styleClass: string;\n\n  _tabindex: number = 0;\n\n  _items: any[];\n\n  _itemSize: any = 0;\n\n  _scrollHeight: string;\n\n  _scrollWidth: string;\n\n  _orientation: string = '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[];\n\n  _showSpacer: boolean = true;\n\n  _showLoader: boolean = false;\n\n  _numToleratedItems: any;\n\n  _loading: boolean;\n\n  _autoSize: boolean = false;\n\n  _trackBy: any;\n\n  _options: ScrollerOptions;\n\n  d_loading: boolean = false;\n\n  d_numToleratedItems: any;\n\n  contentEl: any;\n\n  contentTemplate: TemplateRef<any>;\n\n  itemTemplate: TemplateRef<any>;\n\n  loaderTemplate: TemplateRef<any>;\n\n  loaderIconTemplate: TemplateRef<any>;\n\n  first: any = 0;\n\n  last: any = 0;\n\n  page: number = 0;\n\n  numItemsInViewport: any = 0;\n\n  lastScrollPos: any = 0;\n\n  lazyLoadState: any = {};\n\n  loaderArr: any[] = [];\n\n  spacerStyle: any = {};\n\n  contentStyle: any = {};\n\n  scrollTimeout: any;\n\n  resizeTimeout: any;\n\n  initialized: boolean = false;\n\n  windowResizeListener: any;\n\n  defaultWidth: number;\n\n  defaultHeight: number;\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)\n        return this._items\n          .slice(this._appendOnly ? 0 : this.first.rows, this.last.rows)\n          .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\n        ? this.both\n          ? this.loaderArr[0]\n          : this.loaderArr\n        : 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  get isPageChanged() {\n    return this._step ? this.page !== this.getPageByFirst() : true;\n  }\n\n  constructor(private cd: ChangeDetectorRef, private zone: NgZone) {}\n\n  ngOnInit() {\n    this.setInitialState();\n  }\n\n  ngOnChanges(simpleChanges: 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 (\n        previousValue?.numToleratedItems !== currentValue?.numToleratedItems &&\n        currentValue?.numToleratedItems !== this.d_numToleratedItems\n      ) {\n        this.d_numToleratedItems = currentValue.numToleratedItems;\n      }\n    }\n\n    if (this.initialized) {\n      const isChanged =\n        !isLoadingChanged &&\n        (simpleChanges.items?.previousValue?.length !== simpleChanges.items?.currentValue?.length ||\n          simpleChanges.itemSize ||\n          simpleChanges.scrollHeight ||\n          simpleChanges.scrollWidth);\n      isChanged && this.init();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.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    this.viewInit();\n  }\n\n  ngAfterViewChecked() {\n    if (!this.initialized) {\n      this.viewInit();\n    }\n\n    this.calculateAutoSize();\n  }\n\n  ngOnDestroy() {\n    this.unbindResizeListener();\n\n    this.contentEl = null;\n    this.initialized = false;\n  }\n\n  viewInit() {\n    if (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {\n      this.setInitialState();\n      this.setContentEl(this.contentEl);\n      this.init();\n\n      this.defaultWidth = DomHandler.getWidth(this.elementViewChild.nativeElement);\n      this.defaultHeight = DomHandler.getHeight(this.elementViewChild.nativeElement);\n      this.initialized = true;\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 =\n      el || this.contentViewChild?.nativeElement || DomHandler.findSingle(this.elementViewChild?.nativeElement, '.p-scroller-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() {\n    return Math.floor((this.first + this.d_numToleratedItems * 4) / (this._step || 1));\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, behavior: ScrollBehavior = 'auto') {\n    const { numToleratedItems } = this.calculateNumItems();\n    const contentPos = this.getContentPosition();\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\n    if (this.both) {\n      this.first = {\n        rows: calculateFirst(index[0], numToleratedItems[0]),\n        cols: calculateFirst(index[1], numToleratedItems[1])\n      };\n      scrollTo(\n        calculateCoord(this.first.cols, this._itemSize[1], contentPos.left),\n        calculateCoord(this.first.rows, this._itemSize[0], contentPos.top)\n      );\n    } else {\n      this.first = calculateFirst(index, numToleratedItems);\n      this.horizontal\n        ? scrollTo(calculateCoord(this.first, this._itemSize, contentPos.left), 0)\n        : scrollTo(0, calculateCoord(this.first, this._itemSize, contentPos.top));\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 > index[0]) {\n            scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows - 1) * this._itemSize[0]);\n          } else if (viewport.first.cols - first.cols > index[1]) {\n            scrollTo((viewport.first.cols - 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);\n          }\n        } else {\n          if (viewport.first - first > index) {\n            const pos = (viewport.first - 1) * 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 <= index[0] + 1) {\n            scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows + 1) * this._itemSize[0]);\n          } else if (viewport.last.cols - first.cols <= index[1] + 1) {\n            scrollTo((viewport.first.cols + 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);\n          }\n        } else {\n          if (viewport.last - first <= index + 1) {\n            const pos = (viewport.first + 1) * 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, _size) => Math.floor(_pos / (_size || _pos));\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, this._itemSize[0]),\n          cols: calculateFirstInViewport(scrollLeft, 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, 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;\n    const contentHeight = this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetHeight - contentPos.top : 0;\n    const calculateNumItemsInViewport = (_contentSize, _itemSize) => Math.ceil(_contentSize / (_itemSize || _contentSize));\n    const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);\n    const numItemsInViewport: any = this.both\n      ? {\n          rows: calculateNumItemsInViewport(contentHeight, this._itemSize[0]),\n          cols: calculateNumItemsInViewport(contentWidth, this._itemSize[1])\n        }\n      : calculateNumItemsInViewport(this.horizontal ? contentWidth : contentHeight, this._itemSize);\n\n    const numToleratedItems =\n      this.d_numToleratedItems ||\n      (this.both\n        ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)]\n        : calculateNumToleratedItems(numItemsInViewport));\n\n    return { numItemsInViewport, numToleratedItems };\n  }\n\n  calculateOptions() {\n    const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();\n    const calculateLast = (_first, _num, _numT, _isCols = 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\n        ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols }))\n        : 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, 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\n          const { offsetWidth, offsetHeight } = this.contentEl;\n\n          (this.both || this.horizontal) &&\n            (this.elementViewChild.nativeElement.style.width = (offsetWidth < this.defaultWidth ? offsetWidth : this.defaultWidth) + 'px');\n          (this.both || this.vertical) &&\n            (this.elementViewChild.nativeElement.style.height =\n              (offsetHeight < this.defaultHeight ? offsetHeight : this.defaultHeight) + 'px');\n          this.contentEl.style.minHeight = this.contentEl.style.minWidth = '';\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, _value) => (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, _value, _size, _cpos = 0) =>\n        (this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: (_value || []).length * _size + _cpos + 'px' } });\n\n      if (this.both) {\n        setProp('height', this._items, this._itemSize[0], contentPos.y);\n        setProp('width', this._columns || this._items[1], this._itemSize[1], contentPos.x);\n      } else {\n        this.horizontal\n          ? setProp('width', this._columns || this._items, this._itemSize, contentPos.x)\n          : setProp('height', this._items, this._itemSize, contentPos.y);\n      }\n    }\n  }\n\n  setContentPosition(pos) {\n    if (this.contentEl && !this._appendOnly) {\n      const first = pos ? pos.first : this.first;\n      const calculateTranslateVal = (_first, _size) => _first * _size;\n      const setTransform = (_x = 0, _y = 0) =>\n        (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });\n\n      if (this.both) {\n        setTransform(calculateTranslateVal(first.cols, this._itemSize[1]), calculateTranslateVal(first.rows, this._itemSize[0]));\n      } else {\n        const translateVal = calculateTranslateVal(first, this._itemSize);\n        this.horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);\n      }\n    }\n  }\n\n  onScrollPositionChange(event) {\n    const target = event.target;\n    const contentPos = this.getContentPosition();\n    const calculateScrollPos = (_pos, _cpos) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);\n    const calculateCurrentIndex = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n    const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n      return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;\n    };\n    const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n      if (_currentIndex <= _numT) return 0;\n      else\n        return Math.max(\n          0,\n          _isScrollDownOrRight\n            ? _currentIndex < _triggerIndex\n              ? _first\n              : _currentIndex - _numT\n            : _currentIndex > _triggerIndex\n            ? _first\n            : _currentIndex - 2 * _numT\n        );\n    };\n    const calculateLast = (_currentIndex, _first, _last, _num, _numT, _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(target.scrollTop, contentPos.top);\n    const scrollLeft = calculateScrollPos(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, this._itemSize[0]),\n          cols: calculateCurrentIndex(scrollLeft, this._itemSize[1])\n        };\n        const triggerIndex = {\n          rows: calculateTriggerIndex(\n            currentIndex.rows,\n            this.first.rows,\n            this.last.rows,\n            this.numItemsInViewport.rows,\n            this.d_numToleratedItems[0],\n            isScrollDown\n          ),\n          cols: calculateTriggerIndex(\n            currentIndex.cols,\n            this.first.cols,\n            this.last.cols,\n            this.numItemsInViewport.cols,\n            this.d_numToleratedItems[1],\n            isScrollRight\n          )\n        };\n\n        newFirst = {\n          rows: calculateFirst(\n            currentIndex.rows,\n            triggerIndex.rows,\n            this.first.rows,\n            this.last.rows,\n            this.numItemsInViewport.rows,\n            this.d_numToleratedItems[0],\n            isScrollDown\n          ),\n          cols: calculateFirst(\n            currentIndex.cols,\n            triggerIndex.cols,\n            this.first.cols,\n            this.last.cols,\n            this.numItemsInViewport.cols,\n            this.d_numToleratedItems[1],\n            isScrollRight\n          )\n        };\n        newLast = {\n          rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),\n          cols: calculateLast(\n            currentIndex.cols,\n            newFirst.cols,\n            this.last.cols,\n            this.numItemsInViewport.cols,\n            this.d_numToleratedItems[1],\n            true\n          )\n        };\n\n        isRangeChanged =\n          newFirst.rows !== this.first.rows ||\n          newLast.rows !== this.last.rows ||\n          newFirst.cols !== this.first.cols ||\n          newLast.cols !== this.last.cols;\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, this._itemSize);\n        const triggerIndex = calculateTriggerIndex(\n          currentIndex,\n          this.first,\n          this.last,\n          this.numItemsInViewport,\n          this.d_numToleratedItems,\n          isScrollDownOrRight\n        );\n\n        newFirst = calculateFirst(\n          currentIndex,\n          triggerIndex,\n          this.first,\n          this.last,\n          this.numItemsInViewport,\n          this.d_numToleratedItems,\n          isScrollDownOrRight\n        );\n        newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);\n        isRangeChanged = newFirst !== this.first || newLast !== this.last;\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) {\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) {\n        const lazyLoadState = {\n          first: this._step ? Math.min(this.getPageByFirst() * this._step, this.items.length - this._step) : first,\n          last: Math.min(this._step ? (this.getPageByFirst() + 1) * this._step : last, 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) {\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          this.cd.detectChanges();\n        }\n      }, this._delay);\n    } else {\n      !this.d_loading && this.onScrollChange(event);\n    }\n  }\n\n  bindResizeListener() {\n    if (!this.windowResizeListener) {\n      this.zone.runOutsideAngular(() => {\n        this.windowResizeListener = this.onWindowResize.bind(this);\n\n        window.addEventListener('resize', this.windowResizeListener);\n        window.addEventListener('orientationchange', this.windowResizeListener);\n      });\n    }\n  }\n\n  unbindResizeListener() {\n    if (this.windowResizeListener) {\n      window.removeEventListener('resize', this.windowResizeListener);\n      window.removeEventListener('orientationchange', 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 (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {\n        const [width, height] = [\n          DomHandler.getWidth(this.elementViewChild.nativeElement),\n          DomHandler.getHeight(this.elementViewChild.nativeElement)\n        ];\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\n            this.init();\n          });\n      }\n    }, this._resizeDelay);\n  }\n\n  handleEvents(name, params) {\n    return this.options && this.options[name] ? this.options[name](params) : this[name].emit(params);\n  }\n\n  getContentOptions() {\n    return {\n      contentStyleClass: `p-scroller-content ${this.d_loading ? 'p-scroller-loading' : ''}`,\n      items: this.loadedItems,\n      getItemOptions: (index) => this.getOptions(index),\n      loading: this.d_loading,\n      getLoaderOptions: (index, options?) => 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) {\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, extOptions) {\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: [CommonModule],\n  exports: [Scroller, SharedModule],\n  declarations: [Scroller]\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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"}