libey-ng-component-library 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -223,7 +223,8 @@
223
223
  LibeyNgTableComponent.prototype.pageRange = function () {
224
224
  var start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));
225
225
  var end = Math.min(this.totalPages, start + this.maxPageButtons - 1);
226
- var startFinish = end - this.maxPageButtons + 1;
226
+ var startPreFinish = end - this.maxPageButtons + 1;
227
+ var startFinish = startPreFinish < 1 ? 1 : startPreFinish;
227
228
  return Array.from({ length: end - startFinish + 1 }, function (_, i) { return startFinish + i; });
228
229
  };
229
230
  LibeyNgTableComponent.prototype.goToPage = function (page) {
@@ -1 +1 @@
1
- {"version":3,"file":"libey-ng-component-library.umd.js","sources":["../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.service.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.component.ts","../../../projects/libey-ng-component-library/src/lib/table/directives/libey-column.directive.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.html","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.module.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.module.ts","../../../projects/libey-ng-component-library/src/public-api.ts","../../../projects/libey-ng-component-library/src/libey-ng-component-library.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibeyNgComponentLibraryService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-libey-ngComponent-library',\n template: `\n <p>\n libey-ng-component-library works!\n </p>\n `,\n styles: [\n ]\n})\nexport class LibeyNgComponentLibraryComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'libey-ng-column'\r\n})\r\nexport class LibeyColumnDirective {\r\n @Input() header!: string;\r\n @Input() property!: string;\r\n @Input() width!: number;\r\n @Input() arrayMap?: string;\r\n @Input() isArray?: boolean;\r\n @Input() expandable?: boolean;\r\n @Input() class?: string;\r\n @Input() childTableTemplate: TemplateRef<any>;\r\n @Input() isAutoClose: (item: any) => boolean = () => true;\r\n @ContentChild(TemplateRef) cellTemplate!: TemplateRef<any>;\r\n}","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\ninterface IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\nclass DataKey implements IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'libey-ng-table',\r\n templateUrl: './libey-ng-table.component.html',\r\n styleUrls: ['./libey-ng-table.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LibeyNgTableComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() set data(value: any[]) {\r\n this._data = value;\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n @Input() pageSize: number = 10;\r\n @Input() totalSize: number = 0;\r\n @Input() maxPageButtons: number = 5;\r\n @Input() height: number;\r\n @Input() expandable: boolean = false;\r\n @Input() viewPaginate: boolean = true;\r\n @Input() childTableTemplate!: TemplateRef<any>;\r\n @Input() headerfixed: boolean = false;\r\n @Input() class: string;\r\n @Input() internalPagination: boolean = true;\r\n @Output() pageChange = new EventEmitter<number>();\r\n \r\n @ContentChildren(LibeyColumnDirective) columns!: QueryList<LibeyColumnDirective>;\r\n\r\n rowExpandable: boolean[] = [];\r\n rowExpandableDetail: IDataKey[] = [];\r\n currentPage: number = 1;\r\n paginatedData: any[] = [];\r\n _data: any[] = [];\r\n columnWidths: number[] = [];\r\n resizingColumnIndex: number | null = null;\r\n startX: number = 0;\r\n startWidth: number = 0;\r\n @ViewChild('tableContainer') tableContainer!: ElementRef;\r\n @ViewChild('table') tableElement!: ElementRef;\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes.data.previousValue){\r\n changes.data.currentValue.forEach((value, index) => {\r\n var findData = this.rowExpandableDetail.find(x => x.dataKey == index);\r\n if(findData != null)\r\n findData.autoClose = value.autoClose;\r\n });\r\n this._data = changes.data.currentValue;\r\n this.updatePaginatedData();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.updatePaginatedData();\r\n }\r\n ngAfterViewInit() {\r\n this.initializeColumnWidths();\r\n // this.adjustTableWidth()\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeColumnWidths() {\r\n var padding = 31\r\n var widthDefault = 150\r\n this.columnWidths = this.columns.map(column => column.width);\r\n const containerWidth = this.tableContainer.nativeElement.offsetWidth;\r\n const autoColumns = this.columns.filter(column => column.width == null);\r\n const totalFixedWidth = this.columns.reduce((sum, column) =>\r\n column.width != null ? (sum + this.getWidthValue(column.width)) : sum, 0);\r\n const remainingWidth = containerWidth - (totalFixedWidth + (((this.columns.length - autoColumns.length) * padding)+ (this.expandable ? 61 : 0)));\r\n\r\n if (autoColumns.length > 0) {\r\n var autoColumnWidth = 0;\r\n if(remainingWidth < widthDefault)\r\n autoColumnWidth = widthDefault;\r\n else\r\n autoColumnWidth = Math.max(0, remainingWidth / autoColumns.length);\r\n autoColumns.forEach(column => column.width = autoColumnWidth- padding);\r\n }\r\n this.columnWidths = this.columns.map(column => column.width);\r\n }\r\n // adjustTableWidth() {\r\n // const totalWidth = this.columns.reduce((sum, column) => sum + this.getWidthValue(column.width), 0);\r\n // this.tableElement.nativeElement.style.width = `${totalWidth}px`;\r\n // }\r\n getWidthValue(width: number): number {\r\n return width === null ? 100 : width;\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalSize / this.pageSize);\r\n }\r\n\r\n getCellValue(item: any, column: LibeyColumnDirective): string {\r\n const value = this.getNestedValue(item, column.property);\r\n if (Array.isArray(value) && column.arrayMap) {\r\n return value.map(v => this.getNestedValue(v, column.arrayMap!)).join(', ');\r\n }\r\n return value;\r\n }\r\n\r\n private getNestedValue(obj: any, path: string): any {\r\n return path.split('.').reduce((o, key) => {\r\n if (o && typeof o === 'object' && key in o) {\r\n return o[key];\r\n }\r\n return undefined;\r\n }, obj);\r\n }\r\n\r\n private updatePaginatedData(): void {\r\n if(this.viewPaginate && this.internalPagination){\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.paginatedData = this.data.slice(start, end);\r\n }else{\r\n this.paginatedData = this.data;\r\n } \r\n }\r\n pageRange(): number[] {\r\n const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));\r\n const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);\r\n const startFinish = end - this.maxPageButtons + 1;\r\n return Array.from({length: end - startFinish + 1}, (_, i) => startFinish + i);\r\n }\r\n goToPage(page: number): void {\r\n this.currentPage = Math.max(1, Math.min(page, this.totalPages));\r\n if(this.internalPagination){ \r\n this.updatePaginatedData(); \r\n }else{\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n // hasChildren(row: any): boolean{\r\n // return Array.isArray(row.child) && row.child.length > 0;\r\n // }\r\n toggleRow(index: number){\r\n this.rowExpandable[index] = !this.rowExpandable[index];\r\n }\r\n toggleRowDetail(key: number, indexData: number, column: LibeyColumnDirective, data: any){\r\n if(column.expandable){\r\n var exist = this.rowExpandableDetail.find(x => x.key == key && x.dataKey == indexData);\r\n if(exist == null){\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => (x.key != key || x.dataKey != indexData) && x.autoClose == false);\r\n var item = new DataKey();\r\n item.key = key;\r\n item.dataKey = indexData;\r\n item.childTableTemplate = column.childTableTemplate;\r\n item.autoClose = column.isAutoClose(data);\r\n this.rowExpandableDetail.push(item);\r\n }else{\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => x.key != key || x.dataKey != indexData);\r\n }\r\n }\r\n }\r\n getChildren(fila: any): any[] {\r\n return fila.hijos || [];\r\n }\r\n onResizeStart(index: number, event: MouseEvent) {\r\n this.resizingColumnIndex = index;\r\n this.startX = event.pageX;\r\n this.startWidth = this.columnWidths[index];\r\n document.addEventListener('mousemove', this.onResizeMove);\r\n document.addEventListener('mouseup', this.onResizeEnd);\r\n }\r\n onResizeMove = (event: MouseEvent) => {\r\n if (this.resizingColumnIndex !== null) {\r\n const diff = event.pageX - this.startX;\r\n this.columnWidths[this.resizingColumnIndex] = Math.max(this.startWidth + diff, 50);\r\n\r\n }\r\n }\r\n onResizeEnd = () => {\r\n this.resizingColumnIndex = null;\r\n document.removeEventListener('mousemove', this.onResizeMove);\r\n document.removeEventListener('mouseup', this.onResizeEnd);\r\n }\r\n existRowExpandableDetail(key: number, indexData: number) : boolean{\r\n return this.rowExpandableDetail.filter(x => x.key == key && x.dataKey == indexData).length > 0;\r\n }\r\n viewRowExpandableDetail(indexData: number) :boolean{\r\n return this.rowExpandableDetail.filter(x => x.dataKey == indexData).length > 0;\r\n }\r\n findRowExpandableDetail(indexData: number) :TemplateRef<any>{\r\n var find = this.rowExpandableDetail.find(x => x.dataKey == indexData);\r\n if(find)\r\n return find.childTableTemplate; \r\n else\r\n return null;\r\n }\r\n}\r\n","<div class=\"table-container\" #tableContainer [style.height]=\"height == null ? 'auto':(height + 'px')\">\r\n <!-- <table cdkDropList (cdkDropListDropped)=\"drop($event)\"> -->\r\n <table #table [ngClass]=\"class\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"expandable\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\" style=\"width: 25px;\"></th>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <th [style.width]=\"columnWidths[i] == null ? 'auto':(columnWidths[i] + 'px')\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\">\r\n <span style=\"white-space: nowrap;\">{{ column.header }}</span>\r\n <div class=\"resize-handle\" (mousedown)=\"onResizeStart(i, $event)\"></div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"_data.length == 0\">\r\n <tr>\r\n <td [colSpan]=\"expandable ? (columns.length + 1) : (columns.length)\" class=\"text-center\">\r\n No existen datos disponibles\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginatedData.length != 0\">\r\n <ng-container *ngFor=\"let item of paginatedData; let a = index\">\r\n <tr>\r\n <td *ngIf=\"expandable\">\r\n <button (click)=\"toggleRow(a)\">\r\n <i [ngClass]=\"rowExpandable[a] ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </td>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <td [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container *ngIf=\"column.cellTemplate; else defaultCell\">\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: { $implicit: item }\"></ng-container>\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultCell>\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n {{ getCellValue(item, column) }}\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"viewRowExpandableDetail(a)\">\r\n <ng-container *ngTemplateOutlet=\"findRowExpandableDetail(a); context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <tr *ngIf=\"rowExpandable[a]\">\r\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\">\r\n <ng-container [ngTemplateOutlet]=\"childTableTemplate\"\r\n [ngTemplateOutletContext]=\"{ parentRow: item }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div *ngIf=\"viewPaginate && _data.length != 0\" class=\"pagination-controls\">\r\n <div class=\"d-align-center\">\r\n <label class=\"lbl-footer me-20px\"># Registros: {{this.totalSize}}</label>\r\n <label class=\"lbl-footer\"># Filas: {{this.pageSize}}</label>\r\n </div>\r\n <div>\r\n <button (click)=\"goToPage(1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-first-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(currentPage - 1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-previous-page\"></i>\r\n </button>\r\n <ng-container *ngFor=\"let page of pageRange()\">\r\n <button\r\n (click)=\"goToPage(page)\"\r\n [class.active]=\"currentPage === page\"\r\n [disabled]=\"currentPage === page\">\r\n {{ page }}\r\n </button>\r\n </ng-container>\r\n <button (click)=\"goToPage(currentPage + 1)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-next-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(totalPages)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-last-page\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n","// table.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LibeyNgTableComponent } from './libey-ng-table.component';\r\n\r\n@NgModule({\r\n declarations: [LibeyNgTableComponent, LibeyColumnDirective],\r\n imports: [CommonModule,FormsModule],\r\n exports: [LibeyNgTableComponent, LibeyColumnDirective]\r\n})\r\nexport class LibeyNgTableModule { }","import { NgModule } from '@angular/core';\nimport { LibeyNgComponentLibraryComponent } from './libey-ng-component-library.component';\nimport { LibeyNgTableComponent } from './table/libey-ng-table.component';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { LibeyNgTableModule } from './table/libey-ng-table.module';\n\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n FormsModule,\n LibeyNgTableModule\n ],\n exports: [LibeyNgTableModule],\n providers: [DatePipe]\n})\nexport class LibeyNgComponentLibraryModule { }\n","/*\n * Public API Surface of libey-ng-component-library\n */\n\nexport * from './lib/libey-ng-component-library.service';\nexport * from './lib/libey-ng-component-library.component';\nexport * from './lib/libey-ng-component-library.module';\nexport * from './lib/table/libey-ng-table.module';\nexport * from './lib/table/libey-ng-table.component';\nexport * from './lib/table/directives/libey-column.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","Injectable","Component","TemplateRef","Directive","Input","ContentChild","EventEmitter","i1","ViewEncapsulation","Output","ContentChildren","ViewChild","CommonModule","FormsModule","NgModule","DatePipe"],"mappings":"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"}
1
+ {"version":3,"file":"libey-ng-component-library.umd.js","sources":["../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.service.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.component.ts","../../../projects/libey-ng-component-library/src/lib/table/directives/libey-column.directive.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.html","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.module.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.module.ts","../../../projects/libey-ng-component-library/src/public-api.ts","../../../projects/libey-ng-component-library/src/libey-ng-component-library.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibeyNgComponentLibraryService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-libey-ngComponent-library',\n template: `\n <p>\n libey-ng-component-library works!\n </p>\n `,\n styles: [\n ]\n})\nexport class LibeyNgComponentLibraryComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'libey-ng-column'\r\n})\r\nexport class LibeyColumnDirective {\r\n @Input() header!: string;\r\n @Input() property!: string;\r\n @Input() width!: number;\r\n @Input() arrayMap?: string;\r\n @Input() isArray?: boolean;\r\n @Input() expandable?: boolean;\r\n @Input() class?: string;\r\n @Input() childTableTemplate: TemplateRef<any>;\r\n @Input() isAutoClose: (item: any) => boolean = () => true;\r\n @ContentChild(TemplateRef) cellTemplate!: TemplateRef<any>;\r\n}","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\ninterface IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\nclass DataKey implements IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'libey-ng-table',\r\n templateUrl: './libey-ng-table.component.html',\r\n styleUrls: ['./libey-ng-table.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LibeyNgTableComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() set data(value: any[]) {\r\n this._data = value;\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n @Input() pageSize: number = 10;\r\n @Input() totalSize: number = 0;\r\n @Input() maxPageButtons: number = 5;\r\n @Input() height: number;\r\n @Input() expandable: boolean = false;\r\n @Input() viewPaginate: boolean = true;\r\n @Input() childTableTemplate!: TemplateRef<any>;\r\n @Input() headerfixed: boolean = false;\r\n @Input() class: string;\r\n @Input() internalPagination: boolean = true;\r\n @Output() pageChange = new EventEmitter<number>();\r\n \r\n @ContentChildren(LibeyColumnDirective) columns!: QueryList<LibeyColumnDirective>;\r\n\r\n rowExpandable: boolean[] = [];\r\n rowExpandableDetail: IDataKey[] = [];\r\n currentPage: number = 1;\r\n paginatedData: any[] = [];\r\n _data: any[] = [];\r\n columnWidths: number[] = [];\r\n resizingColumnIndex: number | null = null;\r\n startX: number = 0;\r\n startWidth: number = 0;\r\n @ViewChild('tableContainer') tableContainer!: ElementRef;\r\n @ViewChild('table') tableElement!: ElementRef;\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes.data.previousValue){\r\n changes.data.currentValue.forEach((value, index) => {\r\n var findData = this.rowExpandableDetail.find(x => x.dataKey == index);\r\n if(findData != null)\r\n findData.autoClose = value.autoClose;\r\n });\r\n this._data = changes.data.currentValue;\r\n this.updatePaginatedData();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.updatePaginatedData();\r\n }\r\n ngAfterViewInit() {\r\n this.initializeColumnWidths();\r\n // this.adjustTableWidth()\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeColumnWidths() {\r\n var padding = 31\r\n var widthDefault = 150\r\n this.columnWidths = this.columns.map(column => column.width);\r\n const containerWidth = this.tableContainer.nativeElement.offsetWidth;\r\n const autoColumns = this.columns.filter(column => column.width == null);\r\n const totalFixedWidth = this.columns.reduce((sum, column) =>\r\n column.width != null ? (sum + this.getWidthValue(column.width)) : sum, 0);\r\n const remainingWidth = containerWidth - (totalFixedWidth + (((this.columns.length - autoColumns.length) * padding)+ (this.expandable ? 61 : 0)));\r\n\r\n if (autoColumns.length > 0) {\r\n var autoColumnWidth = 0;\r\n if(remainingWidth < widthDefault)\r\n autoColumnWidth = widthDefault;\r\n else\r\n autoColumnWidth = Math.max(0, remainingWidth / autoColumns.length);\r\n autoColumns.forEach(column => column.width = autoColumnWidth- padding);\r\n }\r\n this.columnWidths = this.columns.map(column => column.width);\r\n }\r\n // adjustTableWidth() {\r\n // const totalWidth = this.columns.reduce((sum, column) => sum + this.getWidthValue(column.width), 0);\r\n // this.tableElement.nativeElement.style.width = `${totalWidth}px`;\r\n // }\r\n getWidthValue(width: number): number {\r\n return width === null ? 100 : width;\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalSize / this.pageSize);\r\n }\r\n\r\n getCellValue(item: any, column: LibeyColumnDirective): string {\r\n const value = this.getNestedValue(item, column.property);\r\n if (Array.isArray(value) && column.arrayMap) {\r\n return value.map(v => this.getNestedValue(v, column.arrayMap!)).join(', ');\r\n }\r\n return value;\r\n }\r\n\r\n private getNestedValue(obj: any, path: string): any {\r\n return path.split('.').reduce((o, key) => {\r\n if (o && typeof o === 'object' && key in o) {\r\n return o[key];\r\n }\r\n return undefined;\r\n }, obj);\r\n }\r\n\r\n private updatePaginatedData(): void {\r\n if(this.viewPaginate && this.internalPagination){\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.paginatedData = this.data.slice(start, end);\r\n }else{\r\n this.paginatedData = this.data;\r\n } \r\n }\r\n pageRange(): number[] {\r\n const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));\r\n const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);\r\n const startPreFinish = end - this.maxPageButtons + 1;\r\n const startFinish = startPreFinish < 1 ? 1 : startPreFinish;\r\n return Array.from({length: end - startFinish + 1}, (_, i) => startFinish + i);\r\n }\r\n goToPage(page: number): void {\r\n this.currentPage = Math.max(1, Math.min(page, this.totalPages));\r\n if(this.internalPagination){ \r\n this.updatePaginatedData(); \r\n }else{\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n // hasChildren(row: any): boolean{\r\n // return Array.isArray(row.child) && row.child.length > 0;\r\n // }\r\n toggleRow(index: number){\r\n this.rowExpandable[index] = !this.rowExpandable[index];\r\n }\r\n toggleRowDetail(key: number, indexData: number, column: LibeyColumnDirective, data: any){\r\n if(column.expandable){\r\n var exist = this.rowExpandableDetail.find(x => x.key == key && x.dataKey == indexData);\r\n if(exist == null){\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => (x.key != key || x.dataKey != indexData) && x.autoClose == false);\r\n var item = new DataKey();\r\n item.key = key;\r\n item.dataKey = indexData;\r\n item.childTableTemplate = column.childTableTemplate;\r\n item.autoClose = column.isAutoClose(data);\r\n this.rowExpandableDetail.push(item);\r\n }else{\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => x.key != key || x.dataKey != indexData);\r\n }\r\n }\r\n }\r\n getChildren(fila: any): any[] {\r\n return fila.hijos || [];\r\n }\r\n onResizeStart(index: number, event: MouseEvent) {\r\n this.resizingColumnIndex = index;\r\n this.startX = event.pageX;\r\n this.startWidth = this.columnWidths[index];\r\n document.addEventListener('mousemove', this.onResizeMove);\r\n document.addEventListener('mouseup', this.onResizeEnd);\r\n }\r\n onResizeMove = (event: MouseEvent) => {\r\n if (this.resizingColumnIndex !== null) {\r\n const diff = event.pageX - this.startX;\r\n this.columnWidths[this.resizingColumnIndex] = Math.max(this.startWidth + diff, 50);\r\n\r\n }\r\n }\r\n onResizeEnd = () => {\r\n this.resizingColumnIndex = null;\r\n document.removeEventListener('mousemove', this.onResizeMove);\r\n document.removeEventListener('mouseup', this.onResizeEnd);\r\n }\r\n existRowExpandableDetail(key: number, indexData: number) : boolean{\r\n return this.rowExpandableDetail.filter(x => x.key == key && x.dataKey == indexData).length > 0;\r\n }\r\n viewRowExpandableDetail(indexData: number) :boolean{\r\n return this.rowExpandableDetail.filter(x => x.dataKey == indexData).length > 0;\r\n }\r\n findRowExpandableDetail(indexData: number) :TemplateRef<any>{\r\n var find = this.rowExpandableDetail.find(x => x.dataKey == indexData);\r\n if(find)\r\n return find.childTableTemplate; \r\n else\r\n return null;\r\n }\r\n}\r\n","<div class=\"table-container\" #tableContainer [style.height]=\"height == null ? 'auto':(height + 'px')\">\r\n <!-- <table cdkDropList (cdkDropListDropped)=\"drop($event)\"> -->\r\n <table #table [ngClass]=\"class\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"expandable\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\" style=\"width: 25px;\"></th>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <th [style.width]=\"columnWidths[i] == null ? 'auto':(columnWidths[i] + 'px')\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\">\r\n <span style=\"white-space: nowrap;\">{{ column.header }}</span>\r\n <div class=\"resize-handle\" (mousedown)=\"onResizeStart(i, $event)\"></div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"_data.length == 0\">\r\n <tr>\r\n <td [colSpan]=\"expandable ? (columns.length + 1) : (columns.length)\" class=\"text-center\">\r\n No existen datos disponibles\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginatedData.length != 0\">\r\n <ng-container *ngFor=\"let item of paginatedData; let a = index\">\r\n <tr>\r\n <td *ngIf=\"expandable\">\r\n <button (click)=\"toggleRow(a)\">\r\n <i [ngClass]=\"rowExpandable[a] ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </td>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <td [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container *ngIf=\"column.cellTemplate; else defaultCell\">\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: { $implicit: item }\"></ng-container>\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultCell>\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n {{ getCellValue(item, column) }}\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"viewRowExpandableDetail(a)\">\r\n <ng-container *ngTemplateOutlet=\"findRowExpandableDetail(a); context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <tr *ngIf=\"rowExpandable[a]\">\r\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\">\r\n <ng-container [ngTemplateOutlet]=\"childTableTemplate\"\r\n [ngTemplateOutletContext]=\"{ parentRow: item }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div *ngIf=\"viewPaginate && _data.length != 0\" class=\"pagination-controls\">\r\n <div class=\"d-align-center\">\r\n <label class=\"lbl-footer me-20px\"># Registros: {{this.totalSize}}</label>\r\n <label class=\"lbl-footer\"># Filas: {{this.pageSize}}</label>\r\n </div>\r\n <div>\r\n <button (click)=\"goToPage(1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-first-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(currentPage - 1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-previous-page\"></i>\r\n </button>\r\n <ng-container *ngFor=\"let page of pageRange()\">\r\n <button\r\n (click)=\"goToPage(page)\"\r\n [class.active]=\"currentPage === page\"\r\n [disabled]=\"currentPage === page\">\r\n {{ page }}\r\n </button>\r\n </ng-container>\r\n <button (click)=\"goToPage(currentPage + 1)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-next-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(totalPages)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-last-page\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n","// table.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LibeyNgTableComponent } from './libey-ng-table.component';\r\n\r\n@NgModule({\r\n declarations: [LibeyNgTableComponent, LibeyColumnDirective],\r\n imports: [CommonModule,FormsModule],\r\n exports: [LibeyNgTableComponent, LibeyColumnDirective]\r\n})\r\nexport class LibeyNgTableModule { }","import { NgModule } from '@angular/core';\nimport { LibeyNgComponentLibraryComponent } from './libey-ng-component-library.component';\nimport { LibeyNgTableComponent } from './table/libey-ng-table.component';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { LibeyNgTableModule } from './table/libey-ng-table.module';\n\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n FormsModule,\n LibeyNgTableModule\n ],\n exports: [LibeyNgTableModule],\n providers: [DatePipe]\n})\nexport class LibeyNgComponentLibraryModule { }\n","/*\n * Public API Surface of libey-ng-component-library\n */\n\nexport * from './lib/libey-ng-component-library.service';\nexport * from './lib/libey-ng-component-library.component';\nexport * from './lib/libey-ng-component-library.module';\nexport * from './lib/table/libey-ng-table.module';\nexport * from './lib/table/libey-ng-table.component';\nexport * from './lib/table/directives/libey-column.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","Injectable","Component","TemplateRef","Directive","Input","ContentChild","EventEmitter","i1","ViewEncapsulation","Output","ContentChildren","ViewChild","CommonModule","FormsModule","NgModule","DatePipe"],"mappings":"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"}
@@ -117,7 +117,8 @@ export class LibeyNgTableComponent {
117
117
  pageRange() {
118
118
  const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));
119
119
  const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);
