{"version":3,"file":"eurosat-table.mjs","sources":["../../../projects/table/src/lib/model/cell-type.enum.ts","../../../projects/table/src/lib/components/table-virtual-data-source.ts","../../../projects/table/src/lib/components/table-icons/table-icons.component.ts","../../../projects/table/src/lib/components/table-icons/table-icons.component.html","../../../projects/table/src/lib/components/table-images/table-images.component.ts","../../../projects/table/src/lib/components/table-images/table-images.component.html","../../../projects/table/src/lib/components/table-html/table-html.component.ts","../../../projects/table/src/lib/components/table-html/table-html.component.html","../../../projects/table/src/lib/components/table-virtual-scroll.ts","../../../projects/table/src/lib/es-table.component.ts","../../../projects/table/src/lib/es-table.component.html","../../../projects/table/src/lib/es-table.service.ts","../../../projects/table/src/lib/es-table.module.ts","../../../projects/table/src/lib/es-table.translates.ts","../../../projects/table/src/lib/model/column-visibility.enum.ts","../../../projects/table/src/lib/model/es-table.params.ts","../../../projects/table/src/lib/model/es-table.consts.ts","../../../projects/table/src/lib/components/table-paged-data-source.ts","../../../projects/table/src/public_api.ts","../../../projects/table/src/eurosat-table.ts"],"sourcesContent":["export enum EsTableSpecialCellType {\n    TEXT,\n    BUTTONS,\n    ICONS,\n    IMAGES,\n    HTML\n}\n\nexport interface EsTableSpecialCell {\n    type: EsTableSpecialCellType;\n    items: any;\n}\n","import {DataSource} from '@angular/cdk/collections';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {EsTablePageData, EsTableRow} from \"../model/es-table.interface\";\nimport {Subject} from \"rxjs/internal/Subject\";\nimport {takeUntil, takeWhile} from \"rxjs/operators\";\n\ninterface TableVirtualDataSourceAttributes {\n    preloadOffset?: number;\n}\n\nexport class TableVirtualDataSource extends DataSource<any> {\n    private data: any[];\n\n    pageIndex = new BehaviorSubject(0);\n    offset = 0;\n    preloadPage = new BehaviorSubject(0);\n    scrollSubscription: Subscription;\n    lastScrollTop = 0;\n    ready = new BehaviorSubject(false);\n\n    constructor(initialData: EsTableRow[],\n                private viewport: CdkVirtualScrollViewport,\n                private itemSize: number,\n                private pageSize: number,\n                private totalRows: number,\n                private initialOffset: number,\n                private onPageChange?: (number) => any,\n                private onPageRequest?: (number) => any,\n                private attributes?: TableVirtualDataSourceAttributes\n    ) {\n        super();\n        this.data = initialData;\n\n        this.viewport.setTotalContentSize(this.itemSize * this.totalRows);\n        this.viewport.scrollToOffset(initialOffset);\n\n        this.updateVisibleData(initialOffset);\n\n        this.scrollSubscription = this.viewport.elementScrolled().subscribe(async (ev: Event) => this.onScrolled(ev));\n\n        this.pageIndex.subscribe((page) => {this.onPageChange(page); this.onPageRequest(page);});\n        this.preloadPage.subscribe((page) => this.onPageRequest(page));\n\n        this.visibleData\n            .pipe(takeWhile(() => !this.ready.value))\n            .subscribe((data) => {\n                if (data.length > 0){\n                    this.ready.next(true);\n                }\n            }\n        );\n    }\n\n    setData(data: EsTableRow[]){\n        this.data = data;\n    }\n\n    readonly visibleData: BehaviorSubject<any[]> = new BehaviorSubject([]);\n\n    onScrolled(ev: Event){\n        this.updateVisibleData((ev?.currentTarget as HTMLElement)?.scrollTop);\n    }\n\n    updateVisibleData(offset?: number){\n        const viewportHeight = this.viewport?.elementRef?.nativeElement?.clientHeight ?? 720;\n        const rowsInViewport = Math.floor(viewportHeight / this.itemSize) + 1;\n\n        const scrollTop = offset ?? this.lastScrollTop;\n        this.lastScrollTop = scrollTop;\n        const start = Math.floor(scrollTop / this.itemSize);\n        const prevExtraData = start > (this.pageSize / 2) ? (this.pageSize / 2) : start;\n        const nextExtraData = (this.pageSize - start) > (this.pageSize / 2) ? (this.pageSize - start) : (this.pageSize / 2);\n        const slicedData = this.sliceData(start - prevExtraData, start + (rowsInViewport + nextExtraData));\n        this.offset = this.itemSize * (start - prevExtraData);\n        this.viewport.setRenderedContentOffset(this.offset);\n        const nextPage = Math.floor(start / this.pageSize);\n\n        const preloadOffset = this.attributes?.preloadOffset ?? 5;\n\n        const preloadPrevPage = (start % this.pageSize) - preloadOffset <= 0;\n        const preloadNextPage = this.pageSize - (start % this.pageSize) - Math.floor(viewportHeight / this.itemSize) - preloadOffset <= 0;\n\n        if (preloadPrevPage && this.pageIndex.value > 0){\n            this.preloadPage.next(this.pageIndex.value - 1);\n        }\n\n        if (preloadNextPage){\n            this.preloadPage.next(this.pageIndex.value + 1);\n        }\n\n        if (this.pageIndex.value !== nextPage){\n            this.pageIndex.next(nextPage);\n        }\n\n        this.visibleData.next(slicedData);\n    }\n\n    sliceData(start: number, end: number): any[]{\n        const slicedData = this.data.slice(start, end);\n        const emptyRows = [];\n        emptyRows.length = Math.min(end, this.totalRows) - start - slicedData.length || 0;\n        return [...slicedData, ...emptyRows];\n    }\n\n    onDestroy(){\n        this.scrollSubscription.unsubscribe();\n    }\n\n    connect(collectionViewer: import ('@angular/cdk/collections').CollectionViewer): Observable<any[] | ReadonlyArray<any>> {\n        return this.visibleData;\n    }\n\n    disconnect(collectionViewer: import ('@angular/cdk/collections').CollectionViewer): void {\n    }\n}\n","import {Component, Input} from '@angular/core';\nimport {TableIcons} from \"./table-icons.interface\";\n\n@Component({\n  selector: 'es-table-icons',\n  templateUrl: './table-icons.component.html',\n  styleUrls: ['./table-icons.component.css']\n})\nexport class TableIconsComponent {\n    @Input() icons: TableIcons[];\n}\n","<div>\n    <span class=\"icon\" *ngFor=\"let icon of icons\">\n            <ng-template #popoverContent>\n                <div *ngFor=\"let data of icon.data\">\n                    {{data}}\n                </div>\n            </ng-template>\n        <es-icon [color]=\"icon.color\"\n                 [showInPopover]=\"true\"\n                 [title]=\"icon.title\"\n                 [content]=\"icon.title == '' || icon.data == null || icon.data == '' || icon.data?.length == 0? null : popoverContent\"\n                 [themeColor]=\"icon.themeColor\"\n                 [icon]=\"icon.icon\">\n        </es-icon>\n    </span>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {TableImages} from \"./table-images.interface\";\n\n@Component({\n  selector: 'es-table-images',\n  templateUrl: './table-images.component.html',\n  styleUrls: ['./table-images.component.css']\n})\nexport class TableImagesComponent {\n    @Input() images: TableImages[];\n    style: string;\n}\n","<div class=\"img-container\" *ngFor=\"let image of images\">\n    <div class=\"img-inner\"\n         [style.min-width.px]=\"image.colWidth > 0 ? image.colWidth : null\"\n    >\n        <img class=\"img-icon\" [src]=\"image.img\">\n    </div>\n    {{image.title}}\n</div>\n","import {Component, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {DomSanitizer} from \"@angular/platform-browser\";\n\n@Component({\n  selector: 'es-table-html',\n  templateUrl: './table-html.component.html',\n  styleUrls: ['./table-html.component.css']\n})\nexport class TableHtmlComponent implements OnChanges {\n\n    @Input() html: any;\n    safeHtml;\n\n    constructor( private sanitizer: DomSanitizer, ) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['html']) {\n            this.safeHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n        }\n    }\n\n}\n","<div [innerHTML]=\"safeHtml\"></div>\n","import {\n    FixedSizeVirtualScrollStrategy,\n    VIRTUAL_SCROLL_STRATEGY\n} from \"@angular/cdk/scrolling\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges\n} from \"@angular/core\";\n\nexport class TableVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy {\n    constructor(itemSize: number, minBuffer: number, maxBuffer: number) {\n        super(itemSize, minBuffer, maxBuffer);\n    }\n}\n\nexport function factory (dir: TableVirtualScrollDirective) {\n    return dir.scrollStrategy;\n}\n\n@Directive({\n    selector: 'cdk-virtual-scroll-viewport[tableVirtualScrollStrategy]',\n    providers: [{\n        provide: VIRTUAL_SCROLL_STRATEGY,\n        useFactory: factory,\n        deps: [forwardRef(() => TableVirtualScrollDirective)]\n    }],\n})\nexport class TableVirtualScrollDirective implements OnChanges, AfterViewInit, OnDestroy{\n    constructor(private ref: ElementRef, private cd: ChangeDetectorRef) {}\n\n    @Input() rowHeight: number | 'auto' = 33;\n    @Input() minBuffer: number = 1000;\n    @Input() maxBuffer: number = 2000;\n    scrollStrategy: TableVirtualScrollStrategy = new TableVirtualScrollStrategy(33, this.minBuffer, this.maxBuffer);\n    private mutationObserver?: MutationObserver;\n    private measuredRowHeight = 33;\n\n    ngOnChanges(changes: SimpleChanges) {\n        if ('rowHeight' in changes || 'minBuffer' in changes || 'maxBuffer' in changes) {\n            this.applyStrategySize();\n            if ('rowHeight' in changes) {\n                this.startAutoRowHeightSync();\n            }\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.applyStrategySize();\n        this.startAutoRowHeightSync();\n    }\n\n    ngOnDestroy(): void {\n        this.mutationObserver?.disconnect();\n    }\n\n    private applyStrategySize(): void {\n        const itemSize = this.getItemSize();\n        this.scrollStrategy.updateItemAndBufferSize(itemSize, this.minBuffer, this.maxBuffer);\n    }\n\n    private getItemSize(): number {\n        return this.measuredRowHeight;\n    }\n\n    private startAutoRowHeightSync(): void {\n        this.measureAndUpdateRowHeight();\n        this.mutationObserver?.disconnect();\n        this.mutationObserver = new MutationObserver(() => this.measureAndUpdateRowHeight());\n        this.mutationObserver.observe(this.ref.nativeElement, {childList: true, subtree: true});\n    }\n\n    private measureAndUpdateRowHeight(): void {\n        const row = this.ref.nativeElement.querySelector('.es-table-row, tr.mat-row') as HTMLElement | null;\n        const nextHeight = row?.getBoundingClientRect()?.height ?? 0;\n        if (nextHeight > 0 && Math.abs(this.measuredRowHeight - nextHeight) >= 1) {\n            this.measuredRowHeight = nextHeight;\n            this.applyStrategySize();\n            this.cd.markForCheck();\n        }\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy, ChangeDetectorRef,\n    Component, DoCheck,\n    ElementRef,\n    EventEmitter,\n    Input, IterableDiffer, IterableDiffers, OnChanges,\n    OnInit,\n    Output, Renderer2, SimpleChanges, TemplateRef,\n    ViewChild\n} from \"@angular/core\";\nimport {\n    EsTablePageData,\n    EsTableRow,\n    EsTableSetup,\n    EsTableSetupColumn,\n    TableRowButton\n} from \"./model/es-table.interface\";\nimport {MatPaginator, PageEvent} from \"@angular/material/paginator\";\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\nimport {EsTableSpecialCellType} from \"./model/cell-type.enum\";\nimport {CdkDragDrop, moveItemInArray} from \"@angular/cdk/drag-drop\";\nimport {CdkVirtualScrollViewport, VIRTUAL_SCROLL_STRATEGY} from \"@angular/cdk/scrolling\";\nimport {TableVirtualDataSource} from \"./components/table-virtual-data-source\";\nimport {DataSource} from \"@angular/cdk/collections\";\nimport {MatTableDataSource} from \"@angular/material/table\";\n\n@Component({\n    selector: 'es-table',\n    templateUrl: './es-table.component.html',\n    styleUrls: ['./es-table.component.scss'],\n    animations: [\n        trigger('detailExpand', [\n            state('collapsed', style({height: '0px', minHeight: '0'})),\n            state('expanded', style({height: '*'})),\n            transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EsTableComponent implements OnInit, AfterViewInit, DoCheck{\n\n    CellType = EsTableSpecialCellType;\n\n    @Input() tableSetup: EsTableSetup;\n    @Input() rowData: EsTableRow[];\n    @Input() rowCount: number;\n    @Input() minColumnWidth = 20;\n    @Input() columnWidthOverride: {[k: string]: number};\n    @Input() reorderable = false;\n    @Input() columnOrderOverride: string[];\n    @Input() virtualScroll = true;\n    @Input() showLoadingIndicator: boolean = false;\n    @Input() footerButtons: TemplateRef<any>;\n    @Input() autoSelectFirstRow: boolean = false;\n    @Input() pageSize = 50;\n    @Input() rowSize = 33;\n    @Input() headerSize = 32;\n    @Input() footerSize = 40;\n    @Input() rowExpandedSize = 72;\n    @Input() showRowDetail = true;\n    @Input() refreshInterval = 100;\n    @Input() minBuffer = 1000;\n    @Input() maxBuffer = 2000;\n    @Input() emptyRowMessage = \"There are no rows to be displayed.\"\n\n    @Output() rowClick = new EventEmitter<any>();\n    @Output() actionButton = new EventEmitter<TableRowButton>();\n    @Output() pageChange = new EventEmitter<number>();\n    @Output() reorder = new EventEmitter<string[]>();\n    @Output() columnResize = new EventEmitter<{[k: string]: number}>();\n    @Output() requestPage = new EventEmitter<number>();\n\n    isExpansionDetailRow = (_: number, row: EsTableRow): boolean => {\n        return this.showRowDetail && this.hiddenColumns.length > 0 && this.expandedRow === row;\n    };\n\n    allColumns: string[] = [];\n    displayedColumns: string[] = [];\n    hiddenColumns: string[] = [];\n    columnWidths: {[k: string]: number} = {};\n    tempColumnWidths: {[k: string]: number} = {};\n    columnSetup: {[k: string]: EsTableSetupColumn} = {};\n\n    dataSource: DataSource<any>;\n    tableWidth: number;\n    rerenderTimeout: any;\n    expandedRow: any = null;\n    selectedRow: any;\n\n    currentResizedColumn: string;\n    resizing: boolean = false;\n    resizingStartX: number;\n    resizingStartWidth: number;\n    resizingRight: boolean;\n    resizingMoveEvent: () => void;\n    resizingUpEvent: () => void;\n\n    reordering = false;\n    rerenderInterval: any;\n\n    hasReloaded = false;\n    private selectedFirstRow = false;\n\n    iterableDiffer: IterableDiffer<any>;\n\n    @ViewChild('matTableContainer', {static: true}) matTableContainer: ElementRef;\n    @ViewChild(MatPaginator) paginator: MatPaginator;\n    @ViewChild(CdkVirtualScrollViewport, {static: true}) viewport: CdkVirtualScrollViewport;\n\n    constructor(\n        private cd: ChangeDetectorRef,\n        private renderer: Renderer2,\n        private iterableDiffers: IterableDiffers,\n        private el: ElementRef\n    ) {\n        this.iterableDiffer = iterableDiffers.find([]).create(null);\n    }\n\n    ngOnInit() {\n        this.rowCount ??= this.tableSetup.records;\n        this.dataSource = this.initDataSource();\n        this.createColumns();\n        this.renderColumns();\n        this.rerenderStyles();\n        if (this.virtualScroll) {\n            this.rerenderInterval =\n                setInterval(() => (this.dataSource as TableVirtualDataSource)?.updateVisibleData(), this.refreshInterval);\n        }\n    }\n\n    ngAfterViewInit() {\n        this.updateColumnWidths();\n    }\n\n    ngDoCheck() {\n        if (!this.virtualScroll || (this.hasReloaded && this.rowData.length === 0)) return;\n        this.hasReloaded = false;\n        const rowChanges = this.iterableDiffer.diff(this.rowData);\n        if (rowChanges && this.dataSource){\n            (this.dataSource as TableVirtualDataSource)?.updateVisibleData();\n            this.cd.detectChanges();\n            this.cd.markForCheck();\n\n            if (!this.selectedFirstRow && this.autoSelectFirstRow && this.rowData.length > 0){\n                this.selectFirstRow();\n                this.selectedFirstRow = true;\n            }\n        }\n    }\n\n    initDataSource(initialOffset = 0): DataSource<any> {\n        let dataSource;\n        if (this.virtualScroll) {\n            dataSource = new TableVirtualDataSource(\n                this.rowData, this.viewport, this.rowSize, this.pageSize, this.rowCount, initialOffset,\n                (page) => this.handlePageChange(page),\n                (page) => this.handlePageRequest(page));\n\n            (dataSource as TableVirtualDataSource).visibleData.subscribe(() => this.rerender());\n        } else {\n            dataSource = new MatTableDataSource(this.rowData);\n        }\n        return dataSource;\n    }\n\n    createColumns(): void {\n        this.tableSetup.columns.forEach(col => {\n            this.columnSetup[col.id] = col;\n        });\n\n        this.allColumns = Object.keys(this.columnSetup)\n            .filter(col => this.columnSetup[col].anVisibility != 0)\n            .map(col => this.columnSetup[col].id);\n\n        if (this.columnWidthOverride){\n            this.columnWidths = {...this.columnWidthOverride};\n            this.tempColumnWidths = {...this.columnWidthOverride};\n        } else {\n            this.allColumns.forEach(col => {\n                this.columnWidths[col] = this.columnSetup[col].width;\n                this.tempColumnWidths[col] = this.columnSetup[col].width;\n            });\n        }\n    }\n\n    renderColumns(): void {\n        const containerWidth = this.matTableContainer?.nativeElement?.offsetWidth;\n        this.tableWidth = containerWidth && containerWidth > 0 ? containerWidth : 1920;\n        this.displayedColumns = Object.keys(this.columnSetup)\n            .filter(col => this.columnSetup[col].anVisibility != 0 && this.columnSetup[col].anVisibility < this.tableWidth)\n            .map(col => this.columnSetup[col].id);\n        this.hiddenColumns = this.allColumns.filter(col => !this.displayedColumns.includes(col));\n\n        if (this.columnOrderOverride) {\n            this.reorderColumns(this.columnOrderOverride);\n        }\n\n        if (this.showRowDetail && this.hiddenColumns.length !== 0){\n            this.displayedColumns = ['row-expand', ...this.displayedColumns];\n        }\n\n        this.cd.detectChanges();\n        this.cd.markForCheck();\n    }\n\n    onResize(e: any): void{\n        clearTimeout(this.rerenderTimeout);\n        this.rerenderTimeout = setTimeout(() => {\n            this.renderColumns();\n            this.updateColumnWidths();\n        }, 10);\n    }\n\n    handleRowClick(row: any): void{\n        if (this.selectedRow === row){\n            this.selectedRow = undefined;\n        } else {\n            this.selectedRow = row;\n        }\n        this.rowClick.emit(row);\n        this.cd.detectChanges();\n    }\n\n    handleRowExpand(e: MouseEvent, row: any): void{\n        e.stopPropagation();\n        this.expandedRow = this.expandedRow === row ? null : row;\n        this.cd.detectChanges();\n    }\n\n    getRowClass(row: EsTableRow): string{\n        return row?.rowClass ?? '';\n    }\n\n    isSpecialCell(cellData: any): boolean{\n        return typeof cellData === 'object' && cellData !== null && (cellData as object).hasOwnProperty('type');\n    }\n\n    handleRowButtonAction(e: any, row: any): void{\n        this.actionButton.emit({button: e, row: row});\n    }\n\n    reloadData(): void{\n        this.hasReloaded = true;\n        const currentOffset = this.viewport?.elementRef?.nativeElement?.scrollTop ?? 0;\n        if (this.virtualScroll) {\n            (this.dataSource as TableVirtualDataSource).onDestroy();\n        }\n        const dataSource = this.initDataSource(currentOffset);\n        if (this.virtualScroll) {\n            (dataSource as TableVirtualDataSource).ready.subscribe(() => {\n                this.dataSource = dataSource;\n                this.cd.markForCheck();\n                this.cd.detectChanges();\n            })\n        } else {\n            this.dataSource = dataSource;\n        }\n        this.cd.markForCheck();\n        this.cd.detectChanges();\n    }\n\n    getColumnWidth(column: string): number{\n        return document.getElementById(`es_table_column_header_${column}`).offsetWidth;\n    }\n\n    getColumnRect(column: string): DOMRect{\n        return document.getElementById(`es_table_column_header_${column}`).getBoundingClientRect();\n    }\n\n    getHeaderOffset(): number{\n        return this.viewport.getOffsetToRenderedContentStart();\n    }\n\n    onResizeColumn(e: MouseEvent, column: string): void{\n        this.updateResizingDirection(e, column);\n        this.currentResizedColumn = column;\n        this.resizing = true;\n        this.resizingStartX = e.pageX;\n        this.resizingStartWidth = (e.target as HTMLSpanElement)?.parentElement?.clientWidth;\n        e.preventDefault();\n        this.resizeMove(column);\n    }\n\n    private updateResizingDirection(e: MouseEvent, column: string): void{\n        const cellSize = this.getColumnRect(column);\n        const index = this.displayedColumns.indexOf(column);\n        this.resizingRight = (index === 0) || (Math.abs(e.pageX - cellSize.right) < cellSize.width / 2 && index !== this.displayedColumns.length - 1);\n    }\n\n    resizeMove(column: string): void{\n        this.resizingMoveEvent = this.renderer.listen('document', 'mousemove', (e) => {\n            if (this.resizing && e.buttons) {\n                const dx = (this.resizingRight) ? (e.pageX - this.resizingStartX) : (-e.pageX + this.resizingStartX);\n                const width = this.resizingStartWidth + dx;\n                if (this.currentResizedColumn === column && width > this.minColumnWidth) {\n                    this.setDesiredColumnWidth(column, width);\n                }\n            }\n        });\n        this.resizingUpEvent = this.renderer.listen('document', 'mouseup', (e) => {\n            if (this.resizing){\n                this.resizing = false;\n                this.currentResizedColumn = undefined;\n                this.columnWidths = {...this.tempColumnWidths};\n                this.columnResize.emit(this.columnWidths);\n                this.resizingMoveEvent();\n                this.resizingUpEvent();\n            }\n        });\n    }\n\n    setDesiredColumnWidth(column: string, width: number): void{\n        const original = this.tempColumnWidths[column];\n        if (!original){\n            this.tempColumnWidths[column] = width;\n        }\n        const dx = width - original;\n        const index = this.displayedColumns.indexOf(column);\n        if (dx !== 0){\n            const j = this.resizingRight ? index + 1 : index - 1;\n            const jCol = this.displayedColumns[j];\n            const jWidth = this.tempColumnWidths[jCol] ?? this.getColumnWidth(jCol);\n            const newWidth = jWidth - dx;\n            if (newWidth > this.minColumnWidth){\n                this.tempColumnWidths[column] = width;\n                this.tempColumnWidths[jCol] = newWidth;\n                this.updateColumnWidths([column, jCol]);\n            }\n        }\n    }\n\n    updateColumnWidths(columns?: string[]): void{\n        if (!columns) columns = this.displayedColumns;\n        columns.forEach(col => {\n            const elements = Array.from(document.getElementsByClassName(`mat-column-${col}`));\n            elements.forEach((element: HTMLDivElement) => {\n                element.style.width = `${this.tempColumnWidths[col]}px`;\n                element.style.maxWidth = `${this.tempColumnWidths[col]}px`;\n            });\n        });\n        this.cd.detectChanges();\n        this.cd.markForCheck();\n    }\n\n    rerenderStyles(): void{\n        this.el.nativeElement.style.setProperty('--row-height', `${this.rowSize}px`);\n        this.el.nativeElement.style.setProperty('--row-detail-height', `${this.rowExpandedSize}px`);\n        this.el.nativeElement.style.setProperty('--header-height', `${this.headerSize}px`);\n        this.el.nativeElement.style.setProperty('--footer-height', `${this.footerSize}px`);\n    }\n\n    rerender(): void{\n        this.cd.detectChanges();\n        this.cd.markForCheck();\n    }\n\n    handleUnlockReordering(): void{\n        this.reordering = !this.reordering;\n    }\n\n    onReorderDrop(e: CdkDragDrop<string[]>): void{\n        const hasRowExpand = this.displayedColumns.includes('row-expand');\n        moveItemInArray(this.displayedColumns, e.previousIndex + (hasRowExpand ? 1 : 0), e.currentIndex + (hasRowExpand ? 1 : 0));\n        let sortedColumns = [...this.displayedColumns.filter(col => !hasRowExpand || col !== 'row-expand')];\n        this.allColumns.forEach((column, index) => {\n            if (!sortedColumns.includes(column)){\n                sortedColumns.splice(index, 0, column);\n            }\n        });\n        this.reorder.emit(sortedColumns);\n    }\n\n    reorderColumns(template: string[]): void{\n        this.displayedColumns = this.displayedColumns\n            .sort((a, b) => {\n                const iA = template.indexOf(a);\n                const iB = template.indexOf(b);\n                return iA !== -1 && iB !== -1 ? iA - iB : this.displayedColumns.indexOf(a) - this.displayedColumns.indexOf(b);\n            });\n    }\n\n    changePage(page: PageEvent): void{\n        this.viewport.scrollToOffset(page.pageIndex * page.pageSize * this.rowSize);\n        if (this.virtualScroll) {\n            (this.dataSource as TableVirtualDataSource)?.updateVisibleData();\n        }\n        this.cd.markForCheck();\n    }\n\n    handlePageChange(page: number): void{\n        this.pageChange.emit(page);\n    }\n\n    handlePageRequest(page: number): void{\n        this.requestPage.emit(page);\n    }\n\n    selectFirstRow(): void{\n        this.selectedRow = this.rowData[0];\n        this.rowClick.emit(this.rowData[0]);\n        this.cd.detectChanges();\n    }\n}\n","<div #matTableContainer class=\"es-table-container\" (window:resize)=\"onResize($event)\">\n    <div *ngIf=\"reorderable\" class=\"es-table-reorder-lock\">\n        <button class=\"reorder-lock\" mat-icon-button aria-label=\"Lock/Unlock reorder\" (click)=\"handleUnlockReordering()\">\n            <mat-icon>{{reordering ? 'lock_open' : 'lock'}}</mat-icon>\n        </button>\n    </div>\n    <cdk-virtual-scroll-viewport tableVirtualScrollStrategy [rowHeight]=\"this.rowSize\" [minBuffer]=\"minBuffer\" [maxBuffer]=\"maxBuffer\">\n            <table mat-table [dataSource]=\"dataSource\" multiTemplateDataRows\n                   cdkDropList cdkDropListOrientation=\"horizontal\" (cdkDropListDropped)=\"onReorderDrop($event)\" >\n                <ng-container [matColumnDef]=\"column\" *ngFor=\"let column of allColumns; let i = index\">\n                    <th mat-header-cell *matHeaderCellDef cdkDrag [cdkDragDisabled]=\"!reordering\" [id]=\"'es_table_column_header_' + column\"\n                        [style.top.px]=\"-getHeaderOffset()\"\n                        [style.width.px]=\"columnWidths[column]\" [style.maxWidth.px]=\"columnWidths[column]\">\n                        <mat-icon *ngIf=\"reordering\" cdkDragHandle class=\"es-table-drag-handle\">drag_indicator</mat-icon>\n                        {{columnSetup[column].label}}\n                        <span *ngIf=\"i !== displayedColumns.length - 1\" class=\"resize-handle\" (mousedown)=\"onResizeColumn($event, column)\"></span>\n                    </th>\n                    <td mat-cell *matCellDef=\"let row\"\n                        [style.width.px]=\"columnWidths[column]\" [style.maxWidth.px]=\"columnWidths[column]\">\n                        <ng-container *ngIf=\"row && isSpecialCell(row[column])\"\n                                      [ngTemplateOutlet]=\"specialCellType\"\n                                      [ngTemplateOutletContext]=\"{ row: row, data: row[column], width: getColumnWidth(column) }\"\n                        ></ng-container>\n                        <ng-container *ngIf=\"row && !isSpecialCell(row[column])\">\n                            {{row[column]}}\n                        </ng-container>\n                    </td>\n                </ng-container>\n\n                <ng-container matColumnDef=\"row-expand\">\n                    <th mat-header-cell *matHeaderCellDef [style.top.px]=\"-getHeaderOffset()\"></th>\n                    <td mat-cell *matCellDef=\"let row\">\n                        <button *ngIf=\"row\" class=\"row-expand-button\" mat-icon-button aria-label=\"Expand row detail\" (click)=\"handleRowExpand($event, row)\">\n                            <mat-icon>keyboard_arrow_right</mat-icon>\n                        </button>\n                    </td>\n                </ng-container>\n\n                <ng-container matColumnDef=\"expandedDetail\">\n                    <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"displayedColumns.length\" [class.expanded]=\"expandedRow && expandedRow === row\">\n                        <div *ngIf=\"row\" class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\">\n                            <ng-container *ngFor=\"let column of hiddenColumns\">\n                                <ng-container *ngIf=\"!columnSetup[column].detailHidden\">\n                                    <div class=\"row-detail-header\">{{columnSetup[column].label}}:</div>\n                                    <div class=\"row-detail-content\">{{row[column]}}</div>\n                                </ng-container>\n                            </ng-container>\n                        </div>\n                    </td>\n                </ng-container>\n\n                <ng-container matColumnDef=\"progress\">\n                    <th mat-header-cell *matHeaderCellDef [attr.colspan]=\"displayedColumns.length\" [style.top.px]=\"-getHeaderOffset() + headerSize\">\n                        <mat-progress-bar *ngIf=\"showLoadingIndicator\" mode=\"indeterminate\"> </mat-progress-bar>\n                    </th>\n                </ng-container>\n\n                <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"\n                    class=\"es-table-header\"\n                ></tr>\n                <tr mat-header-row class=\"progress\" *matHeaderRowDef=\"['progress']; sticky: true\"></tr>\n                <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n                    class=\"es-table-row\"\n                    [class]=\"getRowClass(row)\"\n                    [class.row-expanded]=\"expandedRow && expandedRow === row\"\n                    [class.active]=\"selectedRow && selectedRow === row\"\n                    (click)=\"handleRowClick(row)\"\n                ></tr>\n                <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']; when: isExpansionDetailRow\" class=\"es-table-row-detail\"></tr>\n            </table>\n        <div *ngIf=\"dataSource  && !showLoadingIndicator && rowCount <= 0 && rowData.length <= 0\" class=\"empty-row\">{{emptyRowMessage}}</div>\n    </cdk-virtual-scroll-viewport>\n    <div class=\"es-table-footer\">\n        <div class=\"es-table-footer-buttons\">\n            <ng-container *ngTemplateOutlet=\"footerButtons\"></ng-container>\n        </div>\n        <mat-paginator\n            *ngIf=\"virtualScroll\"\n            [length]=\"rowCount\"\n            [pageSize]=\"pageSize\"\n            [hidePageSize]=\"true\"\n            [pageIndex]=\"$any(this.dataSource)?.pageIndex.value\"\n            (page)=\"changePage($event)\"\n            [showFirstLastButtons]=\"true\"\n        ></mat-paginator>\n    </div>\n</div>\n\n<ng-template #specialCellType let-row='row' let-data='data' let-width='width'>\n    <div *ngIf=\"data.type == CellType.TEXT\"> {{data.items}}</div>\n\n    <es-buttons *ngIf=\"data.type == CellType.BUTTONS\"\n                [parentWidth]=\"width\"\n                [buttons]=\"data.items\"\n                (click)=\"$event.stopPropagation()\"\n                (buttonClick)=\"handleRowButtonAction($event, row)\"\n                (reload)=\"reloadData()\">\n    </es-buttons>\n\n    <es-table-icons *ngIf=\"data.type == CellType.ICONS\" [icons]=\"data.items\"></es-table-icons>\n    <es-table-images *ngIf=\"data.type == CellType.IMAGES\" [images]=\"data.items\"></es-table-images>\n    <es-table-html *ngIf=\"data.type == CellType.HTML\" [html]=\"data.items\"></es-table-html>\n</ng-template>\n","import {Injectable} from '@angular/core';\n\n@Injectable()\nexport class EsTableService {\n    constructor() { }\n\n    static fromJson(json: {}, gridUrl: string): any {\n\n    }\n\n    static pagedDataFromJson(json: {}, grid: any, page: any) {\n\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {EsTableComponent} from './es-table.component';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {EsTableService} from './es-table.service';\nimport {MatSelectModule} from \"@angular/material/select\";\nimport {MatTableModule} from \"@angular/material/table\";\nimport {MatPaginatorModule} from \"@angular/material/paginator\";\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {EsButtonsModule} from \"@eurosat/buttons\";\nimport { TableIconsComponent } from './components/table-icons/table-icons.component';\nimport {EsIconModule} from \"@eurosat/icon\";\nimport { TableImagesComponent } from './components/table-images/table-images.component';\nimport { TableHtmlComponent } from './components/table-html/table-html.component';\nimport {DragDropModule} from \"@angular/cdk/drag-drop\";\nimport {ScrollingModule} from \"@angular/cdk/scrolling\";\nimport {MatProgressBarModule} from \"@angular/material/progress-bar\";\nimport {TableVirtualScrollDirective, TableVirtualScrollStrategy} from \"./components/table-virtual-scroll\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatInputModule,\n        MatTooltipModule,\n        MatCheckboxModule,\n        MatButtonModule,\n        MatMenuModule,\n        TranslateModule.forChild(),\n        MatProgressSpinnerModule,\n        MatSelectModule,\n        MatTableModule,\n        MatPaginatorModule,\n        MatIconModule,\n        EsButtonsModule,\n        EsIconModule,\n        DragDropModule,\n        ScrollingModule,\n        MatProgressBarModule\n    ],\n    declarations: [\n        EsTableComponent,\n        TableIconsComponent,\n        TableImagesComponent,\n        TableHtmlComponent,\n        TableVirtualScrollDirective\n    ],\n    exports: [\n        EsTableComponent,\n    ],\n    providers: [EsTableService],\n})\nexport class EsTableModule {\n\n}\n","export class EsTableTranslates {\n\n    static FILTERS = 'an.es-grid.filters';\n    static SETTINGS = 'an.es-grid.settings';\n    static TOTAL = 'an.es-grid.total';\n    static CHECK_ALL = 'an.es-grid.check.all';\n    static UNCHECK_ALL = 'an.es-grid.uncheck.all';\n    static CHECK_AMONG_CHOSEN_ONES = 'an.es-grid.checkAmongTheChosenOnes';\n    static SAVE = 'an.es-grid.save';\n    static EXPAND_COLLAPSE_GROUP = 'an.es-grid.expand.collapse.group';\n    static NO_RECORDS = 'an.es-grid.no.records';\n    static SUCCESS_SAVE = 'an.es-grid.success.save';\n    static SEARCHING = 'an.es-grid.searching';\n    static CHECK_UNCHECK_ALL = 'an.es-grid.check.uncheck.all';\n    static CUSTOM_ORDER = 'an.es-grid.custom.order';\n    static NEW = 'an.es-grid.new';\n    static ITEMS_PER_PAGE = 'an.es-grid.items.per.page';\n\n    defaults = {\n        [EsTableTranslates.FILTERS]: 'Filters',\n        [EsTableTranslates.SETTINGS]: 'Settings',\n        [EsTableTranslates.TOTAL]: 'Total',\n        [EsTableTranslates.CHECK_ALL]: 'Check all',\n        [EsTableTranslates.UNCHECK_ALL]: 'Uncheck all',\n        [EsTableTranslates.CHECK_AMONG_CHOSEN_ONES]: 'Check all between selected',\n        [EsTableTranslates.SAVE]: 'Save',\n        [EsTableTranslates.EXPAND_COLLAPSE_GROUP]: 'Expand/Collapse Group',\n        [EsTableTranslates.NO_RECORDS]: 'No records were found.',\n        [EsTableTranslates.SUCCESS_SAVE]: 'Successfully saved',\n        [EsTableTranslates.SEARCHING]: 'Searching',\n        [EsTableTranslates.CHECK_UNCHECK_ALL]: 'Check/Uncheck all',\n        [EsTableTranslates.CUSTOM_ORDER]: 'Custom order',\n        [EsTableTranslates.NEW]: 'New',\n        [EsTableTranslates.ITEMS_PER_PAGE]: 'Items per page',\n    };\n\n    static getDefaults() {\n        const self = new EsTableTranslates;\n        return self.defaults;\n    }\n}\n","export enum ColumnVisibility {\n    HIDDEN = 0,\n    DESKTOP,\n    TABLET,\n    MOBILE\n}\n","export class EsTableParams {\n    static SORT_INDEX               = 'sidx';\n    static SORT_DIRECTION           = 'sord';\n    static SORT_TABLE_ID            = '_tableId';\n    static FILTERS                  = 'filters';\n}\n","export enum EsTableConsts {\n    ROW_EXPAND = 'row-expand',\n\n}\n","import {DataSource} from '@angular/cdk/collections';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {EsTablePageData, EsTableRow} from \"../model/es-table.interface\";\nimport {Subject} from \"rxjs/internal/Subject\";\n\ninterface TablePagedDataSourceAttributes {\n    preloadOffset?: number;\n}\n\nexport class TablePagedDataSource extends DataSource<any> {\n    private data: any[];\n\n    loadedPages = new Set<number>();\n    pageIndex = new BehaviorSubject(0);\n    offset = 0;\n    isLoading = new BehaviorSubject(true);\n    preloadPage: Subject<number> = new Subject();\n\n    constructor(private pageRetriever: (number) => Observable<EsTablePageData>,\n                private viewport: CdkVirtualScrollViewport,\n                private itemSize: number,\n                private pageSize: number,\n                private totalRows: number,\n                private attributes?: TablePagedDataSourceAttributes\n    ) {\n        super();\n        this.data = [];\n\n        this.viewport.scrollToOffset(0);\n        this.viewport.setTotalContentSize(this.itemSize * this.totalRows);\n\n        this.pageRetriever(0).subscribe((data) => {\n            this.setPageData(data.rows, data.page);\n            this.updateVisibleData();\n            this.isLoading.next(false);\n            this.loadedPages.add(0);\n        })\n\n        // async?\n        this.viewport.elementScrolled().subscribe(async (ev: any) => this.updateVisibleData(ev));\n\n        this.pageIndex.subscribe((page) => this.getPageData(page));\n        this.preloadPage.subscribe((page) => this.getPageData(page));\n    }\n\n    readonly visibleData: BehaviorSubject<any[]> = new BehaviorSubject([]);\n\n    getPageData(page: number): void{\n        if (this.loadedPages.has(page)) return;\n        this.isLoading.next(true);\n        this.pageRetriever(page).subscribe((data) => {\n            this.setPageData(data.rows, data.page);\n            this.isLoading.next(false);\n            this.loadedPages.add(page);\n        });\n    }\n\n    setPageData(data: EsTableRow[], page: number){\n        data.forEach((row, i) => {\n            this.data[page * this.pageSize + i] = row;\n        });\n        this.updateVisibleData();\n    }\n\n    updateVisibleData(ev?: any){\n        const scrollTop = ev?.currentTarget?.scrollTop ?? this.viewport?.elementRef?.nativeElement?.scrollTop ?? 0;\n        const start = Math.floor(scrollTop / this.itemSize);\n        const prevExtraData = start > (this.pageSize / 2) ? (this.pageSize / 2) : start;\n        const slicedData = this.data.slice(start - prevExtraData, start + (this.pageSize - prevExtraData));\n        this.offset = this.itemSize * (start - prevExtraData);\n        this.viewport.setRenderedContentOffset(this.offset);\n        const nextPage = Math.floor(start / this.pageSize);\n\n        const viewportHeight = this.viewport?.elementRef?.nativeElement?.clientHeight ?? 720;\n        const preloadOffset = this.attributes?.preloadOffset ?? 5;\n\n        const preloadPrevPage = (start % this.pageSize) - preloadOffset <= 0;\n        const preloadNextPage = this.pageSize - (start % this.pageSize) - Math.floor(viewportHeight / this.itemSize) - preloadOffset <= 0;\n\n        if (preloadPrevPage && this.pageIndex.value > 0){\n            this.preloadPage.next(this.pageIndex.value - 1);\n        }\n\n        if (preloadNextPage){\n            this.preloadPage.next(this.pageIndex.value + 1);\n        }\n\n        if (this.pageIndex.value !== nextPage){\n            this.pageIndex.next(nextPage);\n        }\n\n        this.visibleData.next(slicedData);\n    }\n\n    connect(collectionViewer: import ('@angular/cdk/collections').CollectionViewer): Observable<any[] | ReadonlyArray<any>> {\n        return this.visibleData;\n    }\n\n    disconnect(collectionViewer: import ('@angular/cdk/collections').CollectionViewer): void {\n    }\n}\n","/*\n * Public API Surface of table\n */\n\nexport * from './lib/es-table.component';\nexport * from './lib/es-table.module';\nexport * from './lib/es-table.service';\nexport * from './lib/es-table.translates';\n\nexport * from './lib/model/cell-type.enum';\nexport * from './lib/model/column-visibility.enum';\nexport * from './lib/model/es-table.interface';\nexport * from './lib/model/es-table.params';\nexport * from './lib/model/es-table.consts';\n\nexport * from './lib/components/table-paged-data-source';\nexport * from './lib/components/table-virtual-data-source';\nexport * from './lib/components/table-virtual-scroll';\n\nexport * from './lib/components/table-html/table-html.component';\nexport * from './lib/components/table-icons/table-icons.component';\nexport * from './lib/components/table-icons/table-icons.interface';\nexport * from './lib/components/table-images/table-images.component';\nexport * from './lib/components/table-images/table-images.interface';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i10.TableIconsComponent","i11.TableImagesComponent","i12.TableHtmlComponent","i13.TableVirtualScrollDirective"],"mappings":"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"}