{"version":3,"file":"axulus-uikit-virtualscroller.mjs","sources":["../../src/app/components/virtualscroller/virtualscroller.ts","../../src/app/components/virtualscroller/axulus-uikit-virtualscroller.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgModule,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BlockableUI, Footer, Header, PrimeTemplate, SharedModule } from '@axulus/uikit/api';\nimport { Scroller, ScrollerModule, ScrollerOptions } from '@axulus/uikit/scroller';\n\n@Component({\n  selector: 'p-virtualScroller',\n  template: `\n    <div [ngClass]=\"'p-virtualscroller p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n      <div class=\"p-virtualscroller-header\" *ngIf=\"header || headerTemplate\">\n        <ng-content select=\"p-header\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n      </div>\n      <div #content class=\"p-virtualscroller-content\">\n        <p-scroller\n          #scroller\n          [items]=\"value\"\n          styleClass=\"p-virtualscroller-list\"\n          [style]=\"{ height: scrollHeight }\"\n          [itemSize]=\"itemSize\"\n          [lazy]=\"lazy\"\n          (onLazyLoad)=\"onLazyItemLoad($event)\"\n          [options]=\"options\"\n        >\n          <ng-template pTemplate=\"item\" let-item let-scrollerOptions=\"options\">\n            <div [ngStyle]=\"{ height: itemSize + 'px' }\" class=\"p-virtualscroller-item\">\n              <ng-container\n                *ngTemplateOutlet=\"item ? itemTemplate : loadingItemTemplate; context: { $implicit: item, options: scrollerOptions }\"\n              ></ng-container>\n            </div>\n          </ng-template>\n        </p-scroller>\n      </div>\n      <div class=\"p-virtualscroller-footer\" *ngIf=\"footer || footerTemplate\">\n        <ng-content select=\"p-footer\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'p-element'\n  }\n})\nexport class VirtualScroller implements AfterContentInit, BlockableUI {\n  @Input() value: any[];\n\n  @Input() itemSize: number;\n\n  @Input() style: any;\n\n  @Input() styleClass: string;\n\n  @Input() scrollHeight: any;\n\n  @Input() lazy: boolean;\n\n  @Input() options: ScrollerOptions;\n\n  @Input() delay: number = 250;\n\n  @ContentChild(Header) header: Header;\n\n  @ContentChild(Footer) footer: Footer;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  @ViewChild('scroller') scroller: Scroller;\n\n  @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n  itemTemplate: TemplateRef<any>;\n\n  headerTemplate: TemplateRef<any>;\n\n  footerTemplate: TemplateRef<any>;\n\n  loadingItemTemplate: TemplateRef<any>;\n\n  virtualScrollTimeout: any;\n\n  constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n  ngAfterContentInit() {\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'loadingItem':\n          this.loadingItemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  onLazyItemLoad(event) {\n    if (this.virtualScrollTimeout) {\n      clearTimeout(this.virtualScrollTimeout);\n    }\n\n    this.virtualScrollTimeout = setTimeout(() => {\n      this.onLazyLoad.emit({\n        ...event,\n        rows: event.last - event.first,\n        forceUpdate: () => this.cd.detectChanges()\n      });\n    }, this.delay);\n  }\n\n  getBlockableElement(): HTMLElement {\n    return this.el.nativeElement.children[0];\n  }\n\n  scrollToIndex(index: number, mode?: ScrollBehavior): void {\n    this.scroller?.scrollToIndex(index, mode);\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, SharedModule, ScrollerModule],\n  exports: [VirtualScroller, SharedModule, ScrollerModule],\n  declarations: [VirtualScroller]\n})\nexport class VirtualScrollerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}