lib-portal-angular 0.0.76 → 0.0.78

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.
@@ -48,11 +48,11 @@ export class TabComponent {
48
48
  }
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:#00444c;border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:#00444c;color:#fff;border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:#2ca58d;color:#fff}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:#00444c;border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:#00444c;color:#fff;border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:#2ca58d;color:#fff}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
55
+ args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
56
56
  }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { tabs: [{
57
57
  type: Input
58
58
  }], activeTabIndex: [{
@@ -1,6 +1,6 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpParams } from '@angular/common/http';
3
- import { map } from 'rxjs/operators';
1
+ import { Injectable } from "@angular/core";
2
+ import { HttpParams } from "@angular/common/http";
3
+ import { map } from "rxjs/operators";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
6
6
  export class DataPaginateService {
@@ -9,29 +9,34 @@ export class DataPaginateService {
9
9
  }
10
10
  fetchData(url, params) {
11
11
  let httpParams = new HttpParams()
12
- .set('page', params.pageNumber.toString())
13
- .set('limit', params.pageSize.toString())
14
- .set('sort', params.sortColumn)
15
- .set('order', params.sortDirection);
12
+ .set("page", params.pageNumber.toString())
13
+ .set("limit", params.pageSize.toString())
14
+ .set("sort", params.sortColumn)
15
+ .set("order", params.sortDirection);
16
16
  if (params.filterDescription) {
17
- httpParams = httpParams.set('description', params.filterDescription);
17
+ httpParams = httpParams.set("description", params.filterDescription);
18
18
  }
19
- return this.http.get(url, { params: httpParams }).pipe(map(response => {
19
+ if (params.filterField) {
20
+ httpParams = httpParams.set("filterField", params.filterField);
21
+ }
22
+ return this.http
23
+ .get(url, { params: httpParams })
24
+ .pipe(map((response) => {
20
25
  const items = response.data || [];
21
26
  const totalItems = response.meta.total || 0;
22
27
  return {
23
28
  items,
24
- totalItems
29
+ totalItems,
25
30
  };
26
31
  }));
27
32
  }
28
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPaginateService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPaginateService, providedIn: 'root' }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPaginateService, providedIn: "root" }); }
30
35
  }
31
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPaginateService, decorators: [{
32
37
  type: Injectable,
33
38
  args: [{
34
- providedIn: 'root'
39
+ providedIn: "root",
35
40
  }]
36
41
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wYWdpbmF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvZGF0YS1wYWdpbmF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBa0JyQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDO0lBRXpDLFNBQVMsQ0FBSSxHQUFXLEVBQUUsTUFBMEI7UUFDaEQsSUFBSSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDNUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3pDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7YUFDOUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBeUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMxRixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDWCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDNUMsT0FBTztnQkFDSCxLQUFLO2dCQUNMLFVBQVU7YUFDYixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBeEJRLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhSW5kZXhQYWdpbmF0ZSB7XG4gICAgZmlsdGVyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgcGFnZU51bWJlcjogbnVtYmVyO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgc29ydENvbHVtbjogc3RyaW5nO1xuICAgIHNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0ZVJlc3VsdDxUPiB7XG4gICAgaXRlbXM6IFRbXTtcbiAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBhZ2luYXRlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7IH1cblxuICAgIGZldGNoRGF0YTxUPih1cmw6IHN0cmluZywgcGFyYW1zOiBJRGF0YUluZGV4UGFnaW5hdGUpOiBPYnNlcnZhYmxlPElQYWdpbmF0ZVJlc3VsdDxUPj4ge1xuICAgICAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgICAgICAgIC5zZXQoJ3BhZ2UnLCBwYXJhbXMucGFnZU51bWJlci50b1N0cmluZygpKVxuICAgICAgICAgICAgLnNldCgnbGltaXQnLCBwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIC5zZXQoJ3NvcnQnLCBwYXJhbXMuc29ydENvbHVtbilcbiAgICAgICAgICAgIC5zZXQoJ29yZGVyJywgcGFyYW1zLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnZGVzY3JpcHRpb24nLCBwYXJhbXMuZmlsdGVyRGVzY3JpcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyBtZXRhOiB7IHRvdGFsOiBudW1iZXIgfSwgZGF0YTogVFtdIH0+KHVybCwgeyBwYXJhbXM6IGh0dHBQYXJhbXMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5kYXRhIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsSXRlbXMgPSByZXNwb25zZS5tZXRhLnRvdGFsIHx8IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wYWdpbmF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvZGF0YS1wYWdpbmF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBbUJyQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBRyxDQUFDO0lBRXhDLFNBQVMsQ0FDUCxHQUFXLEVBQ1gsTUFBMEI7UUFFMUIsSUFBSSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDOUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3pDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7YUFDOUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDNUIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3RCLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEU7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUF5QyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDeEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxVQUFVO2FBQ1gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOytHQWpDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhSW5kZXhQYWdpbmF0ZSB7XG4gIGZpbHRlckRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBmaWx0ZXJGaWVsZDogc3RyaW5nO1xuICBwYWdlTnVtYmVyOiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHNvcnRDb2x1bW46IHN0cmluZztcbiAgc29ydERpcmVjdGlvbjogXCJhc2NcIiB8IFwiZGVzY1wiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0ZVJlc3VsdDxUPiB7XG4gIGl0ZW1zOiBUW107XG4gIHRvdGFsSXRlbXM6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBhZ2luYXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBmZXRjaERhdGE8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBJRGF0YUluZGV4UGFnaW5hdGVcbiAgKTogT2JzZXJ2YWJsZTxJUGFnaW5hdGVSZXN1bHQ8VD4+IHtcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoXCJwYWdlXCIsIHBhcmFtcy5wYWdlTnVtYmVyLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KFwibGltaXRcIiwgcGFyYW1zLnBhZ2VTaXplLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KFwic29ydFwiLCBwYXJhbXMuc29ydENvbHVtbilcbiAgICAgIC5zZXQoXCJvcmRlclwiLCBwYXJhbXMuc29ydERpcmVjdGlvbik7XG5cbiAgICBpZiAocGFyYW1zLmZpbHRlckRlc2NyaXB0aW9uKSB7XG4gICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoXCJkZXNjcmlwdGlvblwiLCBwYXJhbXMuZmlsdGVyRGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuZmlsdGVyRmllbGQpIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldChcImZpbHRlckZpZWxkXCIsIHBhcmFtcy5maWx0ZXJGaWVsZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IG1ldGE6IHsgdG90YWw6IG51bWJlciB9OyBkYXRhOiBUW10gfT4odXJsLCB7IHBhcmFtczogaHR0cFBhcmFtcyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmRhdGEgfHwgW107XG4gICAgICAgICAgY29uc3QgdG90YWxJdGVtcyA9IHJlc3BvbnNlLm1ldGEudG90YWwgfHwgMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0b3RhbEl0ZW1zLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { Observable, Subject } from 'rxjs';
3
- import { takeUntil } from 'rxjs/operators';
4
- import { ButtonClasses } from '../../enum/ButtonClassesEnum'; // Importando o enum
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from "@angular/core";
2
+ import { Observable, Subject } from "rxjs";
3
+ import { takeUntil } from "rxjs/operators";
4
+ import { ButtonClasses } from "../../enum/ButtonClassesEnum"; // Importando o enum
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../service/auth-service.service";
7
7
  import * as i2 from "../../service/refresh-service.service";
@@ -18,45 +18,67 @@ export class DataTableComponent {
18
18
  this.columns = [];
19
19
  this.hiddenColumns = [];
20
20
  this.defaultItemsPerPage = 10;
21
- this.itemsPerPageLabel = 'Items per page:';
21
+ this.itemsPerPageLabel = "Items per page:";
22
22
  this.showActionColumn = false;
23
- this.actionColumnLabel = 'Actions';
23
+ this.actionColumnLabel = "Actions";
24
24
  this.totalItems = 0;
25
25
  this.fetchDataFunction = () => {
26
- return new Observable(subscriber => subscriber.error('Implement the fetchDataFunction to fetch paginated data from the back-end.'));
26
+ return new Observable((subscriber) => subscriber.error("Implement the fetchDataFunction to fetch paginated data from the back-end."));
27
27
  };
28
28
  this.editPermissions = [];
29
29
  this.deletePermissions = [];
30
30
  this.viewPermissions = [];
31
31
  this.showPageInfo = true;
32
- this.pageText = 'Page';
33
- this.ofText = 'of';
34
- this.filterDescription = '';
35
- this.buttonLabel = ''; // Adicionando o Input para o label do botão
36
- this.sortChange = new EventEmitter();
32
+ this.pageText = "Page";
33
+ this.ofText = "of";
34
+ this.filterDescription = "";
35
+ this.buttonLabel = "";
36
+ this.pagedData = [];
37
+ this.initialFilterField = null;
37
38
  this.pageChange = new EventEmitter();
38
39
  this.itemsPerPageChange = new EventEmitter();
39
40
  this.onEditTable = new EventEmitter();
40
41
  this.onDeleteTable = new EventEmitter();
41
42
  this.onViewTable = new EventEmitter();
42
- this.onButtonClick = new EventEmitter(); // Novo evento
43
+ this.onButtonClick = new EventEmitter();
44
+ this.filterFieldChange = new EventEmitter();
43
45
  this.itemsPerPageOptions = [5, 10, 15, 25];
44
46
  this.currentPage = 1;
45
- this.sortColumn = '';
46
- this.sortDirection = 'asc';
47
- this.pagedData = [];
47
+ this.sortColumn = "";
48
+ this.sortDirection = "asc";
49
+ this.selectedSearchField = "";
48
50
  this.isLoading = false;
49
51
  this.destroy$ = new Subject();
50
52
  this.isInitialized = false; // Flag para evitar chamadas duplas
51
53
  this.ButtonClasses = ButtonClasses;
52
54
  this.labelStyle = {
53
- 'font-family': 'Inter, Arial, sans-serif',
54
- 'font-size': '14px',
55
- 'color': '#000'
55
+ "font-family": "Inter, Arial, sans-serif",
56
+ "font-size": "14px",
57
+ color: "#000",
56
58
  };
57
59
  }
58
60
  ngOnInit() {
59
- this.fetchData();
61
+ if (this.initialFilterField) {
62
+ // Se o usuário definir o initialFilterField, ele será usado como o campo inicial
63
+ this.selectedSearchField = this.initialFilterField;
64
+ this.sortColumn = this.initialFilterField;
65
+ this.sortDirection = "asc";
66
+ this.columns = this.columns.map((column) => ({
67
+ ...column,
68
+ isSearchSelected: column.prop === this.initialFilterField,
69
+ }));
70
+ }
71
+ else if (this.columns.length > 0) {
72
+ // Caso contrário, usa a primeira coluna como padrão
73
+ this.selectedSearchField = this.columns[0].prop;
74
+ this.sortColumn = this.columns[0].prop;
75
+ this.sortDirection = "asc";
76
+ this.columns = this.columns.map((column) => ({
77
+ ...column,
78
+ isSearchSelected: column.prop === this.selectedSearchField,
79
+ }));
80
+ }
81
+ //this.fetchData();
60
82
  this.refreshService.refresh$
61
83
  .pipe(takeUntil(this.destroy$))
62
84
  .subscribe(() => {
@@ -66,29 +88,38 @@ export class DataTableComponent {
66
88
  });
67
89
  this.isInitialized = true;
68
90
  }
69
- ngOnChanges(changes) {
70
- if (changes['totalItems'] || changes['defaultItemsPerPage'] || changes['currentPage'] || changes['fetchDataFunction'] || changes['filterDescription']) {
71
- this.fetchData();
72
- }
73
- }
91
+ // ngOnChanges(changes: SimpleChanges) {
92
+ // if (
93
+ // changes["totalItems"] ||
94
+ // changes["defaultItemsPerPage"] ||
95
+ // changes["currentPage"] ||
96
+ // changes["fetchDataFunction"] ||
97
+ // changes["filterDescription"]
98
+ // ) {
99
+ // this.fetchData();
100
+ // }
101
+ // }
74
102
  ngOnDestroy() {
75
103
  this.destroy$.next();
76
104
  this.destroy$.complete();
77
105
  }
78
106
  getNestedProperty(obj, path) {
79
- return path.split('.').reduce((acc, part) => acc && acc[part], obj);
107
+ return path.split(".").reduce((acc, part) => acc && acc[part], obj);
80
108
  }
81
109
  fetchData() {
82
110
  if (this.fetchDataFunction) {
83
111
  this.isLoading = true;
84
112
  const params = {
85
113
  filterDescription: this.filterDescription,
86
- pageNumber: this.currentPage,
87
- pageSize: this.defaultItemsPerPage,
114
+ filterField: this.selectedSearchField,
115
+ pageNumber: this.currentPage ?? 1,
116
+ pageSize: this.defaultItemsPerPage ?? 10,
88
117
  sortColumn: this.sortColumn,
89
- sortDirection: this.sortDirection
118
+ sortDirection: this.sortDirection,
90
119
  };
91
- this.fetchDataFunction(params).pipe(takeUntil(this.destroy$)).subscribe({
120
+ this.fetchDataFunction(params)
121
+ .pipe(takeUntil(this.destroy$))
122
+ .subscribe({
92
123
  next: (result) => {
93
124
  this.pagedData = result.items;
94
125
  this.totalItems = result.totalItems;
@@ -96,21 +127,15 @@ export class DataTableComponent {
96
127
  this.cdr.markForCheck();
97
128
  },
98
129
  error: (error) => {
99
- console.error('Error fetching data:', error);
130
+ console.error("Error fetching data:", error);
100
131
  this.isLoading = false;
101
- }
132
+ },
102
133
  });
103
134
  }
104
135
  }
105
136
  refreshData() {
106
137
  this.fetchData();
107
138
  }
108
- onSort(column) {
109
- this.sortColumn = column;
110
- this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
111
- this.sortChange.emit({ column, direction: this.sortDirection });
112
- this.fetchData();
113
- }
114
139
  onPageChange(page) {
115
140
  this.currentPage = page;
116
141
  this.pageChange.emit(page);
@@ -121,19 +146,53 @@ export class DataTableComponent {
121
146
  this.itemsPerPageChange.emit(this.defaultItemsPerPage);
122
147
  this.fetchData();
123
148
  }
149
+ onSelectSearchField(columnProp) {
150
+ if (this.sortColumn === columnProp) {
151
+ this.sortDirection = this.sortDirection === "asc" ? "desc" : "asc";
152
+ }
153
+ else {
154
+ this.sortDirection = "asc";
155
+ }
156
+ this.selectedSearchField = columnProp;
157
+ this.sortColumn = columnProp;
158
+ this.columns = this.columns.map((column) => ({
159
+ ...column,
160
+ isSearchSelected: column.prop === columnProp,
161
+ }));
162
+ this.filterFieldChange.emit(this.selectedSearchField);
163
+ if (this.fetchDataFunction) {
164
+ this.fetchDataFunction({
165
+ filterDescription: this.filterDescription,
166
+ filterField: this.selectedSearchField,
167
+ pageNumber: this.currentPage,
168
+ pageSize: this.defaultItemsPerPage,
169
+ sortColumn: this.sortColumn,
170
+ sortDirection: this.sortDirection,
171
+ }).subscribe({
172
+ next: (result) => {
173
+ this.pagedData = result.items;
174
+ this.totalItems = result.totalItems;
175
+ this.cdr.markForCheck();
176
+ },
177
+ error: (error) => {
178
+ console.error("Erro ao buscar dados:", error);
179
+ },
180
+ });
181
+ }
182
+ }
124
183
  handleAction(action, item, index) {
125
184
  switch (action) {
126
- case 'edit':
185
+ case "edit":
127
186
  if (this.hasPermission(this.editPermissions)) {
128
187
  this.onEditTable.emit({ item, index });
129
188
  }
130
189
  break;
131
- case 'delete':
190
+ case "delete":
132
191
  if (this.hasPermission(this.deletePermissions)) {
133
192
  this.onDeleteTable.emit({ item, index });
134
193
  }
135
194
  break;
136
- case 'view':
195
+ case "view":
137
196
  if (this.hasPermission(this.viewPermissions)) {
138
197
  this.onViewTable.emit({ item, index });
139
198
  }
@@ -149,10 +208,10 @@ export class DataTableComponent {
149
208
  }
150
209
  catch (error) {
151
210
  if (error instanceof Error) {
152
- console.error('Permission error:', error.message);
211
+ console.error("Permission error:", error.message);
153
212
  }
154
213
  else {
155
- console.error('Unknown error occurred during permission check');
214
+ console.error("Unknown error occurred during permission check");
156
215
  }
157
216
  return true;
158
217
  }
@@ -169,11 +228,11 @@ export class DataTableComponent {
169
228
  this.onButtonClick.emit(); // Emitindo o evento
170
229
  }
171
230
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AuthService }, { token: i2.RefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, selector: "argenta-list-data-table", inputs: { columns: "columns", hiddenColumns: "hiddenColumns", defaultItemsPerPage: "defaultItemsPerPage", itemsPerPageLabel: "itemsPerPageLabel", showActionColumn: "showActionColumn", actionColumnLabel: "actionColumnLabel", totalItems: "totalItems", fetchDataFunction: "fetchDataFunction", editPermissions: "editPermissions", deletePermissions: "deletePermissions", viewPermissions: "viewPermissions", showPageInfo: "showPageInfo", pageText: "pageText", ofText: "ofText", filterDescription: "filterDescription", buttonLabel: "buttonLabel" }, outputs: { sortChange: "sortChange", pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange", onEditTable: "onEditTable", onDeleteTable: "onDeleteTable", onViewTable: "onViewTable", onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: i6.CustomPaginationComponent, selector: "custom-pagination", inputs: ["totalItems", "itemsPerPage", "currentPage", "showPageInfo"], outputs: ["pageChange"] }, { kind: "component", type: i7.SearchInputComponent, selector: "argenta-search-input", inputs: ["id", "label", "type", "placeholder", "value", "disabled", "readonly", "autofocus", "maxlength", "minlength", "required", "pattern", "debounceTime"], outputs: ["search", "inputChange", "change", "focus", "blur", "keyup", "keydown", "keypress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, selector: "argenta-list-data-table", inputs: { columns: "columns", hiddenColumns: "hiddenColumns", defaultItemsPerPage: "defaultItemsPerPage", itemsPerPageLabel: "itemsPerPageLabel", showActionColumn: "showActionColumn", actionColumnLabel: "actionColumnLabel", totalItems: "totalItems", fetchDataFunction: "fetchDataFunction", editPermissions: "editPermissions", deletePermissions: "deletePermissions", viewPermissions: "viewPermissions", showPageInfo: "showPageInfo", pageText: "pageText", ofText: "ofText", filterDescription: "filterDescription", buttonLabel: "buttonLabel", pagedData: "pagedData", initialFilterField: "initialFilterField" }, outputs: { pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange", onEditTable: "onEditTable", onDeleteTable: "onDeleteTable", onViewTable: "onViewTable", onButtonClick: "onButtonClick", filterFieldChange: "filterFieldChange" }, ngImport: i0, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{\n itemsPerPageLabel\n }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\"\n >\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input\n id=\"search\"\n label=\"\"\n placeholder=\"Buscar\"\n [(ngModel)]=\"filterDescription\"\n (search)=\"onSearch($event)\"\n ></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!isColumnHidden(column.prop)\"\n (click)=\"onSelectSearchField(column.prop)\"\n >\n {{ column.label }}\n <span>\n <i-lucide\n name=\"arrow-up\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'asc'\n \"\n ></i-lucide>\n <i-lucide\n name=\"arrow-down\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'desc'\n \"\n ></i-lucide>\n </span>\n </th>\n </ng-container>\n <th\n *ngIf=\"showActionColumn\"\n class=\"text-end\"\n style=\"padding-right: 6.3rem\"\n >\n {{ actionColumnLabel }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div\n *ngIf=\"\n hasPermission(editPermissions) &&\n onEditTable.observers.length > 0\n \"\n (click)=\"handleAction('edit', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"square-pen\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(viewPermissions) &&\n onViewTable.observers.length > 0\n \"\n (click)=\"handleAction('view', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"user-round\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(deletePermissions) &&\n onDeleteTable.observers.length > 0\n \"\n (click)=\"handleAction('delete', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <i-lucide\n name=\"trash-2\"\n [size]=\"20\"\n color=\"#F26E6E\"\n [strokeWidth]=\"1.75\"\n ></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}.selected{color:var(--secondary-color);stroke-width:8}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: i6.CustomPaginationComponent, selector: "custom-pagination", inputs: ["totalItems", "itemsPerPage", "currentPage", "showPageInfo"], outputs: ["pageChange"] }, { kind: "component", type: i7.SearchInputComponent, selector: "argenta-search-input", inputs: ["id", "label", "type", "placeholder", "value", "disabled", "readonly", "autofocus", "maxlength", "minlength", "required", "pattern", "debounceTime"], outputs: ["search", "inputChange", "change", "focus", "blur", "keyup", "keydown", "keypress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
173
232
  }
174
233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, decorators: [{
175
234
  type: Component,
176
- args: [{ selector: 'argenta-list-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}\n"] }]
235
+ args: [{ selector: "argenta-list-data-table", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{\n itemsPerPageLabel\n }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\"\n >\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input\n id=\"search\"\n label=\"\"\n placeholder=\"Buscar\"\n [(ngModel)]=\"filterDescription\"\n (search)=\"onSearch($event)\"\n ></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!isColumnHidden(column.prop)\"\n (click)=\"onSelectSearchField(column.prop)\"\n >\n {{ column.label }}\n <span>\n <i-lucide\n name=\"arrow-up\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'asc'\n \"\n ></i-lucide>\n <i-lucide\n name=\"arrow-down\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'desc'\n \"\n ></i-lucide>\n </span>\n </th>\n </ng-container>\n <th\n *ngIf=\"showActionColumn\"\n class=\"text-end\"\n style=\"padding-right: 6.3rem\"\n >\n {{ actionColumnLabel }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div\n *ngIf=\"\n hasPermission(editPermissions) &&\n onEditTable.observers.length > 0\n \"\n (click)=\"handleAction('edit', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"square-pen\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(viewPermissions) &&\n onViewTable.observers.length > 0\n \"\n (click)=\"handleAction('view', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"user-round\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(deletePermissions) &&\n onDeleteTable.observers.length > 0\n \"\n (click)=\"handleAction('delete', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <i-lucide\n name=\"trash-2\"\n [size]=\"20\"\n color=\"#F26E6E\"\n [strokeWidth]=\"1.75\"\n ></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}.selected{color:var(--secondary-color);stroke-width:8}\n"] }]
177
236
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.AuthService }, { type: i2.RefreshService }]; }, propDecorators: { columns: [{
178
237
  type: Input
179
238
  }], hiddenColumns: [{
@@ -206,8 +265,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
206
265
  type: Input
207
266
  }], buttonLabel: [{
208
267
  type: Input
209
- }], sortChange: [{
210
- type: Output
268
+ }], pagedData: [{
269
+ type: Input
270
+ }], initialFilterField: [{
271
+ type: Input
211
272
  }], pageChange: [{
212
273
  type: Output
213
274
  }], itemsPerPageChange: [{
@@ -220,5 +281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
220
281
  type: Output
221
282
  }], onButtonClick: [{
222
283
  type: Output
284
+ }], filterFieldChange: [{
285
+ type: Output
223
286
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUMvSixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDLENBQUMsb0JBQW9COzs7Ozs7Ozs7QUFXbEYsTUFBTSxPQUFPLGtCQUFrQjtJQTZDN0IsWUFBb0IsR0FBc0IsRUFBVSxXQUF3QixFQUFVLGNBQThCO1FBQWhHLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE1QzNHLFlBQU8sR0FBc0MsRUFBRSxDQUFDO1FBQ2hELGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLHdCQUFtQixHQUFXLEVBQUUsQ0FBQztRQUNqQyxzQkFBaUIsR0FBVyxpQkFBaUIsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsc0JBQWlCLEdBQVcsU0FBUyxDQUFDO1FBQ3RDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQXFFLEdBQUcs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ZC9CLG96R0F1RUE7OzRGRHpEYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOytKQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEJ1dHRvbkNsYXNzZXMgfSBmcm9tICcuLi8uLi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtJzsgLy8gSW1wb3J0YW5kbyBvIGVudW1cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdXRoLXNlcnZpY2Uuc2VydmljZSdcbmltcG9ydCB7IFJlZnJlc2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9yZWZyZXNoLXNlcnZpY2Uuc2VydmljZSdcbmltcG9ydCB7IElEYXRhSW5kZXhQYWdpbmF0ZSwgSVBhZ2luYXRlUmVzdWx0IH0gZnJvbSAnLi9kYXRhLXBhZ2luYXRlLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZ2VudGEtbGlzdC1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb2x1bW5zOiB7IGxhYmVsOiBzdHJpbmcsIHByb3A6IHN0cmluZyB9W10gPSBbXTtcbiAgQElucHV0KCkgaGlkZGVuQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZGVmYXVsdEl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZUxhYmVsOiBzdHJpbmcgPSAnSXRlbXMgcGVyIHBhZ2U6JztcbiAgQElucHV0KCkgc2hvd0FjdGlvbkNvbHVtbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhY3Rpb25Db2x1bW5MYWJlbDogc3RyaW5nID0gJ0FjdGlvbnMnO1xuICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBmZXRjaERhdGFGdW5jdGlvbjogKHBhcmFtczogSURhdGFJbmRleFBhZ2luYXRlKSA9PiBPYnNlcnZhYmxlPElQYWdpbmF0ZVJlc3VsdDxhbnk+PiA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiBzdWJzY3JpYmVyLmVycm9yKCdJbXBsZW1lbnQgdGhlIGZldGNoRGF0YUZ1bmN0aW9uIHRvIGZldGNoIHBhZ2luYXRlZCBkYXRhIGZyb20gdGhlIGJhY2stZW5kLicpKTtcbiAgfTtcbiAgQElucHV0KCkgZWRpdFBlcm1pc3Npb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBkZWxldGVQZXJtaXNzaW9uczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgdmlld1Blcm1pc3Npb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93UGFnZUluZm86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwYWdlVGV4dDogc3RyaW5nID0gJ1BhZ2UnO1xuICBASW5wdXQoKSBvZlRleHQ6IHN0cmluZyA9ICdvZic7XG4gIEBJbnB1dCgpIGZpbHRlckRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBidXR0b25MYWJlbDogc3RyaW5nID0gJyc7IC8vIEFkaWNpb25hbmRvIG8gSW5wdXQgcGFyYSBvIGxhYmVsIGRvIGJvdMOjb1xuXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaXRlbXNQZXJQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRWRpdFRhYmxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25WaWV3VGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBOb3ZvIGV2ZW50b1xuXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMjVdO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc29ydENvbHVtbjogc3RyaW5nID0gJyc7XG4gIHNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG4gIHBhZ2VkRGF0YTogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsgLy8gRmxhZyBwYXJhIGV2aXRhciBjaGFtYWRhcyBkdXBsYXNcbiAgQnV0dG9uQ2xhc3NlcyA9IEJ1dHRvbkNsYXNzZXM7XG5cbiAgbGFiZWxTdHlsZSA9IHtcbiAgICAnZm9udC1mYW1pbHknOiAnSW50ZXIsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAnZm9udC1zaXplJzogJzE0cHgnLFxuICAgICdjb2xvcic6ICcjMDAwJ1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcmVmcmVzaFNlcnZpY2U6IFJlZnJlc2hTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICAgIHRoaXMucmVmcmVzaFNlcnZpY2UucmVmcmVzaCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWyd0b3RhbEl0ZW1zJ10gfHwgY2hhbmdlc1snZGVmYXVsdEl0ZW1zUGVyUGFnZSddIHx8IGNoYW5nZXNbJ2N1cnJlbnRQYWdlJ10gfHwgY2hhbmdlc1snZmV0Y2hEYXRhRnVuY3Rpb24nXSB8fCBjaGFuZ2VzWydmaWx0ZXJEZXNjcmlwdGlvbiddKSB7XG4gICAgICB0aGlzLmZldGNoRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBvYmopO1xuICB9XG5cbiAgZmV0Y2hEYXRhKCkge1xuICAgIGlmICh0aGlzLmZldGNoRGF0YUZ1bmN0aW9uKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBwYXJhbXM6IElEYXRhSW5kZXhQYWdpbmF0ZSA9IHtcbiAgICAgICAgZmlsdGVyRGVzY3JpcHRpb246IHRoaXMuZmlsdGVyRGVzY3JpcHRpb24sXG4gICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLmRlZmF1bHRJdGVtc1BlclBhZ2UsXG4gICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydENvbHVtbixcbiAgICAgICAgc29ydERpcmVjdGlvbjogdGhpcy5zb3J0RGlyZWN0aW9uXG4gICAgICB9O1xuICAgICAgdGhpcy5mZXRjaERhdGFGdW5jdGlvbihwYXJhbXMpLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlZERhdGEgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzdWx0LnRvdGFsSXRlbXM7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGE6JywgZXJyb3IpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hEYXRhKCkge1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRDb2x1bW4gPSBjb2x1bW47XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgY29sdW1uLCBkaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbiB9KTtcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBvbkl0ZW1zUGVyUGFnZUNoYW5nZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMuZGVmYXVsdEl0ZW1zUGVyUGFnZSk7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IHN0cmluZywgaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9uKHRoaXMuZWRpdFBlcm1pc3Npb25zKSkge1xuICAgICAgICAgIHRoaXMub25FZGl0VGFibGUuZW1pdCh7IGl0ZW0sIGluZGV4IH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLmRlbGV0ZVBlcm1pc3Npb25zKSkge1xuICAgICAgICAgIHRoaXMub25EZWxldGVUYWJsZS5lbWl0KHsgaXRlbSwgaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLnZpZXdQZXJtaXNzaW9ucykpIHtcbiAgICAgICAgICB0aGlzLm9uVmlld1RhYmxlLmVtaXQoeyBpdGVtLCBpbmRleCB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXF1aXJlZFBlcm1pc3Npb25zIHx8IHJlcXVpcmVkUGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignUGVybWlzc2lvbiBlcnJvcjonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Vua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBlcm1pc3Npb24gY2hlY2snKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlzQ29sdW1uSGlkZGVuKGNvbHVtblByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhpZGRlbkNvbHVtbnMuaW5jbHVkZXMoY29sdW1uUHJvcCk7XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlckRlc2NyaXB0aW9uID0gc2VhcmNoVGV4dDtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTsgLy8gUmVzZXRhciBwYXJhIGEgcHJpbWVpcmEgcMOhZ2luYVxuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBvbk5ld0J1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMub25CdXR0b25DbGljay5lbWl0KCk7IC8vIEVtaXRpbmRvIG8gZXZlbnRvXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRhLXRhYmxlLWhlYWRlclwiIHN0eWxlPVwibWFyZ2luLXRvcDogMi41cmVtO1wiPlxuICA8ZGl2IGNsYXNzPVwibGVmdC1zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJpdGVtc1BlclBhZ2VTZWxlY3RcIiBjbGFzcz1cIml0ZW1zLXBlci1wYWdlLWxhYmVsXCI+e3sgaXRlbXNQZXJQYWdlTGFiZWwgfX08L2xhYmVsPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBpZD1cIml0ZW1zUGVyUGFnZVNlbGVjdFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBkLWlubGluZS1ibG9jayB3LWF1dG8gY3VzdG9tLXNlbGVjdFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGVmYXVsdEl0ZW1zUGVyUGFnZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSXRlbXNQZXJQYWdlQ2hhbmdlKClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW1zUGVyUGFnZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICA8ZGl2ICpuZ0lmPVwiYnV0dG9uTGFiZWwgJiYgYnV0dG9uTGFiZWwubGVuZ3RoID4gMFwiIGNsYXNzPVwicmlnaHQtc2VjdGlvblwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV3QnV0dG9uQ2xpY2soKVwiPlxuICAgICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMjhcIiBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiPjwvbHVjaWRlLWljb24+XG4gICAgICB7eyBidXR0b25MYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICA8YXJnZW50YS1zZWFyY2gtaW5wdXQgaWQ9XCJzZWFyY2hcIiBsYWJlbD1cIlwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJEZXNjcmlwdGlvblwiIChzZWFyY2gpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvYXJnZW50YS1zZWFyY2gtaW5wdXQ+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDFyZW07XCI+XG4gIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWhvdmVyXCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiPlxuICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0NvbHVtbkhpZGRlbihjb2x1bW4ucHJvcClcIiAoY2xpY2spPVwib25Tb3J0KGNvbHVtbi5wcm9wKVwiPlxuICAgICAgICAgICAge3sgY29sdW1uLmxhYmVsIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0aCAqbmdJZj1cInNob3dBY3Rpb25Db2x1bW5cIiBjbGFzcz1cInRleHQtZW5kXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA2LjNyZW07XCI+e3sgYWN0aW9uQ29sdW1uTGFiZWwgfX08L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCIhaXNDb2x1bW5IaWRkZW4oY29sdW1uLnByb3ApXCI+XG4gICAgICAgICAgICB7eyBnZXROZXN0ZWRQcm9wZXJ0eShpdGVtLCBjb2x1bW4ucHJvcCkgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHRkICpuZ0lmPVwic2hvd0FjdGlvbkNvbHVtblwiIGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKGVkaXRQZXJtaXNzaW9ucykgJiYgb25FZGl0VGFibGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCdlZGl0JywgaXRlbSwgaSlcIiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcIj5cbiAgICAgICAgICAgICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJzcXVhcmUtcGVuXCIgW3NpemVdPVwiMjBcIiBjb2xvcj1cIiMyQ0E1OERcIiBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiPjwvbHVjaWRlLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKHZpZXdQZXJtaXNzaW9ucykgJiYgb25WaWV3VGFibGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCd2aWV3JywgaXRlbSwgaSlcIiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcIj5cbiAgICAgICAgICAgICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJ1c2VyLXJvdW5kXCIgW3NpemVdPVwiMjBcIiBjb2xvcj1cIiMyQ0E1OERcIiBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiPjwvbHVjaWRlLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKGRlbGV0ZVBlcm1pc3Npb25zKSAmJiBvbkRlbGV0ZVRhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZGVsZXRlJywgaXRlbSwgaSlcIiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcIj5cbiAgICAgICAgICAgICAgPGktbHVjaWRlIG5hbWU9XCJ0cmFzaC0yXCIgW3NpemVdPVwiMjBcIiBjb2xvcj1cIiNGMjZFNkVcIiBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiPjwvaS1sdWNpZGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcGFnaW5hdGlvbi1jb250cm9sc1wiPlxuICA8Y3VzdG9tLXBhZ2luYXRpb25cbiAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcbiAgICBbaXRlbXNQZXJQYWdlXT1cImRlZmF1bHRJdGVtc1BlclBhZ2VcIlxuICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgW3Nob3dQYWdlSW5mb109XCJzaG93UGFnZUluZm9cIlxuICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwvY3VzdG9tLXBhZ2luYXRpb24+XG48L2Rpdj5cbiJdfQ==
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQyxDQUFDLG9CQUFvQjs7Ozs7Ozs7O0FBV2xGLE1BQU0sT0FBTyxrQkFBa0I7SUEwRDdCLFlBQ1UsR0FBc0IsRUFDdEIsV0FBd0IsRUFDeEIsY0FBOEI7UUFGOUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBNUQvQixZQUFPLEdBSVYsRUFBRSxDQUFDO1FBQ0Esa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0Isd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLHNCQUFpQixHQUFXLGlCQUFpQixDQUFDO1FBQzlDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxTQUFTLENBQUM7UUFDdEMsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUV2QixzQkFBaUIsR0FFYyxHQUFHLEVB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Z0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgQnV0dG9uQ2xhc3NlcyB9IGZyb20gXCIuLi8uLi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtXCI7IC8vIEltcG9ydGFuZG8gbyBlbnVtXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2F1dGgtc2VydmljZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSZWZyZXNoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3JlZnJlc2gtc2VydmljZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBJRGF0YUluZGV4UGFnaW5hdGUsIElQYWdpbmF0ZVJlc3VsdCB9IGZyb20gXCIuL2RhdGEtcGFnaW5hdGUuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXJnZW50YS1saXN0LWRhdGEtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb2x1bW5zOiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcm9wOiBzdHJpbmc7XG4gICAgaXNTZWFyY2hTZWxlY3RlZD86IGJvb2xlYW47XG4gIH1bXSA9IFtdO1xuICBASW5wdXQoKSBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBkZWZhdWx0SXRlbXNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgQElucHV0KCkgaXRlbXNQZXJQYWdlTGFiZWw6IHN0cmluZyA9IFwiSXRlbXMgcGVyIHBhZ2U6XCI7XG4gIEBJbnB1dCgpIHNob3dBY3Rpb25Db2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWN0aW9uQ29sdW1uTGFiZWw6IHN0cmluZyA9IFwiQWN0aW9uc1wiO1xuICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpIGZldGNoRGF0YUZ1bmN0aW9uOiAoXG4gICAgcGFyYW1zOiBJRGF0YUluZGV4UGFnaW5hdGVcbiAgKSA9PiBPYnNlcnZhYmxlPElQYWdpbmF0ZVJlc3VsdDxhbnk+PiA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+XG4gICAgICBzdWJzY3JpYmVyLmVycm9yKFxuICAgICAgICBcIkltcGxlbWVudCB0aGUgZmV0Y2hEYXRhRnVuY3Rpb24gdG8gZmV0Y2ggcGFnaW5hdGVkIGRhdGEgZnJvbSB0aGUgYmFjay1lbmQuXCJcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZGVsZXRlUGVybWlzc2lvbnM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHZpZXdQZXJtaXNzaW9uczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1BhZ2VJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVRleHQ6IHN0cmluZyA9IFwiUGFnZVwiO1xuICBASW5wdXQoKSBvZlRleHQ6IHN0cmluZyA9IFwib2ZcIjtcbiAgQElucHV0KCkgZmlsdGVyRGVzY3JpcHRpb246IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGJ1dHRvbkxhYmVsOiBzdHJpbmcgPSBcIlwiO1xuICBASW5wdXQoKSBwYWdlZERhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGluaXRpYWxGaWx0ZXJGaWVsZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaXRlbXNQZXJQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRWRpdFRhYmxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25WaWV3VGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZmlsdGVyRmllbGRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMjVdO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc29ydENvbHVtbjogc3RyaW5nID0gXCJcIjtcbiAgc29ydERpcmVjdGlvbjogXCJhc2NcIiB8IFwiZGVzY1wiID0gXCJhc2NcIjtcbiAgc2VsZWN0ZWRTZWFyY2hGaWVsZDogc3RyaW5nID0gXCJcIjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsgLy8gRmxhZyBwYXJhIGV2aXRhciBjaGFtYWRhcyBkdXBsYXNcbiAgQnV0dG9uQ2xhc3NlcyA9IEJ1dHRvbkNsYXNzZXM7XG5cbiAgbGFiZWxTdHlsZSA9IHtcbiAgICBcImZvbnQtZmFtaWx5XCI6IFwiSW50ZXIsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXG4gICAgXCJmb250LXNpemVcIjogXCIxNHB4XCIsXG4gICAgY29sb3I6IFwiIzAwMFwiLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXJ2aWNlOiBSZWZyZXNoU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEZpbHRlckZpZWxkKSB7XG4gICAgICAvLyBTZSBvIHVzdcOhcmlvIGRlZmluaXIgbyBpbml0aWFsRmlsdGVyRmllbGQsIGVsZSBzZXLDoSB1c2FkbyBjb21vIG8gY2FtcG8gaW5pY2lhbFxuICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaEZpZWxkID0gdGhpcy5pbml0aWFsRmlsdGVyRmllbGQ7XG4gICAgICB0aGlzLnNvcnRDb2x1bW4gPSB0aGlzLmluaXRpYWxGaWx0ZXJGaWVsZDtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IFwiYXNjXCI7XG5cbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICBpc1NlYXJjaFNlbGVjdGVkOiBjb2x1bW4ucHJvcCA9PT0gdGhpcy5pbml0aWFsRmlsdGVyRmllbGQsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ2FzbyBjb250csOhcmlvLCB1c2EgYSBwcmltZWlyYSBjb2x1bmEgY29tbyBwYWRyw6NvXG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoRmllbGQgPSB0aGlzLmNvbHVtbnNbMF0ucHJvcDtcbiAgICAgIHRoaXMuc29ydENvbHVtbiA9IHRoaXMuY29sdW1uc1swXS5wcm9wO1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gXCJhc2NcIjtcblxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcCgoY29sdW1uKSA9PiAoe1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIGlzU2VhcmNoU2VsZWN0ZWQ6IGNvbHVtbi5wcm9wID09PSB0aGlzLnNlbGVjdGVkU2VhcmNoRmllbGQsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy90aGlzLmZldGNoRGF0YSgpO1xuICAgIHRoaXMucmVmcmVzaFNlcnZpY2UucmVmcmVzaCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvLyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gIC8vICAgaWYgKFxuICAvLyAgICAgY2hhbmdlc1tcInRvdGFsSXRlbXNcIl0gfHxcbiAgLy8gICAgIGNoYW5nZXNbXCJkZWZhdWx0SXRlbXNQZXJQYWdlXCJdIHx8XG4gIC8vICAgICBjaGFuZ2VzW1wiY3VycmVudFBhZ2VcIl0gfHxcbiAgLy8gICAgIGNoYW5nZXNbXCJmZXRjaERhdGFGdW5jdGlvblwiXSB8fFxuICAvLyAgICAgY2hhbmdlc1tcImZpbHRlckRlc2NyaXB0aW9uXCJdXG4gIC8vICAgKSB7XG4gIC8vICAgICB0aGlzLmZldGNoRGF0YSgpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIG9iaik7XG4gIH1cblxuICBmZXRjaERhdGEoKSB7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBhcmFtczogSURhdGFJbmRleFBhZ2luYXRlID0ge1xuICAgICAgICBmaWx0ZXJEZXNjcmlwdGlvbjogdGhpcy5maWx0ZXJEZXNjcmlwdGlvbixcbiAgICAgICAgZmlsdGVyRmllbGQ6IHRoaXMuc2VsZWN0ZWRTZWFyY2hGaWVsZCxcbiAgICAgICAgcGFnZU51bWJlcjogdGhpcy5jdXJyZW50UGFnZSA/PyAxLFxuICAgICAgICBwYWdlU2l6ZTogdGhpcy5kZWZhdWx0SXRlbXNQZXJQYWdlID8/IDEwLFxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnRDb2x1bW4sXG4gICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZmV0Y2hEYXRhRnVuY3Rpb24ocGFyYW1zKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFnZWREYXRhID0gcmVzdWx0Lml0ZW1zO1xuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzdWx0LnRvdGFsSXRlbXM7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgZGF0YTpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoRGF0YSgpIHtcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBvbkl0ZW1zUGVyUGFnZUNoYW5nZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMuZGVmYXVsdEl0ZW1zUGVyUGFnZSk7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgfVxuXG4gIG9uU2VsZWN0U2VhcmNoRmllbGQoY29sdW1uUHJvcDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ydENvbHVtbiA9PT0gY29sdW1uUHJvcCkge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSBcImFzY1wiID8gXCJkZXNjXCIgOiBcImFzY1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBcImFzY1wiO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hGaWVsZCA9IGNvbHVtblByb3A7XG4gICAgdGhpcy5zb3J0Q29sdW1uID0gY29sdW1uUHJvcDtcblxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGlzU2VhcmNoU2VsZWN0ZWQ6IGNvbHVtbi5wcm9wID09PSBjb2x1bW5Qcm9wLFxuICAgIH0pKTtcblxuICAgIHRoaXMuZmlsdGVyRmllbGRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkU2VhcmNoRmllbGQpO1xuXG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuZmV0Y2hEYXRhRnVuY3Rpb24oe1xuICAgICAgICBmaWx0ZXJEZXNjcmlwdGlvbjogdGhpcy5maWx0ZXJEZXNjcmlwdGlvbixcbiAgICAgICAgZmlsdGVyRmllbGQ6IHRoaXMuc2VsZWN0ZWRTZWFyY2hGaWVsZCxcbiAgICAgICAgcGFnZU51bWJlcjogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgcGFnZVNpemU6IHRoaXMuZGVmYXVsdEl0ZW1zUGVyUGFnZSxcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0Q29sdW1uLFxuICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24sXG4gICAgICB9KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlZERhdGEgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzdWx0LnRvdGFsSXRlbXM7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJybyBhbyBidXNjYXIgZGFkb3M6XCIsIGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IHN0cmluZywgaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJlZGl0XCI6XG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb24odGhpcy5lZGl0UGVybWlzc2lvbnMpKSB7XG4gICAgICAgICAgdGhpcy5vbkVkaXRUYWJsZS5lbWl0KHsgaXRlbSwgaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlXCI6XG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb24odGhpcy5kZWxldGVQZXJtaXNzaW9ucykpIHtcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlVGFibGUuZW1pdCh7IGl0ZW0sIGluZGV4IH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInZpZXdcIjpcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLnZpZXdQZXJtaXNzaW9ucykpIHtcbiAgICAgICAgICB0aGlzLm9uVmlld1RhYmxlLmVtaXQoeyBpdGVtLCBpbmRleCB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXF1aXJlZFBlcm1pc3Npb25zIHx8IHJlcXVpcmVkUGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlBlcm1pc3Npb24gZXJyb3I6XCIsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlVua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBlcm1pc3Npb24gY2hlY2tcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpc0NvbHVtbkhpZGRlbihjb2x1bW5Qcm9wOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaWRkZW5Db2x1bW5zLmluY2x1ZGVzKGNvbHVtblByb3ApO1xuICB9XG5cbiAgb25TZWFyY2goc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJEZXNjcmlwdGlvbiA9IHNlYXJjaFRleHQ7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7IC8vIFJlc2V0YXIgcGFyYSBhIHByaW1laXJhIHDDoWdpbmFcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICB9XG5cbiAgb25OZXdCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdCgpOyAvLyBFbWl0aW5kbyBvIGV2ZW50b1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0YS10YWJsZS1oZWFkZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDIuNXJlbVwiPlxuICA8ZGl2IGNsYXNzPVwibGVmdC1zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJpdGVtc1BlclBhZ2VTZWxlY3RcIiBjbGFzcz1cIml0ZW1zLXBlci1wYWdlLWxhYmVsXCI+e3tcbiAgICAgICAgaXRlbXNQZXJQYWdlTGFiZWxcbiAgICAgIH19PC9sYWJlbD5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgaWQ9XCJpdGVtc1BlclBhZ2VTZWxlY3RcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZC1pbmxpbmUtYmxvY2sgdy1hdXRvIGN1c3RvbS1zZWxlY3RcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImRlZmF1bHRJdGVtc1BlclBhZ2VcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkl0ZW1zUGVyUGFnZUNoYW5nZSgpXCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW1zUGVyUGFnZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYnV0dG9uTGFiZWwgJiYgYnV0dG9uTGFiZWwubGVuZ3RoID4gMFwiIGNsYXNzPVwicmlnaHQtc2VjdGlvblwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV3QnV0dG9uQ2xpY2soKVwiPlxuICAgICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMjhcIiBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiPjwvbHVjaWRlLWljb24+XG4gICAgICB7eyBidXR0b25MYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICA8YXJnZW50YS1zZWFyY2gtaW5wdXRcbiAgICBpZD1cInNlYXJjaFwiXG4gICAgbGFiZWw9XCJcIlxuICAgIHBsYWNlaG9sZGVyPVwiQnVzY2FyXCJcbiAgICBbKG5nTW9kZWwpXT1cImZpbHRlckRlc2NyaXB0aW9uXCJcbiAgICAoc2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIlxuICA+PC9hcmdlbnRhLXNlYXJjaC1pbnB1dD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogMXJlbVwiPlxuICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlclwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzQ29sdW1uSGlkZGVuKGNvbHVtbi5wcm9wKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RTZWFyY2hGaWVsZChjb2x1bW4ucHJvcClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxpLWx1Y2lkZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJhcnJvdy11cFwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMTRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5pc1NlYXJjaFNlbGVjdGVkICYmIHNvcnREaXJlY3Rpb24gPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvaS1sdWNpZGU+XG4gICAgICAgICAgICAgIDxpLWx1Y2lkZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJhcnJvdy1kb3duXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIlxuICAgICAgICAgICAgICAgICAgY29sdW1uLmlzU2VhcmNoU2VsZWN0ZWQgJiYgc29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvaS1sdWNpZGU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwic2hvd0FjdGlvbkNvbHVtblwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVuZFwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA2LjNyZW1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYWN0aW9uQ29sdW1uTGFiZWwgfX1cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnZWREYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwiIWlzQ29sdW1uSGlkZGVuKGNvbHVtbi5wcm9wKVwiPlxuICAgICAgICAgICAge3sgZ2V0TmVzdGVkUHJvcGVydHkoaXRlbSwgY29sdW1uLnByb3ApIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNob3dBY3Rpb25Db2x1bW5cIiBjbGFzcz1cInRleHQtZW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgaGFzUGVybWlzc2lvbihlZGl0UGVybWlzc2lvbnMpICYmXG4gICAgICAgICAgICAgICAgb25FZGl0VGFibGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZWRpdCcsIGl0ZW0sIGkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtaWNvblwiXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxLjVyZW1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bHVjaWRlLWljb25cbiAgICAgICAgICAgICAgICBuYW1lPVwic3F1YXJlLXBlblwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiIzJDQTU4RFwiXG4gICAgICAgICAgICAgICAgW3N0cm9rZVdpZHRoXT1cIjEuNzVcIlxuICAgICAgICAgICAgICA+PC9sdWNpZGUtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGhhc1Blcm1pc3Npb24odmlld1Blcm1pc3Npb25zKSAmJlxuICAgICAgICAgICAgICAgIG9uVmlld1RhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ3ZpZXcnLCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlLWljb25cIlxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMS41cmVtXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGx1Y2lkZS1pY29uXG4gICAgICAgICAgICAgICAgbmFtZT1cInVzZXItcm91bmRcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cIiMyQ0E1OERcIlxuICAgICAgICAgICAgICAgIFtzdHJva2VXaWR0aF09XCIxLjc1XCJcbiAgICAgICAgICAgICAgPjwvbHVjaWRlLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBoYXNQZXJtaXNzaW9uKGRlbGV0ZVBlcm1pc3Npb25zKSAmJlxuICAgICAgICAgICAgICAgIG9uRGVsZXRlVGFibGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZGVsZXRlJywgaXRlbSwgaSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEuNXJlbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpLWx1Y2lkZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJ0cmFzaC0yXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCIjRjI2RTZFXCJcbiAgICAgICAgICAgICAgICBbc3Ryb2tlV2lkdGhdPVwiMS43NVwiXG4gICAgICAgICAgICAgID48L2ktbHVjaWRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHBhZ2luYXRpb24tY29udHJvbHNcIj5cbiAgPGN1c3RvbS1wYWdpbmF0aW9uXG4gICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJkZWZhdWx0SXRlbXNQZXJQYWdlXCJcbiAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgIFtzaG93UGFnZUluZm9dPVwic2hvd1BhZ2VJbmZvXCJcbiAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgPC9jdXN0b20tcGFnaW5hdGlvbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,4 @@
1
+ export function convertToSnakeCase(input) {
2
+ return input.replace(/([A-Z])/g, "_$1").toLowerCase();
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udmVydFRvU25ha2VDYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvZnVuY3Rpb24vQ29udmVydFRvU25ha2VDYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhO0lBQzlDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9TbmFrZUNhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW0EtWl0pL2csIFwiXyQxXCIpLnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=