120
- const startFinish = end - this.maxPageButtons + 1;
120
+ const startPreFinish = end - this.maxPageButtons + 1;
121
+ const startFinish = startPreFinish < 1 ? 1 : startPreFinish;
121
122
  return Array.from({ length: end - startFinish + 1 }, (_, i) => startFinish + i);
122
123
  }
123
124
  goToPage(page) {
@@ -220,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
220
221
  type: ViewChild,
221
222
  args: ['table']
222
223
  }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQXlDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5TixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBUzNFLE1BQU0sT0FBTztDQU1aO0FBU0QsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6QmpDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlsRCxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUM5Qix3QkFBbUIsR0FBZSxFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNsQixp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QixDQUFDLFNBQWlCO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLElBQUcsSUFBSTtZQUNMLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDOztZQUUvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzttSEFyTFUscUJBQXFCO3VHQUFyQixxQkFBcUIseWFBbUJmLG9CQUFvQiw0UEM1Q3ZDLCttSkE4RkE7NEZEckVhLHFCQUFxQjtrQkFQakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztvQkFDN0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDO3dHQUdjLElBQUk7c0JBQWhCLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRWdDLE9BQU87c0JBQTdDLGVBQWU7dUJBQUMsb0JBQW9CO2dCQVdSLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNQLFlBQVk7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaWJleUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9saWJleS1jb2x1bW4uZGlyZWN0aXZlJztcclxuaW50ZXJmYWNlIElEYXRhS2V5IHtcclxuICBrZXk6IG51bWJlcjtcclxuICBkYXRhS2V5OiBudW1iZXI7XHJcbiAgY2hpbGRUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbjtcclxufVxyXG5cclxuY2xhc3MgRGF0YUtleSBpbXBsZW1lbnRzIElEYXRhS2V5IHtcclxuICBrZXk6IG51bWJlcjtcclxuICBkYXRhS2V5OiBudW1iZXI7XHJcbiAgY2hpbGRUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWJleS1uZy10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saWJleS1uZy10YWJsZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIExpYmV5TmdUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoKSB0b3RhbFNpemU6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgbWF4UGFnZUJ1dHRvbnM6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZpZXdQYWdpbmF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2hpbGRUYWJsZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBoZWFkZXJmaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW50ZXJuYWxQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGliZXlDb2x1bW5EaXJlY3RpdmUpIGNvbHVtbnMhOiBRdWVyeUxpc3Q8TGliZXlDb2x1bW5EaXJlY3RpdmU+O1xyXG5cclxuICByb3dFeHBhbmRhYmxlOiBib29sZWFuW10gPSBbXTtcclxuICByb3dFeHBhbmRhYmxlRGV0YWlsOiBJRGF0YUtleVtdID0gW107XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgcGFnaW5hdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBfZGF0YTogYW55W10gPSBbXTtcclxuICBjb2x1bW5XaWR0aHM6IG51bWJlcltdID0gW107XHJcbiAgcmVzaXppbmdDb2x1bW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc3RhcnRYOiBudW1iZXIgPSAwO1xyXG4gIHN0YXJ0V2lkdGg6IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZUVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzLmRhdGEucHJldmlvdXNWYWx1ZSl7XHJcbiAgICAgIGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgdmFyIGZpbmREYXRhID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbmQoeCA9PiB4LmRhdGFLZXkgPT0gaW5kZXgpO1xyXG4gICAgICAgIGlmKGZpbmREYXRhICE9IG51bGwpXHJcbiAgICAgICAgICBmaW5kRGF0YS5hdXRvQ2xvc2UgPSB2YWx1ZS5hdXRvQ2xvc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9kYXRhID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVQYWdpbmF0ZWREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0ZWREYXRhKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbldpZHRocygpO1xyXG4gICAgLy8gdGhpcy5hZGp1c3RUYWJsZVdpZHRoKClcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVDb2x1bW5XaWR0aHMoKSB7XHJcbiAgICB2YXIgcGFkZGluZyA9IDMxXHJcbiAgICB2YXIgd2lkdGhEZWZhdWx0ID0gMTUwXHJcbiAgICB0aGlzLmNvbHVtbldpZHRocyA9IHRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi53aWR0aCk7XHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGF1dG9Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLndpZHRoID09IG51bGwpO1xyXG4gICAgY29uc3QgdG90YWxGaXhlZFdpZHRoID0gdGhpcy5jb2x1bW5zLnJlZHVjZSgoc3VtLCBjb2x1bW4pID0+XHJcbiAgICAgIGNvbHVtbi53aWR0aCAhPSBudWxsID8gKHN1bSArIHRoaXMuZ2V0V2lkdGhWYWx1ZShjb2x1bW4ud2lkdGgpKSA6IHN1bSwgMCk7XHJcbiAgICBjb25zdCByZW1haW5pbmdXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gKHRvdGFsRml4ZWRXaWR0aCArICgoKHRoaXMuY29sdW1ucy5sZW5ndGggLSBhdXRvQ29sdW1ucy5sZW5ndGgpICogcGFkZGluZykrICh0aGlzLmV4cGFuZGFibGUgPyA2MSA6IDApKSk7XHJcblxyXG4gICAgaWYgKGF1dG9Db2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGF1dG9Db2x1bW5XaWR0aCA9IDA7XHJcbiAgICAgIGlmKHJlbWFpbmluZ1dpZHRoIDwgd2lkdGhEZWZhdWx0KVxyXG4gICAgICAgIGF1dG9Db2x1bW5XaWR0aCA9IHdpZHRoRGVmYXVsdDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGF1dG9Db2x1bW5XaWR0aCA9IE1hdGgubWF4KDAsIHJlbWFpbmluZ1dpZHRoIC8gYXV0b0NvbHVtbnMubGVuZ3RoKTtcclxuICAgICAgYXV0b0NvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4gY29sdW1uLndpZHRoID0gYXV0b0NvbHVtbldpZHRoLSBwYWRkaW5nKTtcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1uV2lkdGhzID0gdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLndpZHRoKTtcclxuICB9XHJcbiAgLy8gYWRqdXN0VGFibGVXaWR0aCgpIHtcclxuICAvLyAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLmNvbHVtbnMucmVkdWNlKChzdW0sIGNvbHVtbikgPT4gc3VtICsgdGhpcy5nZXRXaWR0aFZhbHVlKGNvbHVtbi53aWR0aCksIDApO1xyXG4gIC8vICAgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3RvdGFsV2lkdGh9cHhgO1xyXG4gIC8vIH1cclxuICBnZXRXaWR0aFZhbHVlKHdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHdpZHRoID09PSBudWxsID8gMTAwIDogd2lkdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsU2l6ZSAvIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2VsbFZhbHVlKGl0ZW06IGFueSwgY29sdW1uOiBMaWJleUNvbHVtbkRpcmVjdGl2ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUoaXRlbSwgY29sdW1uLnByb3BlcnR5KTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBjb2x1bW4uYXJyYXlNYXApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUodiwgY29sdW1uLmFycmF5TWFwISkpLmpvaW4oJywgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGtleSkgPT4ge1xyXG4gICAgICBpZiAobyAmJiB0eXBlb2YgbyA9PT0gJ29iamVjdCcgJiYga2V5IGluIG8pIHtcclxuICAgICAgICByZXR1cm4gb1trZXldO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9LCBvYmopO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYWdpbmF0ZWREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy52aWV3UGFnaW5hdGUgJiYgdGhpcy5pbnRlcm5hbFBhZ2luYXRpb24pe1xyXG4gICAgICBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xyXG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XHJcbiAgICAgIHRoaXMucGFnaW5hdGVkRGF0YSA9IHRoaXMuZGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnBhZ2luYXRlZERhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuICBwYWdlUmFuZ2UoKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgxLCB0aGlzLmN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcih0aGlzLm1heFBhZ2VCdXR0b25zIC8gMikpO1xyXG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy50b3RhbFBhZ2VzLCBzdGFydCArIHRoaXMubWF4UGFnZUJ1dHRvbnMgLSAxKTtcclxuICAgIGNvbnN0IHN0YXJ0RmluaXNoID0gZW5kIC0gdGhpcy5tYXhQYWdlQnV0dG9ucyArIDE7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOiBlbmQgLSBzdGFydEZpbmlzaCArIDF9LCAoXywgaSkgPT4gc3RhcnRGaW5pc2ggKyBpKTtcclxuICB9XHJcbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4ocGFnZSwgdGhpcy50b3RhbFBhZ2VzKSk7XHJcbiAgICBpZih0aGlzLmludGVybmFsUGFnaW5hdGlvbil7ICAgICAgXHJcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGVkRGF0YSgpOyAgICAgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBoYXNDaGlsZHJlbihyb3c6IGFueSk6IGJvb2xlYW57XHJcbiAgLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3cuY2hpbGQpICYmIHJvdy5jaGlsZC5sZW5ndGggPiAwO1xyXG4gIC8vIH1cclxuICB0b2dnbGVSb3coaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLnJvd0V4cGFuZGFibGVbaW5kZXhdID0gIXRoaXMucm93RXhwYW5kYWJsZVtpbmRleF07XHJcbiAgfVxyXG4gIHRvZ2dsZVJvd0RldGFpbChrZXk6IG51bWJlciwgaW5kZXhEYXRhOiBudW1iZXIsIGNvbHVtbjogTGliZXlDb2x1bW5EaXJlY3RpdmUsIGRhdGE6IGFueSl7XHJcbiAgICBpZihjb2x1bW4uZXhwYW5kYWJsZSl7XHJcbiAgICAgIHZhciBleGlzdCA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maW5kKHggPT4geC5rZXkgPT0ga2V5ICYmIHguZGF0YUtleSA9PSBpbmRleERhdGEpO1xyXG4gICAgICBpZihleGlzdCA9PSBudWxsKXtcclxuICAgICAgICB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwgPSB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwuZmlsdGVyKHggPT4gKHgua2V5ICE9IGtleSB8fCB4LmRhdGFLZXkgIT0gaW5kZXhEYXRhKSAmJiB4LmF1dG9DbG9zZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgdmFyIGl0ZW0gPSBuZXcgRGF0YUtleSgpO1xyXG4gICAgICAgIGl0ZW0ua2V5ID0ga2V5O1xyXG4gICAgICAgIGl0ZW0uZGF0YUtleSA9IGluZGV4RGF0YTtcclxuICAgICAgICBpdGVtLmNoaWxkVGFibGVUZW1wbGF0ZSA9IGNvbHVtbi5jaGlsZFRhYmxlVGVtcGxhdGU7XHJcbiAgICAgICAgaXRlbS5hdXRvQ2xvc2UgPSBjb2x1bW4uaXNBdXRvQ2xvc2UoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLnB1c2goaXRlbSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucm93RXhwYW5kYWJsZURldGFpbCA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maWx0ZXIoeCA9PiB4LmtleSAhPSBrZXkgfHwgeC5kYXRhS2V5ICE9IGluZGV4RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Q2hpbGRyZW4oZmlsYTogYW55KTogYW55W10ge1xyXG4gICAgcmV0dXJuIGZpbGEuaGlqb3MgfHwgW107XHJcbiAgfVxyXG4gIG9uUmVzaXplU3RhcnQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMucmVzaXppbmdDb2x1bW5JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5zdGFydFggPSBldmVudC5wYWdlWDtcclxuICAgIHRoaXMuc3RhcnRXaWR0aCA9IHRoaXMuY29sdW1uV2lkdGhzW2luZGV4XTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplRW5kKTtcclxuICB9XHJcbiAgb25SZXNpemVNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZXNpemluZ0NvbHVtbkluZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGRpZmYgPSBldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICB0aGlzLmNvbHVtbldpZHRoc1t0aGlzLnJlc2l6aW5nQ29sdW1uSW5kZXhdID0gTWF0aC5tYXgodGhpcy5zdGFydFdpZHRoICsgZGlmZiwgNTApO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgb25SZXNpemVFbmQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlc2l6aW5nQ29sdW1uSW5kZXggPSBudWxsO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQpO1xyXG4gIH1cclxuICBleGlzdFJvd0V4cGFuZGFibGVEZXRhaWwoa2V5OiBudW1iZXIsIGluZGV4RGF0YTogbnVtYmVyKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbHRlcih4ID0+IHgua2V5ID09IGtleSAmJiB4LmRhdGFLZXkgPT0gaW5kZXhEYXRhKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuICB2aWV3Um93RXhwYW5kYWJsZURldGFpbChpbmRleERhdGE6IG51bWJlcikgOmJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbHRlcih4ID0+IHguZGF0YUtleSA9PSBpbmRleERhdGEpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIGZpbmRSb3dFeHBhbmRhYmxlRGV0YWlsKGluZGV4RGF0YTogbnVtYmVyKSA6VGVtcGxhdGVSZWY8YW55PntcclxuICAgIHZhciBmaW5kID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbmQoeCA9PiB4LmRhdGFLZXkgPT0gaW5kZXhEYXRhKTtcclxuICAgIGlmKGZpbmQpXHJcbiAgICAgIHJldHVybiBmaW5kLmNoaWxkVGFibGVUZW1wbGF0ZTsgXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCIgICN0YWJsZUNvbnRhaW5lciBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCA9PSBudWxsID8gJ2F1dG8nOihoZWlnaHQgKyAncHgnKVwiPlxyXG4gIDwhLS0gPHRhYmxlIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+IC0tPlxyXG4gIDx0YWJsZSAjdGFibGUgW25nQ2xhc3NdPVwiY2xhc3NcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCAqbmdJZj1cImV4cGFuZGFibGVcIiBbbmdDbGFzc109XCJoZWFkZXJmaXhlZCA9PSB0cnVlID8gJ3RoLWZpeGVkJzonJ1wiIHN0eWxlPVwid2lkdGg6IDI1cHg7XCI+PC90aD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCJjb2x1bW5XaWR0aHNbaV0gPT0gbnVsbCA/ICdhdXRvJzooY29sdW1uV2lkdGhzW2ldICsgJ3B4JylcIiBbbmdDbGFzc109XCJoZWFkZXJmaXhlZCA9PSB0cnVlID8gJ3RoLWZpeGVkJzonJ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+e3sgY29sdW1uLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoaSwgJGV2ZW50KVwiPjwvZGl2PlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfZGF0YS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZCBbY29sU3Bhbl09XCJleHBhbmRhYmxlID8gKGNvbHVtbnMubGVuZ3RoICsgMSkgOiAoY29sdW1ucy5sZW5ndGgpXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICBObyBleGlzdGVuIGRhdG9zIGRpc3BvbmlibGVzXHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGVkRGF0YS5sZW5ndGggIT0gMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5hdGVkRGF0YTsgbGV0IGEgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJleHBhbmRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUm93KGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dFeHBhbmRhYmxlW2FdID8gJ2ljb24tYXJyb3ctdXAnOidpY29uLWFycm93LWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJjb2x1bW4uY2xhc3NcIiAoY2xpY2spPVwidG9nZ2xlUm93RGV0YWlsKGksIGEsIGNvbHVtbiwgaXRlbSlcIiBbY2xhc3NdPVwiY29sdW1uLmV4cGFuZGFibGUgPyAnY3Vyc29yLXBvaW50ZXInOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5jZWxsVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb2x1bW4uZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZXhpc3RSb3dFeHBhbmRhYmxlRGV0YWlsKGksIGEpID8gJ2ljb24tYXJyb3ctdXAnOidpY29uLWFycm93LWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsVmFsdWUoaXRlbSwgY29sdW1uKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb2x1bW4uZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZXhpc3RSb3dFeHBhbmRhYmxlRGV0YWlsKGksIGEpID8gJ2ljb24tYXJyb3ctdXAnOidpY29uLWFycm93LWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdSb3dFeHBhbmRhYmxlRGV0YWlsKGEpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaW5kUm93RXhwYW5kYWJsZURldGFpbChhKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJyb3dFeHBhbmRhYmxlW2FdXCI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgKGV4cGFuZGFibGUgPyAxIDogMClcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkVGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBwYXJlbnRSb3c6IGl0ZW0gfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwidmlld1BhZ2luYXRlICYmIF9kYXRhLmxlbmd0aCAhPSAwXCIgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtYWxpZ24tY2VudGVyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJsYmwtZm9vdGVyIG1lLTIwcHhcIj4jIFJlZ2lzdHJvczoge3t0aGlzLnRvdGFsU2l6ZX19PC9sYWJlbD5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxibC1mb290ZXJcIj4jIEZpbGFzOiB7e3RoaXMucGFnZVNpemV9fTwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKDEpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbi1maXJzdC1wYWdlXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvUGFnZShjdXJyZW50UGFnZSAtIDEpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbi1wcmV2aW91cy1wYWdlXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VSYW5nZSgpXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gcGFnZVwiPlxyXG4gICAgICAgIHt7IHBhZ2UgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKGN1cnJlbnRQYWdlICsgMSlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uLW5leHQtcGFnZVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub1BhZ2UodG90YWxQYWdlcylcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uLWxhc3QtcGFnZVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQXlDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5TixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBUzNFLE1BQU0sT0FBTztDQU1aO0FBU0QsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6QmpDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlsRCxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUM5Qix3QkFBbUIsR0FBZSxFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNsQixp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ImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaWJleUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9saWJleS1jb2x1bW4uZGlyZWN0aXZlJztcclxuaW50ZXJmYWNlIElEYXRhS2V5IHtcclxuICBrZXk6IG51bWJlcjtcclxuICBkYXRhS2V5OiBudW1iZXI7XHJcbiAgY2hpbGRUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbjtcclxufVxyXG5cclxuY2xhc3MgRGF0YUtleSBpbXBsZW1lbnRzIElEYXRhS2V5IHtcclxuICBrZXk6IG51bWJlcjtcclxuICBkYXRhS2V5OiBudW1iZXI7XHJcbiAgY2hpbGRUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWJleS1uZy10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saWJleS1uZy10YWJsZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIExpYmV5TmdUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoKSB0b3RhbFNpemU6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgbWF4UGFnZUJ1dHRvbnM6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZpZXdQYWdpbmF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2hpbGRUYWJsZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBoZWFkZXJmaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW50ZXJuYWxQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGliZXlDb2x1bW5EaXJlY3RpdmUpIGNvbHVtbnMhOiBRdWVyeUxpc3Q8TGliZXlDb2x1bW5EaXJlY3RpdmU+O1xyXG5cclxuICByb3dFeHBhbmRhYmxlOiBib29sZWFuW10gPSBbXTtcclxuICByb3dFeHBhbmRhYmxlRGV0YWlsOiBJRGF0YUtleVtdID0gW107XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgcGFnaW5hdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBfZGF0YTogYW55W10gPSBbXTtcclxuICBjb2x1bW5XaWR0aHM6IG51bWJlcltdID0gW107XHJcbiAgcmVzaXppbmdDb2x1bW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc3RhcnRYOiBudW1iZXIgPSAwO1xyXG4gIHN0YXJ0V2lkdGg6IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZUVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzLmRhdGEucHJldmlvdXNWYWx1ZSl7XHJcbiAgICAgIGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgdmFyIGZpbmREYXRhID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbmQoeCA9PiB4LmRhdGFLZXkgPT0gaW5kZXgpO1xyXG4gICAgICAgIGlmKGZpbmREYXRhICE9IG51bGwpXHJcbiAgICAgICAgICBmaW5kRGF0YS5hdXRvQ2xvc2UgPSB2YWx1ZS5hdXRvQ2xvc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9kYXRhID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVQYWdpbmF0ZWREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0ZWREYXRhKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbldpZHRocygpO1xyXG4gICAgLy8gdGhpcy5hZGp1c3RUYWJsZVdpZHRoKClcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVDb2x1bW5XaWR0aHMoKSB7XHJcbiAgICB2YXIgcGFkZGluZyA9IDMxXHJcbiAgICB2YXIgd2lkdGhEZWZhdWx0ID0gMTUwXHJcbiAgICB0aGlzLmNvbHVtbldpZHRocyA9IHRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi53aWR0aCk7XHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGF1dG9Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLndpZHRoID09IG51bGwpO1xyXG4gICAgY29uc3QgdG90YWxGaXhlZFdpZHRoID0gdGhpcy5jb2x1bW5zLnJlZHVjZSgoc3VtLCBjb2x1bW4pID0+XHJcbiAgICAgIGNvbHVtbi53aWR0aCAhPSBudWxsID8gKHN1bSArIHRoaXMuZ2V0V2lkdGhWYWx1ZShjb2x1bW4ud2lkdGgpKSA6IHN1bSwgMCk7XHJcbiAgICBjb25zdCByZW1haW5pbmdXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gKHRvdGFsRml4ZWRXaWR0aCArICgoKHRoaXMuY29sdW1ucy5sZW5ndGggLSBhdXRvQ29sdW1ucy5sZW5ndGgpICogcGFkZGluZykrICh0aGlzLmV4cGFuZGFibGUgPyA2MSA6IDApKSk7XHJcblxyXG4gICAgaWYgKGF1dG9Db2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGF1dG9Db2x1bW5XaWR0aCA9IDA7XHJcbiAgICAgIGlmKHJlbWFpbmluZ1dpZHRoIDwgd2lkdGhEZWZhdWx0KVxyXG4gICAgICAgIGF1dG9Db2x1bW5XaWR0aCA9IHdpZHRoRGVmYXVsdDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGF1dG9Db2x1bW5XaWR0aCA9IE1hdGgubWF4KDAsIHJlbWFpbmluZ1dpZHRoIC8gYXV0b0NvbHVtbnMubGVuZ3RoKTtcclxuICAgICAgYXV0b0NvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4gY29sdW1uLndpZHRoID0gYXV0b0NvbHVtbldpZHRoLSBwYWRkaW5nKTtcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1uV2lkdGhzID0gdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uLndpZHRoKTtcclxuICB9XHJcbiAgLy8gYWRqdXN0VGFibGVXaWR0aCgpIHtcclxuICAvLyAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLmNvbHVtbnMucmVkdWNlKChzdW0sIGNvbHVtbikgPT4gc3VtICsgdGhpcy5nZXRXaWR0aFZhbHVlKGNvbHVtbi53aWR0aCksIDApO1xyXG4gIC8vICAgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3RvdGFsV2lkdGh9cHhgO1xyXG4gIC8vIH1cclxuICBnZXRXaWR0aFZhbHVlKHdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHdpZHRoID09PSBudWxsID8gMTAwIDogd2lkdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsU2l6ZSAvIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2VsbFZhbHVlKGl0ZW06IGFueSwgY29sdW1uOiBMaWJleUNvbHVtbkRpcmVjdGl2ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUoaXRlbSwgY29sdW1uLnByb3BlcnR5KTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBjb2x1bW4uYXJyYXlNYXApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUodiwgY29sdW1uLmFycmF5TWFwISkpLmpvaW4oJywgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGtleSkgPT4ge1xyXG4gICAgICBpZiAobyAmJiB0eXBlb2YgbyA9PT0gJ29iamVjdCcgJiYga2V5IGluIG8pIHtcclxuICAgICAgICByZXR1cm4gb1trZXldO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9LCBvYmopO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYWdpbmF0ZWREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy52aWV3UGFnaW5hdGUgJiYgdGhpcy5pbnRlcm5hbFBhZ2luYXRpb24pe1xyXG4gICAgICBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xyXG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XHJcbiAgICAgIHRoaXMucGFnaW5hdGVkRGF0YSA9IHRoaXMuZGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnBhZ2luYXRlZERhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuICBwYWdlUmFuZ2UoKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgxLCB0aGlzLmN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcih0aGlzLm1heFBhZ2VCdXR0b25zIC8gMikpO1xyXG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy50b3RhbFBhZ2VzLCBzdGFydCArIHRoaXMubWF4UGFnZUJ1dHRvbnMgLSAxKTtcclxuICAgIGNvbnN0IHN0YXJ0UHJlRmluaXNoID0gZW5kIC0gdGhpcy5tYXhQYWdlQnV0dG9ucyArIDE7XHJcbiAgICBjb25zdCBzdGFydEZpbmlzaCA9IHN0YXJ0UHJlRmluaXNoIDwgMSA/IDEgOiBzdGFydFByZUZpbmlzaDtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IGVuZCAtIHN0YXJ0RmluaXNoICsgMX0sIChfLCBpKSA9PiBzdGFydEZpbmlzaCArIGkpO1xyXG4gIH1cclxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBNYXRoLm1heCgxLCBNYXRoLm1pbihwYWdlLCB0aGlzLnRvdGFsUGFnZXMpKTtcclxuICAgIGlmKHRoaXMuaW50ZXJuYWxQYWdpbmF0aW9uKXsgICAgICBcclxuICAgICAgdGhpcy51cGRhdGVQYWdpbmF0ZWREYXRhKCk7ICAgICAgXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGhhc0NoaWxkcmVuKHJvdzogYW55KTogYm9vbGVhbntcclxuICAvLyAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdy5jaGlsZCkgJiYgcm93LmNoaWxkLmxlbmd0aCA+IDA7XHJcbiAgLy8gfVxyXG4gIHRvZ2dsZVJvdyhpbmRleDogbnVtYmVyKXtcclxuICAgIHRoaXMucm93RXhwYW5kYWJsZVtpbmRleF0gPSAhdGhpcy5yb3dFeHBhbmRhYmxlW2luZGV4XTtcclxuICB9XHJcbiAgdG9nZ2xlUm93RGV0YWlsKGtleTogbnVtYmVyLCBpbmRleERhdGE6IG51bWJlciwgY29sdW1uOiBMaWJleUNvbHVtbkRpcmVjdGl2ZSwgZGF0YTogYW55KXtcclxuICAgIGlmKGNvbHVtbi5leHBhbmRhYmxlKXtcclxuICAgICAgdmFyIGV4aXN0ID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbmQoeCA9PiB4LmtleSA9PSBrZXkgJiYgeC5kYXRhS2V5ID09IGluZGV4RGF0YSk7XHJcbiAgICAgIGlmKGV4aXN0ID09IG51bGwpe1xyXG4gICAgICAgIHRoaXMucm93RXhwYW5kYWJsZURldGFpbCA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maWx0ZXIoeCA9PiAoeC5rZXkgIT0ga2V5IHx8IHguZGF0YUtleSAhPSBpbmRleERhdGEpICYmIHguYXV0b0Nsb3NlID09IGZhbHNlKTtcclxuICAgICAgICB2YXIgaXRlbSA9IG5ldyBEYXRhS2V5KCk7XHJcbiAgICAgICAgaXRlbS5rZXkgPSBrZXk7XHJcbiAgICAgICAgaXRlbS5kYXRhS2V5ID0gaW5kZXhEYXRhO1xyXG4gICAgICAgIGl0ZW0uY2hpbGRUYWJsZVRlbXBsYXRlID0gY29sdW1uLmNoaWxkVGFibGVUZW1wbGF0ZTtcclxuICAgICAgICBpdGVtLmF1dG9DbG9zZSA9IGNvbHVtbi5pc0F1dG9DbG9zZShkYXRhKTtcclxuICAgICAgICB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwucHVzaChpdGVtKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbHRlcih4ID0+IHgua2V5ICE9IGtleSB8fCB4LmRhdGFLZXkgIT0gaW5kZXhEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDaGlsZHJlbihmaWxhOiBhbnkpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gZmlsYS5oaWpvcyB8fCBbXTtcclxuICB9XHJcbiAgb25SZXNpemVTdGFydChpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5yZXNpemluZ0NvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xyXG4gICAgdGhpcy5zdGFydFdpZHRoID0gdGhpcy5jb2x1bW5XaWR0aHNbaW5kZXhdO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQpO1xyXG4gIH1cclxuICBvblJlc2l6ZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgIGlmICh0aGlzLnJlc2l6aW5nQ29sdW1uSW5kZXggIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgZGlmZiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIHRoaXMuY29sdW1uV2lkdGhzW3RoaXMucmVzaXppbmdDb2x1bW5JbmRleF0gPSBNYXRoLm1heCh0aGlzLnN0YXJ0V2lkdGggKyBkaWZmLCA1MCk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBvblJlc2l6ZUVuZCA9ICgpID0+IHtcclxuICAgIHRoaXMucmVzaXppbmdDb2x1bW5JbmRleCA9IG51bGw7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplTW92ZSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZCk7XHJcbiAgfVxyXG4gIGV4aXN0Um93RXhwYW5kYWJsZURldGFpbChrZXk6IG51bWJlciwgaW5kZXhEYXRhOiBudW1iZXIpIDogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwuZmlsdGVyKHggPT4geC5rZXkgPT0ga2V5ICYmIHguZGF0YUtleSA9PSBpbmRleERhdGEpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIHZpZXdSb3dFeHBhbmRhYmxlRGV0YWlsKGluZGV4RGF0YTogbnVtYmVyKSA6Ym9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwuZmlsdGVyKHggPT4geC5kYXRhS2V5ID09IGluZGV4RGF0YSkubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgZmluZFJvd0V4cGFuZGFibGVEZXRhaWwoaW5kZXhEYXRhOiBudW1iZXIpIDpUZW1wbGF0ZVJlZjxhbnk+e1xyXG4gICAgdmFyIGZpbmQgPSB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwuZmluZCh4ID0+IHguZGF0YUtleSA9PSBpbmRleERhdGEpO1xyXG4gICAgaWYoZmluZClcclxuICAgICAgcmV0dXJuIGZpbmQuY2hpbGRUYWJsZVRlbXBsYXRlOyBcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIiAgI3RhYmxlQ29udGFpbmVyIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0ID09IG51bGwgPyAnYXV0byc6KGhlaWdodCArICdweCcpXCI+XHJcbiAgPCEtLSA8dGFibGUgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj4gLS0+XHJcbiAgPHRhYmxlICN0YWJsZSBbbmdDbGFzc109XCJjbGFzc1wiPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0lmPVwiZXhwYW5kYWJsZVwiIFtuZ0NsYXNzXT1cImhlYWRlcmZpeGVkID09IHRydWUgPyAndGgtZml4ZWQnOicnXCIgc3R5bGU9XCJ3aWR0aDogMjVweDtcIj48L3RoPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8dGggW3N0eWxlLndpZHRoXT1cImNvbHVtbldpZHRoc1tpXSA9PSBudWxsID8gJ2F1dG8nOihjb2x1bW5XaWR0aHNbaV0gKyAncHgnKVwiIFtuZ0NsYXNzXT1cImhlYWRlcmZpeGVkID09IHRydWUgPyAndGgtZml4ZWQnOicnXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj57eyBjb2x1bW4uaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZVwiIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydChpLCAkZXZlbnQpXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9kYXRhLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImV4cGFuZGFibGUgPyAoY29sdW1ucy5sZW5ndGggKyAxKSA6IChjb2x1bW5zLmxlbmd0aClcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIE5vIGV4aXN0ZW4gZGF0b3MgZGlzcG9uaWJsZXNcclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdpbmF0ZWREYXRhLmxlbmd0aCAhPSAwXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdpbmF0ZWREYXRhOyBsZXQgYSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImV4cGFuZGFibGVcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVSb3coYSlcIj5cclxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInJvd0V4cGFuZGFibGVbYV0gPyAnaWNvbi1hcnJvdy11cCc6J2ljb24tYXJyb3ctZG93bidcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cImNvbHVtbi5jbGFzc1wiIChjbGljayk9XCJ0b2dnbGVSb3dEZXRhaWwoaSwgYSwgY29sdW1uLCBpdGVtKVwiIFtjbGFzc109XCJjb2x1bW4uZXhwYW5kYWJsZSA/ICdjdXJzb3ItcG9pbnRlcic6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmNlbGxUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aGl0ZS1zcGFjZTogbm93cmFwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbHVtbi5leHBhbmRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJleGlzdFJvd0V4cGFuZGFibGVEZXRhaWwoaSwgYSkgPyAnaWNvbi1hcnJvdy11cCc6J2ljb24tYXJyb3ctZG93bidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aGl0ZS1zcGFjZTogbm93cmFwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxWYWx1ZShpdGVtLCBjb2x1bW4pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbHVtbi5leHBhbmRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJleGlzdFJvd0V4cGFuZGFibGVEZXRhaWwoaSwgYSkgPyAnaWNvbi1hcnJvdy11cCc6J2ljb24tYXJyb3ctZG93bidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1Jvd0V4cGFuZGFibGVEZXRhaWwoYSlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbmRSb3dFeHBhbmRhYmxlRGV0YWlsKGEpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cInJvd0V4cGFuZGFibGVbYV1cIj5cclxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAoZXhwYW5kYWJsZSA/IDEgOiAwKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRUYWJsZVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBhcmVudFJvdzogaXRlbSB9XCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGJvZHk+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJ2aWV3UGFnaW5hdGUgJiYgX2RhdGEubGVuZ3RoICE9IDBcIiBjbGFzcz1cInBhZ2luYXRpb24tY29udHJvbHNcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1hbGlnbi1jZW50ZXJcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxibC1mb290ZXIgbWUtMjBweFwiPiMgUmVnaXN0cm9zOiB7e3RoaXMudG90YWxTaXplfX08L2xhYmVsPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibGJsLWZvb3RlclwiPiMgRmlsYXM6IHt7dGhpcy5wYWdlU2l6ZX19PC9sYWJlbD5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub1BhZ2UoMSlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uLWZpcnN0LXBhZ2VcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKGN1cnJlbnRQYWdlIC0gMSlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uLXByZXZpb3VzLXBhZ2VcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZVJhbmdlKClcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50UGFnZSA9PT0gcGFnZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBwYWdlXCI+XHJcbiAgICAgICAge3sgcGFnZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2UgKyAxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb24tbmV4dC1wYWdlXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvUGFnZSh0b3RhbFBhZ2VzKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb24tbGFzdC1wYWdlXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -190,7 +190,8 @@ class LibeyNgTableComponent {
190
190
  pageRange() {
191
191
  const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));
192
192
  const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);
193
- const startFinish = end - this.maxPageButtons + 1;
193
+ const startPreFinish = end - this.maxPageButtons + 1;
194
+ const startFinish = startPreFinish < 1 ? 1 : startPreFinish;
194
195
  return Array.from({ length: end - startFinish + 1 }, (_, i) => startFinish + i);
195
196
  }
196
197
  goToPage(page) {
@@ -1 +1 @@
1
- {"version":3,"file":"libey-ng-component-library.js","sources":["../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.service.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.component.ts","../../../projects/libey-ng-component-library/src/lib/table/directives/libey-column.directive.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.html","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.module.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.module.ts","../../../projects/libey-ng-component-library/src/public-api.ts","../../../projects/libey-ng-component-library/src/libey-ng-component-library.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibeyNgComponentLibraryService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-libey-ngComponent-library',\n template: `\n <p>\n libey-ng-component-library works!\n </p>\n `,\n styles: [\n ]\n})\nexport class LibeyNgComponentLibraryComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'libey-ng-column'\r\n})\r\nexport class LibeyColumnDirective {\r\n @Input() header!: string;\r\n @Input() property!: string;\r\n @Input() width!: number;\r\n @Input() arrayMap?: string;\r\n @Input() isArray?: boolean;\r\n @Input() expandable?: boolean;\r\n @Input() class?: string;\r\n @Input() childTableTemplate: TemplateRef<any>;\r\n @Input() isAutoClose: (item: any) => boolean = () => true;\r\n @ContentChild(TemplateRef) cellTemplate!: TemplateRef<any>;\r\n}","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\ninterface IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\nclass DataKey implements IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'libey-ng-table',\r\n templateUrl: './libey-ng-table.component.html',\r\n styleUrls: ['./libey-ng-table.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LibeyNgTableComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() set data(value: any[]) {\r\n this._data = value;\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n @Input() pageSize: number = 10;\r\n @Input() totalSize: number = 0;\r\n @Input() maxPageButtons: number = 5;\r\n @Input() height: number;\r\n @Input() expandable: boolean = false;\r\n @Input() viewPaginate: boolean = true;\r\n @Input() childTableTemplate!: TemplateRef<any>;\r\n @Input() headerfixed: boolean = false;\r\n @Input() class: string;\r\n @Input() internalPagination: boolean = true;\r\n @Output() pageChange = new EventEmitter<number>();\r\n \r\n @ContentChildren(LibeyColumnDirective) columns!: QueryList<LibeyColumnDirective>;\r\n\r\n rowExpandable: boolean[] = [];\r\n rowExpandableDetail: IDataKey[] = [];\r\n currentPage: number = 1;\r\n paginatedData: any[] = [];\r\n _data: any[] = [];\r\n columnWidths: number[] = [];\r\n resizingColumnIndex: number | null = null;\r\n startX: number = 0;\r\n startWidth: number = 0;\r\n @ViewChild('tableContainer') tableContainer!: ElementRef;\r\n @ViewChild('table') tableElement!: ElementRef;\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes.data.previousValue){\r\n changes.data.currentValue.forEach((value, index) => {\r\n var findData = this.rowExpandableDetail.find(x => x.dataKey == index);\r\n if(findData != null)\r\n findData.autoClose = value.autoClose;\r\n });\r\n this._data = changes.data.currentValue;\r\n this.updatePaginatedData();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.updatePaginatedData();\r\n }\r\n ngAfterViewInit() {\r\n this.initializeColumnWidths();\r\n // this.adjustTableWidth()\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeColumnWidths() {\r\n var padding = 31\r\n var widthDefault = 150\r\n this.columnWidths = this.columns.map(column => column.width);\r\n const containerWidth = this.tableContainer.nativeElement.offsetWidth;\r\n const autoColumns = this.columns.filter(column => column.width == null);\r\n const totalFixedWidth = this.columns.reduce((sum, column) =>\r\n column.width != null ? (sum + this.getWidthValue(column.width)) : sum, 0);\r\n const remainingWidth = containerWidth - (totalFixedWidth + (((this.columns.length - autoColumns.length) * padding)+ (this.expandable ? 61 : 0)));\r\n\r\n if (autoColumns.length > 0) {\r\n var autoColumnWidth = 0;\r\n if(remainingWidth < widthDefault)\r\n autoColumnWidth = widthDefault;\r\n else\r\n autoColumnWidth = Math.max(0, remainingWidth / autoColumns.length);\r\n autoColumns.forEach(column => column.width = autoColumnWidth- padding);\r\n }\r\n this.columnWidths = this.columns.map(column => column.width);\r\n }\r\n // adjustTableWidth() {\r\n // const totalWidth = this.columns.reduce((sum, column) => sum + this.getWidthValue(column.width), 0);\r\n // this.tableElement.nativeElement.style.width = `${totalWidth}px`;\r\n // }\r\n getWidthValue(width: number): number {\r\n return width === null ? 100 : width;\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalSize / this.pageSize);\r\n }\r\n\r\n getCellValue(item: any, column: LibeyColumnDirective): string {\r\n const value = this.getNestedValue(item, column.property);\r\n if (Array.isArray(value) && column.arrayMap) {\r\n return value.map(v => this.getNestedValue(v, column.arrayMap!)).join(', ');\r\n }\r\n return value;\r\n }\r\n\r\n private getNestedValue(obj: any, path: string): any {\r\n return path.split('.').reduce((o, key) => {\r\n if (o && typeof o === 'object' && key in o) {\r\n return o[key];\r\n }\r\n return undefined;\r\n }, obj);\r\n }\r\n\r\n private updatePaginatedData(): void {\r\n if(this.viewPaginate && this.internalPagination){\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.paginatedData = this.data.slice(start, end);\r\n }else{\r\n this.paginatedData = this.data;\r\n } \r\n }\r\n pageRange(): number[] {\r\n const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));\r\n const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);\r\n const startFinish = end - this.maxPageButtons + 1;\r\n return Array.from({length: end - startFinish + 1}, (_, i) => startFinish + i);\r\n }\r\n goToPage(page: number): void {\r\n this.currentPage = Math.max(1, Math.min(page, this.totalPages));\r\n if(this.internalPagination){ \r\n this.updatePaginatedData(); \r\n }else{\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n // hasChildren(row: any): boolean{\r\n // return Array.isArray(row.child) && row.child.length > 0;\r\n // }\r\n toggleRow(index: number){\r\n this.rowExpandable[index] = !this.rowExpandable[index];\r\n }\r\n toggleRowDetail(key: number, indexData: number, column: LibeyColumnDirective, data: any){\r\n if(column.expandable){\r\n var exist = this.rowExpandableDetail.find(x => x.key == key && x.dataKey == indexData);\r\n if(exist == null){\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => (x.key != key || x.dataKey != indexData) && x.autoClose == false);\r\n var item = new DataKey();\r\n item.key = key;\r\n item.dataKey = indexData;\r\n item.childTableTemplate = column.childTableTemplate;\r\n item.autoClose = column.isAutoClose(data);\r\n this.rowExpandableDetail.push(item);\r\n }else{\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => x.key != key || x.dataKey != indexData);\r\n }\r\n }\r\n }\r\n getChildren(fila: any): any[] {\r\n return fila.hijos || [];\r\n }\r\n onResizeStart(index: number, event: MouseEvent) {\r\n this.resizingColumnIndex = index;\r\n this.startX = event.pageX;\r\n this.startWidth = this.columnWidths[index];\r\n document.addEventListener('mousemove', this.onResizeMove);\r\n document.addEventListener('mouseup', this.onResizeEnd);\r\n }\r\n onResizeMove = (event: MouseEvent) => {\r\n if (this.resizingColumnIndex !== null) {\r\n const diff = event.pageX - this.startX;\r\n this.columnWidths[this.resizingColumnIndex] = Math.max(this.startWidth + diff, 50);\r\n\r\n }\r\n }\r\n onResizeEnd = () => {\r\n this.resizingColumnIndex = null;\r\n document.removeEventListener('mousemove', this.onResizeMove);\r\n document.removeEventListener('mouseup', this.onResizeEnd);\r\n }\r\n existRowExpandableDetail(key: number, indexData: number) : boolean{\r\n return this.rowExpandableDetail.filter(x => x.key == key && x.dataKey == indexData).length > 0;\r\n }\r\n viewRowExpandableDetail(indexData: number) :boolean{\r\n return this.rowExpandableDetail.filter(x => x.dataKey == indexData).length > 0;\r\n }\r\n findRowExpandableDetail(indexData: number) :TemplateRef<any>{\r\n var find = this.rowExpandableDetail.find(x => x.dataKey == indexData);\r\n if(find)\r\n return find.childTableTemplate; \r\n else\r\n return null;\r\n }\r\n}\r\n","<div class=\"table-container\" #tableContainer [style.height]=\"height == null ? 'auto':(height + 'px')\">\r\n <!-- <table cdkDropList (cdkDropListDropped)=\"drop($event)\"> -->\r\n <table #table [ngClass]=\"class\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"expandable\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\" style=\"width: 25px;\"></th>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <th [style.width]=\"columnWidths[i] == null ? 'auto':(columnWidths[i] + 'px')\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\">\r\n <span style=\"white-space: nowrap;\">{{ column.header }}</span>\r\n <div class=\"resize-handle\" (mousedown)=\"onResizeStart(i, $event)\"></div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"_data.length == 0\">\r\n <tr>\r\n <td [colSpan]=\"expandable ? (columns.length + 1) : (columns.length)\" class=\"text-center\">\r\n No existen datos disponibles\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginatedData.length != 0\">\r\n <ng-container *ngFor=\"let item of paginatedData; let a = index\">\r\n <tr>\r\n <td *ngIf=\"expandable\">\r\n <button (click)=\"toggleRow(a)\">\r\n <i [ngClass]=\"rowExpandable[a] ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </td>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <td [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container *ngIf=\"column.cellTemplate; else defaultCell\">\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: { $implicit: item }\"></ng-container>\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultCell>\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n {{ getCellValue(item, column) }}\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"viewRowExpandableDetail(a)\">\r\n <ng-container *ngTemplateOutlet=\"findRowExpandableDetail(a); context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <tr *ngIf=\"rowExpandable[a]\">\r\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\">\r\n <ng-container [ngTemplateOutlet]=\"childTableTemplate\"\r\n [ngTemplateOutletContext]=\"{ parentRow: item }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div *ngIf=\"viewPaginate && _data.length != 0\" class=\"pagination-controls\">\r\n <div class=\"d-align-center\">\r\n <label class=\"lbl-footer me-20px\"># Registros: {{this.totalSize}}</label>\r\n <label class=\"lbl-footer\"># Filas: {{this.pageSize}}</label>\r\n </div>\r\n <div>\r\n <button (click)=\"goToPage(1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-first-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(currentPage - 1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-previous-page\"></i>\r\n </button>\r\n <ng-container *ngFor=\"let page of pageRange()\">\r\n <button\r\n (click)=\"goToPage(page)\"\r\n [class.active]=\"currentPage === page\"\r\n [disabled]=\"currentPage === page\">\r\n {{ page }}\r\n </button>\r\n </ng-container>\r\n <button (click)=\"goToPage(currentPage + 1)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-next-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(totalPages)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-last-page\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n","// table.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LibeyNgTableComponent } from './libey-ng-table.component';\r\n\r\n@NgModule({\r\n declarations: [LibeyNgTableComponent, LibeyColumnDirective],\r\n imports: [CommonModule,FormsModule],\r\n exports: [LibeyNgTableComponent, LibeyColumnDirective]\r\n})\r\nexport class LibeyNgTableModule { }","import { NgModule } from '@angular/core';\nimport { LibeyNgComponentLibraryComponent } from './libey-ng-component-library.component';\nimport { LibeyNgTableComponent } from './table/libey-ng-table.component';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { LibeyNgTableModule } from './table/libey-ng-table.module';\n\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n FormsModule,\n LibeyNgTableModule\n ],\n exports: [LibeyNgTableModule],\n providers: [DatePipe]\n})\nexport class LibeyNgComponentLibraryModule { }\n","/*\n * Public API Surface of libey-ng-component-library\n */\n\nexport * from './lib/libey-ng-component-library.service';\nexport * from './lib/libey-ng-component-library.component';\nexport * from './lib/libey-ng-component-library.module';\nexport * from './lib/table/libey-ng-table.module';\nexport * from './lib/table/libey-ng-table.component';\nexport * from './lib/table/directives/libey-column.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libey-ng-component-library.js","sources":["../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.service.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.component.ts","../../../projects/libey-ng-component-library/src/lib/table/directives/libey-column.directive.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.ts","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.component.html","../../../projects/libey-ng-component-library/src/lib/table/libey-ng-table.module.ts","../../../projects/libey-ng-component-library/src/lib/libey-ng-component-library.module.ts","../../../projects/libey-ng-component-library/src/public-api.ts","../../../projects/libey-ng-component-library/src/libey-ng-component-library.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibeyNgComponentLibraryService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-libey-ngComponent-library',\n template: `\n <p>\n libey-ng-component-library works!\n </p>\n `,\n styles: [\n ]\n})\nexport class LibeyNgComponentLibraryComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'libey-ng-column'\r\n})\r\nexport class LibeyColumnDirective {\r\n @Input() header!: string;\r\n @Input() property!: string;\r\n @Input() width!: number;\r\n @Input() arrayMap?: string;\r\n @Input() isArray?: boolean;\r\n @Input() expandable?: boolean;\r\n @Input() class?: string;\r\n @Input() childTableTemplate: TemplateRef<any>;\r\n @Input() isAutoClose: (item: any) => boolean = () => true;\r\n @ContentChild(TemplateRef) cellTemplate!: TemplateRef<any>;\r\n}","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\ninterface IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\nclass DataKey implements IDataKey {\r\n key: number;\r\n dataKey: number;\r\n childTableTemplate: TemplateRef<any>;\r\n data: any[];\r\n autoClose: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'libey-ng-table',\r\n templateUrl: './libey-ng-table.component.html',\r\n styleUrls: ['./libey-ng-table.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LibeyNgTableComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() set data(value: any[]) {\r\n this._data = value;\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n @Input() pageSize: number = 10;\r\n @Input() totalSize: number = 0;\r\n @Input() maxPageButtons: number = 5;\r\n @Input() height: number;\r\n @Input() expandable: boolean = false;\r\n @Input() viewPaginate: boolean = true;\r\n @Input() childTableTemplate!: TemplateRef<any>;\r\n @Input() headerfixed: boolean = false;\r\n @Input() class: string;\r\n @Input() internalPagination: boolean = true;\r\n @Output() pageChange = new EventEmitter<number>();\r\n \r\n @ContentChildren(LibeyColumnDirective) columns!: QueryList<LibeyColumnDirective>;\r\n\r\n rowExpandable: boolean[] = [];\r\n rowExpandableDetail: IDataKey[] = [];\r\n currentPage: number = 1;\r\n paginatedData: any[] = [];\r\n _data: any[] = [];\r\n columnWidths: number[] = [];\r\n resizingColumnIndex: number | null = null;\r\n startX: number = 0;\r\n startWidth: number = 0;\r\n @ViewChild('tableContainer') tableContainer!: ElementRef;\r\n @ViewChild('table') tableElement!: ElementRef;\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes.data.previousValue){\r\n changes.data.currentValue.forEach((value, index) => {\r\n var findData = this.rowExpandableDetail.find(x => x.dataKey == index);\r\n if(findData != null)\r\n findData.autoClose = value.autoClose;\r\n });\r\n this._data = changes.data.currentValue;\r\n this.updatePaginatedData();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.updatePaginatedData();\r\n }\r\n ngAfterViewInit() {\r\n this.initializeColumnWidths();\r\n // this.adjustTableWidth()\r\n this.cdr.detectChanges();\r\n }\r\n\r\n initializeColumnWidths() {\r\n var padding = 31\r\n var widthDefault = 150\r\n this.columnWidths = this.columns.map(column => column.width);\r\n const containerWidth = this.tableContainer.nativeElement.offsetWidth;\r\n const autoColumns = this.columns.filter(column => column.width == null);\r\n const totalFixedWidth = this.columns.reduce((sum, column) =>\r\n column.width != null ? (sum + this.getWidthValue(column.width)) : sum, 0);\r\n const remainingWidth = containerWidth - (totalFixedWidth + (((this.columns.length - autoColumns.length) * padding)+ (this.expandable ? 61 : 0)));\r\n\r\n if (autoColumns.length > 0) {\r\n var autoColumnWidth = 0;\r\n if(remainingWidth < widthDefault)\r\n autoColumnWidth = widthDefault;\r\n else\r\n autoColumnWidth = Math.max(0, remainingWidth / autoColumns.length);\r\n autoColumns.forEach(column => column.width = autoColumnWidth- padding);\r\n }\r\n this.columnWidths = this.columns.map(column => column.width);\r\n }\r\n // adjustTableWidth() {\r\n // const totalWidth = this.columns.reduce((sum, column) => sum + this.getWidthValue(column.width), 0);\r\n // this.tableElement.nativeElement.style.width = `${totalWidth}px`;\r\n // }\r\n getWidthValue(width: number): number {\r\n return width === null ? 100 : width;\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.ceil(this.totalSize / this.pageSize);\r\n }\r\n\r\n getCellValue(item: any, column: LibeyColumnDirective): string {\r\n const value = this.getNestedValue(item, column.property);\r\n if (Array.isArray(value) && column.arrayMap) {\r\n return value.map(v => this.getNestedValue(v, column.arrayMap!)).join(', ');\r\n }\r\n return value;\r\n }\r\n\r\n private getNestedValue(obj: any, path: string): any {\r\n return path.split('.').reduce((o, key) => {\r\n if (o && typeof o === 'object' && key in o) {\r\n return o[key];\r\n }\r\n return undefined;\r\n }, obj);\r\n }\r\n\r\n private updatePaginatedData(): void {\r\n if(this.viewPaginate && this.internalPagination){\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.paginatedData = this.data.slice(start, end);\r\n }else{\r\n this.paginatedData = this.data;\r\n } \r\n }\r\n pageRange(): number[] {\r\n const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));\r\n const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);\r\n const startPreFinish = end - this.maxPageButtons + 1;\r\n const startFinish = startPreFinish < 1 ? 1 : startPreFinish;\r\n return Array.from({length: end - startFinish + 1}, (_, i) => startFinish + i);\r\n }\r\n goToPage(page: number): void {\r\n this.currentPage = Math.max(1, Math.min(page, this.totalPages));\r\n if(this.internalPagination){ \r\n this.updatePaginatedData(); \r\n }else{\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n // hasChildren(row: any): boolean{\r\n // return Array.isArray(row.child) && row.child.length > 0;\r\n // }\r\n toggleRow(index: number){\r\n this.rowExpandable[index] = !this.rowExpandable[index];\r\n }\r\n toggleRowDetail(key: number, indexData: number, column: LibeyColumnDirective, data: any){\r\n if(column.expandable){\r\n var exist = this.rowExpandableDetail.find(x => x.key == key && x.dataKey == indexData);\r\n if(exist == null){\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => (x.key != key || x.dataKey != indexData) && x.autoClose == false);\r\n var item = new DataKey();\r\n item.key = key;\r\n item.dataKey = indexData;\r\n item.childTableTemplate = column.childTableTemplate;\r\n item.autoClose = column.isAutoClose(data);\r\n this.rowExpandableDetail.push(item);\r\n }else{\r\n this.rowExpandableDetail = this.rowExpandableDetail.filter(x => x.key != key || x.dataKey != indexData);\r\n }\r\n }\r\n }\r\n getChildren(fila: any): any[] {\r\n return fila.hijos || [];\r\n }\r\n onResizeStart(index: number, event: MouseEvent) {\r\n this.resizingColumnIndex = index;\r\n this.startX = event.pageX;\r\n this.startWidth = this.columnWidths[index];\r\n document.addEventListener('mousemove', this.onResizeMove);\r\n document.addEventListener('mouseup', this.onResizeEnd);\r\n }\r\n onResizeMove = (event: MouseEvent) => {\r\n if (this.resizingColumnIndex !== null) {\r\n const diff = event.pageX - this.startX;\r\n this.columnWidths[this.resizingColumnIndex] = Math.max(this.startWidth + diff, 50);\r\n\r\n }\r\n }\r\n onResizeEnd = () => {\r\n this.resizingColumnIndex = null;\r\n document.removeEventListener('mousemove', this.onResizeMove);\r\n document.removeEventListener('mouseup', this.onResizeEnd);\r\n }\r\n existRowExpandableDetail(key: number, indexData: number) : boolean{\r\n return this.rowExpandableDetail.filter(x => x.key == key && x.dataKey == indexData).length > 0;\r\n }\r\n viewRowExpandableDetail(indexData: number) :boolean{\r\n return this.rowExpandableDetail.filter(x => x.dataKey == indexData).length > 0;\r\n }\r\n findRowExpandableDetail(indexData: number) :TemplateRef<any>{\r\n var find = this.rowExpandableDetail.find(x => x.dataKey == indexData);\r\n if(find)\r\n return find.childTableTemplate; \r\n else\r\n return null;\r\n }\r\n}\r\n","<div class=\"table-container\" #tableContainer [style.height]=\"height == null ? 'auto':(height + 'px')\">\r\n <!-- <table cdkDropList (cdkDropListDropped)=\"drop($event)\"> -->\r\n <table #table [ngClass]=\"class\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"expandable\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\" style=\"width: 25px;\"></th>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <th [style.width]=\"columnWidths[i] == null ? 'auto':(columnWidths[i] + 'px')\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\">\r\n <span style=\"white-space: nowrap;\">{{ column.header }}</span>\r\n <div class=\"resize-handle\" (mousedown)=\"onResizeStart(i, $event)\"></div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"_data.length == 0\">\r\n <tr>\r\n <td [colSpan]=\"expandable ? (columns.length + 1) : (columns.length)\" class=\"text-center\">\r\n No existen datos disponibles\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginatedData.length != 0\">\r\n <ng-container *ngFor=\"let item of paginatedData; let a = index\">\r\n <tr>\r\n <td *ngIf=\"expandable\">\r\n <button (click)=\"toggleRow(a)\">\r\n <i [ngClass]=\"rowExpandable[a] ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </td>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <td [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container *ngIf=\"column.cellTemplate; else defaultCell\">\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: { $implicit: item }\"></ng-container>\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultCell>\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap;\">\r\n {{ getCellValue(item, column) }}\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(i, a) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"viewRowExpandableDetail(a)\">\r\n <ng-container *ngTemplateOutlet=\"findRowExpandableDetail(a); context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <tr *ngIf=\"rowExpandable[a]\">\r\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\">\r\n <ng-container [ngTemplateOutlet]=\"childTableTemplate\"\r\n [ngTemplateOutletContext]=\"{ parentRow: item }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div *ngIf=\"viewPaginate && _data.length != 0\" class=\"pagination-controls\">\r\n <div class=\"d-align-center\">\r\n <label class=\"lbl-footer me-20px\"># Registros: {{this.totalSize}}</label>\r\n <label class=\"lbl-footer\"># Filas: {{this.pageSize}}</label>\r\n </div>\r\n <div>\r\n <button (click)=\"goToPage(1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-first-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(currentPage - 1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-previous-page\"></i>\r\n </button>\r\n <ng-container *ngFor=\"let page of pageRange()\">\r\n <button\r\n (click)=\"goToPage(page)\"\r\n [class.active]=\"currentPage === page\"\r\n [disabled]=\"currentPage === page\">\r\n {{ page }}\r\n </button>\r\n </ng-container>\r\n <button (click)=\"goToPage(currentPage + 1)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-next-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(totalPages)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-last-page\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n","// table.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LibeyColumnDirective } from './directives/libey-column.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LibeyNgTableComponent } from './libey-ng-table.component';\r\n\r\n@NgModule({\r\n declarations: [LibeyNgTableComponent, LibeyColumnDirective],\r\n imports: [CommonModule,FormsModule],\r\n exports: [LibeyNgTableComponent, LibeyColumnDirective]\r\n})\r\nexport class LibeyNgTableModule { }","import { NgModule } from '@angular/core';\nimport { LibeyNgComponentLibraryComponent } from './libey-ng-component-library.component';\nimport { LibeyNgTableComponent } from './table/libey-ng-table.component';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { LibeyNgTableModule } from './table/libey-ng-table.module';\n\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n FormsModule,\n LibeyNgTableModule\n ],\n exports: [LibeyNgTableModule],\n providers: [DatePipe]\n})\nexport class LibeyNgComponentLibraryModule { }\n","/*\n * Public API Surface of libey-ng-component-library\n */\n\nexport * from './lib/libey-ng-component-library.service';\nexport * from './lib/libey-ng-component-library.component';\nexport * from './lib/libey-ng-component-library.module';\nexport * from './lib/table/libey-ng-table.module';\nexport * from './lib/table/libey-ng-table.component';\nexport * from './lib/table/directives/libey-column.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAKa,8BAA8B,CAAA;AAEzC,IAAA,WAAA,GAAA,GAAiB;;4HAFN,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA,CAAA;4FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCQY,gCAAgC,CAAA;AAE3C,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;8HALU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EARjC,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAIU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAV5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACD,oBAAA,MAAM,EAAE,EACP;AACF,iBAAA,CAAA;;;MCNY,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;AAYW,QAAA,IAAA,CAAA,WAAW,GAA2B,MAAM,IAAI,CAAC;AAE3D,KAAA;;kHAXY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+TAUjB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAVd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA,CAAA;8BAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACqB,YAAY,EAAA,CAAA;sBAAtC,YAAY;uBAAC,WAAW,CAAA;;;ACL3B,MAAM,OAAO,CAAA;AAMZ,CAAA;MASY,qBAAqB,CAAA;AAgChC,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAzBjC,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;QACtB,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;QAE3B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;QAE7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAE7B,IAAkB,CAAA,kBAAA,GAAY,IAAI,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAIlD,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;QAC9B,IAAmB,CAAA,mBAAA,GAAe,EAAE,CAAC;QACrC,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;QACxB,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC1B,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QAClB,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;QAC5B,IAAmB,CAAA,mBAAA,GAAkB,IAAI,CAAC;QAC1C,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;QACnB,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;AAiIvB,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAiB,KAAI;AACnC,YAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;gBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;AAEpF,aAAA;AACH,SAAC,CAAA;QACD,IAAW,CAAA,WAAA,GAAG,MAAK;AACjB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,SAAC,CAAA;KAzI6C;IA/B9C,IAAa,IAAI,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AA2BD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAC;AAC5B,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACjD,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;gBACtE,IAAG,QAAQ,IAAI,IAAI;AACjB,oBAAA,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACzC,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;KACF;IACD,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IACD,eAAe,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAE9B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,sBAAsB,GAAA;QACpB,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,IAAI,YAAY,GAAG,GAAG,CAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC;AACrE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACxE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KACtD,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5E,QAAA,MAAM,cAAc,GAAG,cAAc,IAAI,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,OAAO,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjJ,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAG,cAAc,GAAG,YAAY;gBAC9B,eAAe,GAAG,YAAY,CAAC;;AAE/B,gBAAA,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACrE,YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,eAAe,GAAE,OAAO,CAAC,CAAC;AACxE,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9D;;;;;AAKD,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,OAAO,KAAK,KAAK,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;KACrC;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClD;IAED,YAAY,CAAC,IAAS,EAAE,MAA4B,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE;YAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,QAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;YACvC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;AAC1C,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;SAClB,EAAE,GAAG,CAAC,CAAC;KACT;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAC;AAC9C,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;AACrD,YAAA,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClD,SAAA;AAAI,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;AAChC,SAAA;KACF;IACD,SAAS,GAAA;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACrD,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,GAAG,WAAW,GAAG,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;KAC/E;AACD,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,IAAG,IAAI,CAAC,kBAAkB,EAAC;YACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;AAAI,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC,SAAA;KACF;;;;AAID,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACxD;AACD,IAAA,eAAe,CAAC,GAAW,EAAE,SAAiB,EAAE,MAA4B,EAAE,IAAS,EAAA;QACrF,IAAG,MAAM,CAAC,UAAU,EAAC;YACnB,IAAI,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;YACvF,IAAG,KAAK,IAAI,IAAI,EAAC;AACf,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AAClI,gBAAA,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBACpD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,aAAA;AAAI,iBAAA;gBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;AACzG,aAAA;AACF,SAAA;KACF;AACD,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACzB;IACD,aAAa,CAAC,KAAa,EAAE,KAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACxD;IAaD,wBAAwB,CAAC,GAAW,EAAE,SAAiB,EAAA;QACrD,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAChG;AACD,IAAA,uBAAuB,CAAC,SAAiB,EAAA;QACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAChF;AACD,IAAA,uBAAuB,CAAC,SAAiB,EAAA;AACvC,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;AACtE,QAAA,IAAG,IAAI;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;;AAE/B,YAAA,OAAO,IAAI,CAAC;KACf;;mHAtLU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAmBf,oBAAoB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CvC,+mJA8FA,EAAA,MAAA,EAAA,CAAA,6+RAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDrEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,WAAW,EAAE,iCAAiC;oBAC9C,SAAS,EAAE,CAAC,gCAAgC,CAAC;oBAC7C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA,CAAA;wGAGc,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAMG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEgC,OAAO,EAAA,CAAA;sBAA7C,eAAe;uBAAC,oBAAoB,CAAA;gBAWR,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;gBACP,YAAY,EAAA,CAAA;sBAA/B,SAAS;uBAAC,OAAO,CAAA;;;AExDpB;MAYa,kBAAkB,CAAA;;gHAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAChD,YAAY,EAAC,WAAW,CAAA,EAAA,OAAA,EAAA,CACxB,qBAAqB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAE1C,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAHpB,OAAA,EAAA,CAAA,CAAC,YAAY,EAAC,WAAW,CAAC,CAAA,EAAA,CAAA,CAAA;4FAGxB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;AAC3D,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAC,WAAW,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;AACvD,iBAAA,CAAA;;;MCSY,6BAA6B,CAAA;;2HAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,YAPtC,YAAY;QACZ,WAAW;AACX,QAAA,kBAAkB,aAEV,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAF7B,SAAA,EAAA,CAAC,QAAQ,CAAC,EANZ,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,kBAAkB;AACnB,SAAA,EACS,kBAAkB,CAAA,EAAA,CAAA,CAAA;4FAGjB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EACb;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,kBAAkB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,iBAAA,CAAA;;;ACnBD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "libey-ng-component-library",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^12.2.0",
6
6
  "@angular/core": "^12.2.0",
7
7
  "@angular/forms": "^12.2.0"
8
8
  },
9
9
  "dependencies": {
10
+ "libey-ng-component-library": "file:",
10
11
  "tslib": "^2.3.0"
11
12
  },
12
13
  "main": "bundles/libey-ng-component-library.umd.js",