@firestitch/list 18.0.22 → 18.0.24

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.
@@ -79,11 +79,11 @@ export class FsStatusComponent {
79
79
  this.paging.setLimit(limit);
80
80
  }
81
81
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n Showing\n <a [fsMenuTriggerFor]=\"limitsMenu\">\n {{ paging.statusLabel }}\n </a>\n of\n @if (paging.hasManyStrategy) {\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of records'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n {{ paging.records | number:'1.0':'en-US' }} results\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!paging.enabled\"\n #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
82
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
83
83
  }
84
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, decorators: [{
85
85
  type: Component,
86
- args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n Showing\n <a [fsMenuTriggerFor]=\"limitsMenu\">\n {{ paging.statusLabel }}\n </a>\n of\n @if (paging.hasManyStrategy) {\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of records'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n {{ paging.records | number:'1.0':'en-US' }} results\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!paging.enabled\"\n #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"] }]
86
+ args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"] }]
87
87
  }], propDecorators: { list: [{
88
88
  type: Input
89
89
  }], rows: [{
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
97
97
  type: HostBinding,
98
98
  args: ['class.fs-skeleton-placeholder']
99
99
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBVTdELE1BQU0sT0FBTyxpQkFBaUI7SUFFWixJQUFJLENBQU87SUFDWCxJQUFJLENBQUM7SUFLZCxTQUFTLENBQVU7SUFFbkIsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDeEMsTUFBTSxDQUF1QjtJQUM3QixPQUFPLENBQW9CO0lBQzNCLElBQUksR0FHTDtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0lBRUksU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXBDLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMs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QUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLHVCQUMxQixJQUFJOzhCQUlULElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFLQyxTQUFTO3NCQUhmLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsV0FBVzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9saXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BhZ2luYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBTb3J0aW5nQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc29ydGluZy1jb250cm9sbGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0LXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGF0dXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGF0dXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZzU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0OiBMaXN0O1xuICBASW5wdXQoKSBwdWJsaWMgcm93cztcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpcnN0LWxvYWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLXNrZWxldG9uLXBsYWNlaG9sZGVyJylcbiAgcHVibGljIGZpcnN0TG9hZDogYm9vbGVhbjtcbiAgXG4gIHB1YmxpYyBQYWdpbmF0aW9uU3RyYXRlZ3kgPSBQYWdpbmF0aW9uU3RyYXRlZ3k7XG4gIHB1YmxpYyBwYWdpbmc6IFBhZ2luYXRpb25Db250cm9sbGVyO1xuICBwdWJsaWMgc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBtYW55OiB7XG4gICAgc3RhdHVzOiAnbWFueScgfCAnbG9hZGluZycgfCAnbG9hZGVkJztcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIH0gPSB7IFxuICAgICAgc3RhdHVzOiAnbWFueScsXG4gICAgICBjb3VudDogMCxcbiAgICB9O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2luZyA9IHRoaXMubGlzdC5wYWdpbmc7XG4gICAgdGhpcy5zb3J0aW5nID0gdGhpcy5saXN0LnNvcnRpbmc7XG4gICAgdGhpcy5zb3J0aW5nLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdC5maWx0ZXJzUXVlcnkkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ21hbnknO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1hbnlDbGljaygpIHtcbiAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ2xvYWRpbmcnO1xuICAgIHRoaXMubGlzdC5mZXRjaFJlbW90ZSh7XG4gICAgICAuLi50aGlzLmxpc3QuZmlsdGVyc1F1ZXJ5LFxuICAgICAgb2Zmc2V0OiAwLFxuICAgICAgbGltaXQ6IDAsXG4gICAgICByZWNvcmRDb3VudDogdHJ1ZSxcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLm1hbnkuY291bnQgPSByZXNwb25zZS5wYWdpbmc/LnJlY29yZHMgfHwgMDtcbiAgICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ2xvYWRlZCc7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ21hbnknO1xuICAgICAgICAgIHRoaXMubWFueS5jb3VudCA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURpcmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4uZGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnREaXJlY3Rpb24oU29ydGluZ0RpcmVjdGlvbi5kZXNjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnREaXJlY3Rpb24oU29ydGluZ0RpcmVjdGlvbi5hc2MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTb3J0YWJsZUNvbHVtbihjb2x1bW4pIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4gIT09IGNvbHVtbikge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnRCeShjb2x1bW4pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRMaW1pdChsaW1pdCkge1xuICAgIHRoaXMucGFnaW5nLnNldExpbWl0KGxpbWl0KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0YXR1c1wiPlxuICA8c21hbGw+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2luZy5lbmFibGVkXCI+XG4gICAgICBTaG93aW5nXG4gICAgICA8YSBbZnNNZW51VHJpZ2dlckZvcl09XCJsaW1pdHNNZW51XCI+XG4gICAgICAgIHt7IHBhZ2luZy5zdGF0dXNMYWJlbCB9fVxuICAgICAgPC9hPlxuICAgICAgb2ZcbiAgICAgIEBpZiAocGFnaW5nLmhhc01hbnlTdHJhdGVneSkge1xuICAgICAgQGlmIChtYW55LnN0YXR1cyA9PT0gJ21hbnknKSB7XG4gICAgICAgIDxhXG4gICAgICAgICAgICAoY2xpY2spPVwibWFueUNsaWNrKClcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0NhbGN1bGF0ZSBudW1iZXIgb2YgcmVjb3JkcydcIj5cbiAgICAgICAgICBtYW55XG4gICAgICAgIDwvYT5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChtYW55LnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgIDxtYXQtc3Bpbm5lclxuICAgICAgICAgIFtkaWFtZXRlcl09XCIxNVwiXG4gICAgICAgICAgW3N0cm9rZVdpZHRoXT1cIjJcIj5cbiAgICAgICAgPC9tYXQtc3Bpbm5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICB7eyBtYW55LmNvdW50IHwgbnVtYmVyOicxLjAnOidlbi1VUycgfX1cbiAgICAgIH1cbiAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICB7eyBwYWdpbmcucmVjb3JkcyB8IG51bWJlcjonMS4wJzonZW4tVVMnIH19IHJlc3VsdHNcbiAgICAgIH1cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3J0ZWRCeVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIXBhZ2luZy5lbmFibGVkKSAmJiBwYWdpbmcucGFnZVJlY29yZHMgPiAwXCI+XG4gICAgICBTaG93aW5nXG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2luZy5wYWdlUmVjb3JkcyA9PT0gMVwiPlxuICAgICAgICB7eyBwYWdpbmcucGFnZVJlY29yZHMgfX0gcmVzdWx0XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2luZy5wYWdlUmVjb3JkcyA+IDFcIj5cbiAgICAgICAge3sgcGFnaW5nLnBhZ2VSZWNvcmRzIHwgbnVtYmVyOicxLjAnOidlbi1VUycgfX0gcmVzdWx0c1xuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRlZEJ5XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGZzLWxpc3Qtc2F2ZWQtZmlsdGVycyBjbGFzcz1cInNhdmVkLWZpbHRlcnNcIj48L2ZzLWxpc3Qtc2F2ZWQtZmlsdGVycz5cbiAgICA8ZnMtbWVudVxuICAgICAgICBbaGlkZGVuXT1cIiFwYWdpbmcuZW5hYmxlZFwiXG4gICAgICAgICNsaW1pdHNNZW51PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgbmdGb3JcbiAgICAgICAgICBsZXQtbGltaXRcbiAgICAgICAgICBbbmdGb3JPZl09XCJwYWdpbmcubGltaXRzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0TGltaXQobGltaXQpXCI+XG4gICAgICAgICAge3sgbGltaXQgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mcy1tZW51PlxuICAgIDxmcy1tZW51XG4gICAgICAgIFtoaWRkZW5dPVwiIXNvcnRpbmcuc29ydGluZ0NvbHVtbiB8fCBwYWdpbmcucGFnZVJlY29yZHMgPT09IDBcIlxuICAgICAgICAjb3JkZXJDb2x1bW5zTWVudT5cbiAgICAgIDwhLS0gUmVhbCBzb3J0aW5nIGNvbHVtbnMgLS0+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBuZ0ZvclxuICAgICAgICAgIGxldC1jb2x1bW5cbiAgICAgICAgICBbbmdGb3JPZl09XCJzb3J0aW5nLnNvcnRpbmdDb2x1bW5zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0U29ydGFibGVDb2x1bW4oY29sdW1uKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udGl0bGU7IGVsc2Ugc29ydEJ5VGVtcGxhdGVcIj5cbiAgICAgICAgICAgIHt7IGNvbHVtbi50aXRsZSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc29ydEJ5VGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gRmFrZSBzb3J0aW5nIGNvbHVtbnMgLS0+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBuZ0ZvclxuICAgICAgICAgIGxldC1jb2x1bW5cbiAgICAgICAgICBbbmdGb3JPZl09XCJzb3J0aW5nLmZha2VTb3J0aW5nQ29sdW1uc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cInNldFNvcnRhYmxlQ29sdW1uKGNvbHVtbilcIj5cbiAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mcy1tZW51PlxuICAgIDxuZy10ZW1wbGF0ZSAjc29ydGVkQnk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydGluZy5zb3J0aW5nQ29sdW1uXCI+XG4gICAgICAgIHNvcnRlZCBieVxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydGluZy5zb3J0aW5nQ29sdW1uLnRpdGxlOyBlbHNlIHNvcnRCeVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJvcmRlci10b2dnbGVcIlxuICAgICAgICAgICAgICBbZnNNZW51VHJpZ2dlckZvcl09XCJvcmRlckNvbHVtbnNNZW51XCI+XG4gICAgICAgICAgICB7eyBzb3J0aW5nLnNvcnRpbmdDb2x1bW4udGl0bGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgLFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzb3J0QnlUZW1wbGF0ZT5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cIm9yZGVyLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIFtmc01lbnVUcmlnZ2VyRm9yXT1cIm9yZGVyQ29sdW1uc01lbnVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzb3J0aW5nLnNvcnRpbmdDb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICAsXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm9yZGVyLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGlyZWN0aW9uKClcIj5cbiAgICAgICAgICB7eyBzb3J0aW5nLnNvcnRpbmdDb2x1bW4uZnVsbE5hbWVEaXJlY3Rpb24gfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zbWFsbD5cbjwvZGl2PiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBVTdELE1BQU0sT0FBTyxpQkFBaUI7SUFFWixJQUFJLENBQU87SUFDWCxJQUFJLENBQUM7SUFLZCxTQUFTLENBQVU7SUFFbkIsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDeEMsTUFBTSxDQUF1QjtJQUM3QixPQUFPLENBQW9CO0lBQzNCLElBQUksR0FHTDtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0lBRUksU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXBDLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMs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QUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLHVCQUMxQixJQUFJOzhCQUlULElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFLQyxTQUFTO3NCQUhmLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsV0FBVzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9saXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BhZ2luYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBTb3J0aW5nQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc29ydGluZy1jb250cm9sbGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0LXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGF0dXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGF0dXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZzU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0OiBMaXN0O1xuICBASW5wdXQoKSBwdWJsaWMgcm93cztcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpcnN0LWxvYWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLXNrZWxldG9uLXBsYWNlaG9sZGVyJylcbiAgcHVibGljIGZpcnN0TG9hZDogYm9vbGVhbjtcbiAgXG4gIHB1YmxpYyBQYWdpbmF0aW9uU3RyYXRlZ3kgPSBQYWdpbmF0aW9uU3RyYXRlZ3k7XG4gIHB1YmxpYyBwYWdpbmc6IFBhZ2luYXRpb25Db250cm9sbGVyO1xuICBwdWJsaWMgc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBtYW55OiB7XG4gICAgc3RhdHVzOiAnbWFueScgfCAnbG9hZGluZycgfCAnbG9hZGVkJztcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIH0gPSB7IFxuICAgICAgc3RhdHVzOiAnbWFueScsXG4gICAgICBjb3VudDogMCxcbiAgICB9O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2luZyA9IHRoaXMubGlzdC5wYWdpbmc7XG4gICAgdGhpcy5zb3J0aW5nID0gdGhpcy5saXN0LnNvcnRpbmc7XG4gICAgdGhpcy5zb3J0aW5nLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdC5maWx0ZXJzUXVlcnkkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ21hbnknO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1hbnlDbGljaygpIHtcbiAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ2xvYWRpbmcnO1xuICAgIHRoaXMubGlzdC5mZXRjaFJlbW90ZSh7XG4gICAgICAuLi50aGlzLmxpc3QuZmlsdGVyc1F1ZXJ5LFxuICAgICAgb2Zmc2V0OiAwLFxuICAgICAgbGltaXQ6IDAsXG4gICAgICByZWNvcmRDb3VudDogdHJ1ZSxcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLm1hbnkuY291bnQgPSByZXNwb25zZS5wYWdpbmc/LnJlY29yZHMgfHwgMDtcbiAgICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ2xvYWRlZCc7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1hbnkuc3RhdHVzID0gJ21hbnknO1xuICAgICAgICAgIHRoaXMubWFueS5jb3VudCA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURpcmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4uZGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnREaXJlY3Rpb24oU29ydGluZ0RpcmVjdGlvbi5kZXNjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnREaXJlY3Rpb24oU29ydGluZ0RpcmVjdGlvbi5hc2MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTb3J0YWJsZUNvbHVtbihjb2x1bW4pIHtcbiAgICBpZiAodGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4gIT09IGNvbHVtbikge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnRCeShjb2x1bW4pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRMaW1pdChsaW1pdCkge1xuICAgIHRoaXMucGFnaW5nLnNldExpbWl0KGxpbWl0KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0YXR1c1wiPlxuICA8c21hbGw+XG4gICAgQGlmIChwYWdpbmcuZW5hYmxlZCkge1xuICAgICAgU2hvd2luZ1xuICAgICAgQGlmIChwYWdpbmcuaGFzTWFueVN0cmF0ZWd5KSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGltaXRNZW51XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIG9mXG4gICAgICAgIEBpZiAobWFueS5zdGF0dXMgPT09ICdtYW55Jykge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIChjbGljayk9XCJtYW55Q2xpY2soKVwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidDYWxjdWxhdGUgbnVtYmVyIG9mIGVjb3JkcydcIj5cbiAgICAgICAgICAgIG1hbnlcbiAgICAgICAgICA8L2E+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBpZiAobWFueS5zdGF0dXMgPT09ICdsb2FkaW5nJykge1xuICAgICAgICAgICAgPG1hdC1zcGlubmVyXG4gICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIxNVwiXG4gICAgICAgICAgICAgIFtzdHJva2VXaWR0aF09XCIyXCI+XG4gICAgICAgICAgICA8L21hdC1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgbWFueS5jb3VudCB8IG51bWJlcjonMS4wJzonZW4tVVMnIH19XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChwYWdpbmcucmVjb3Jkcykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGltaXRNZW51XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgb2YgICAgICBcbiAgICAgICAgICB7eyBwYWdpbmcucmVjb3JkcyB8IG51bWJlcjonMS4wJzonZW4tVVMnIH19XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0c1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRlZEJ5XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIXBhZ2luZy5lbmFibGVkKSAmJiBwYWdpbmcucGFnZVJlY29yZHMgPiAwXCI+XG4gICAgICBTaG93aW5nXG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2luZy5wYWdlUmVjb3JkcyA9PT0gMVwiPlxuICAgICAgICB7eyBwYWdpbmcucGFnZVJlY29yZHMgfX0gcmVzdWx0XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2luZy5wYWdlUmVjb3JkcyA+IDFcIj5cbiAgICAgICAge3sgcGFnaW5nLnBhZ2VSZWNvcmRzIHwgbnVtYmVyOicxLjAnOidlbi1VUycgfX0gcmVzdWx0c1xuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRlZEJ5XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGZzLWxpc3Qtc2F2ZWQtZmlsdGVycyBjbGFzcz1cInNhdmVkLWZpbHRlcnNcIj48L2ZzLWxpc3Qtc2F2ZWQtZmlsdGVycz5cbiAgICA8ZnMtbWVudVxuICAgICAgICBbaGlkZGVuXT1cIiFzb3J0aW5nLnNvcnRpbmdDb2x1bW4gfHwgcGFnaW5nLnBhZ2VSZWNvcmRzID09PSAwXCJcbiAgICAgICAgI29yZGVyQ29sdW1uc01lbnU+XG4gICAgICA8IS0tIFJlYWwgc29ydGluZyBjb2x1bW5zIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgbmdGb3JcbiAgICAgICAgICBsZXQtY29sdW1uXG4gICAgICAgICAgW25nRm9yT2ZdPVwic29ydGluZy5zb3J0aW5nQ29sdW1uc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cInNldFNvcnRhYmxlQ29sdW1uKGNvbHVtbilcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRpdGxlOyBlbHNlIHNvcnRCeVRlbXBsYXRlXCI+XG4gICAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3NvcnRCeVRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIEZha2Ugc29ydGluZyBjb2x1bW5zIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgbmdGb3JcbiAgICAgICAgICBsZXQtY29sdW1uXG4gICAgICAgICAgW25nRm9yT2ZdPVwic29ydGluZy5mYWtlU29ydGluZ0NvbHVtbnNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1tZW51LWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJzZXRTb3J0YWJsZUNvbHVtbihjb2x1bW4pXCI+XG4gICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtbWVudT5cbiAgICA8bmctdGVtcGxhdGUgI3NvcnRlZEJ5PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRpbmcuc29ydGluZ0NvbHVtblwiPlxuICAgICAgICBzb3J0ZWQgYnlcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRpbmcuc29ydGluZ0NvbHVtbi50aXRsZTsgZWxzZSBzb3J0QnlUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwib3JkZXItdG9nZ2xlXCJcbiAgICAgICAgICAgICAgW2ZzTWVudVRyaWdnZXJGb3JdPVwib3JkZXJDb2x1bW5zTWVudVwiPlxuICAgICAgICAgICAge3sgc29ydGluZy5zb3J0aW5nQ29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgICxcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc29ydEJ5VGVtcGxhdGU+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJvcmRlci10b2dnbGVcIlxuICAgICAgICAgICAgICByXG4gICAgICAgICAgICAgIFtmc01lbnVUcmlnZ2VyRm9yXT1cIm9yZGVyQ29sdW1uc01lbnVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzb3J0aW5nLnNvcnRpbmdDb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICAsXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm9yZGVyLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGlyZWN0aW9uKClcIj5cbiAgICAgICAgICB7eyBzb3J0aW5nLnNvcnRpbmdDb2x1bW4uZnVsbE5hbWVEaXJlY3Rpb24gfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zbWFsbD5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNsaW1pdE1lbnU+XG4gIDxhIFtmc01lbnVUcmlnZ2VyRm9yXT1cImxpbWl0c01lbnVUcmlnZ2VyXCI+XG4gICAge3sgcGFnaW5nLnN0YXR1c0xhYmVsIH19XG4gIDwvYT5cbiAgPGZzLW1lbnUgI2xpbWl0c01lbnVUcmlnZ2VyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBuZ0ZvclxuICAgICAgICBsZXQtbGltaXRcbiAgICAgICAgW25nRm9yT2ZdPVwicGFnaW5nLmxpbWl0c1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgKGNsaWNrKT1cInNldExpbWl0KGxpbWl0KVwiPlxuICAgICAgICB7eyBsaW1pdCB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLW1lbnU+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const FS_LIST_CONFIG = new InjectionToken('fs-list.config');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtbGlzdC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWxpc3QucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFRLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBGU19MSVNUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnlbXT4oJ2ZzLWxpc3QuY29uZmlnJyk7XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtbGlzdC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWxpc3QucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFRLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmV4cG9ydCBjb25zdCBGU19MSVNUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnlbXT4oJ2ZzLWxpc3QuY29uZmlnJyk7XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvbGlzdGNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZzRmlsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRm4sXG4gIEZzRmlsdGVyQWN0aW9uLFxuICBGc0ZpbHRlckF1dG9SZWxvYWQsXG4gIEZzRmlsdGVyUGVyc2lzdGFuY2UsXG4gIElGaWx0ZXJDb25maWdEYXRlSXRlbSxcbiAgSUZpbHRlckNvbmZpZ0l0ZW0sXG4gIElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWcsXG59IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQge1xuICBGc1NlbGVjdGlvbkFjdGlvblNlbGVjdGVkLFxuICBGc1NlbGVjdGlvbkRpYWxvZ0NvbmZpZ0FjdGlvbixcbiAgU2VsZWN0aW9uUmVmLFxufSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlb3JkZXJQb3NpdGlvbiB9IGZyb20gJy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9hY3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdHJhdGVneSB9IGZyb20gJy4uL2VudW1zL3BhZ2luYXRpb24tc3RyYXRlZ3kuZW51bSc7XG5pbXBvcnQgeyBSb3dUeXBlIH0gZnJvbSAnLi4vZW51bXMvcm93LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGc0xpc3RTdGF0ZSB9IGZyb20gJy4uL2VudW1zL3N0YXRlLmVudW0nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNQYWdpbmcge1xuICBsaW1pdHM/OiBudW1iZXJbXTtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VzPzogbnVtYmVyO1xuICByZWNvcmRzPzogbnVtYmVyO1xuICBzdHJhdGVneT86IFBhZ2luYXRpb25TdHJhdGVneTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RDb25maWcge1xuICBoZWFkaW5nPzogc3RyaW5nO1xuICB0cmFja0J5Pzogc3RyaW5nO1xuICBzdWJoZWFkaW5nPzogc3RyaW5nO1xuICBzdGF0dXM/OiBib29sZWFuO1xuICByb3dIb3ZlckhpZ2hsaWdodD86IGJvb2xlYW47XG4gIGNoaXBzPzogYm9vbGVhbjtcbiAgY29sdW1uPzogRnNMaXN0Q29sdW1uQ29uZmlnO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBmaWx0ZXJJbnB1dD86IGJvb2xlYW47XG4gIHF1ZXJ5UGFyYW0/OiBib29sZWFuO1xuICBwYWdpbmc/OiBGc1BhZ2luZyB8IGZhbHNlO1xuICBsb2FkTW9yZT86IEZzTGlzdExvYWRNb3JlQ29uZmlnIHwgYm9vbGVhbjtcbiAgY29sdW1uRGVmYXVsdHM/OiBhbnk7XG4gIGZpbHRlcnM/OiAoSUZpbHRlckNvbmZpZ0l0ZW0gfCBJRmlsdGVyQ29uZmlnRGF0ZUl0ZW0pW107XG4gIHNhdmVkRmlsdGVycz86IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWc7XG4gIHBlcnNpc3Q/OiBGc0xpc3RQZXJzaXRhbmNlO1xuICByb3dBY3Rpb25zPzogKEZzTGlzdFJvd0FjdGlvbkdyb3VwIHwgRnNMaXN0Um93QWN0aW9uKVtdO1xuICByb3dBY3Rpb25zSG92ZXI/OiBib29sZWFuO1xuICByb3dDbGFzcz86IChyb3c6IGFueSwgb3B0aW9ucz86IEZzTGlzdFJvd0NsYXNzT3B0aW9ucykgPT4gc3RyaW5nO1xuICByb3dIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGlvbnM/OiBGc0xpc3RBY3Rpb25bXTtcbiAgZmV0Y2g/OiBGc0xpc3RGZXRjaEZuO1xuICBhZnRlckZldGNoPzogRnNMaXN0QWZ0ZXJGZXRjaEZuO1xuICBiZWZvcmVGZXRjaD86IEZzTGlzdEJlZm9yZUZldGNoRm47XG4gIGFmdGVyQ29udGVudEluaXQ/OiBGc0xpc3RBZnRlckNvbnRlbnRJbml0Rm47XG4gIGFmdGVySW5pdD86IEZzTGlzdEFmdGVySW5pdEZuO1xuICBzZWxlY3Rpb24/OiBGc0xpc3RTZWxlY3Rpb25Db25maWc7XG4gIGluaXRpYWxGZXRjaD86IGJvb2xlYW47XG4gIHJvd0V2ZW50cz86IHsgW25hbWU6IHN0cmluZ106IChldmVudCkgPT4gdm9pZCB9O1xuICBoZWFkZXI/OiBGc0xpc3RIZWFkZXJDb25maWc7XG4gIGNlbGw/OiBGc0xpc3RDZWxsQ29uZmlnO1xuICBmb290ZXI/OiBGc0xpc3RGb290ZXJDb25maWc7XG4gIHJlb3JkZXI/OiBGc0xpc3RSZW9yZGVyQ29uZmlnO1xuICBzb3J0cz86IEZzTGlzdFNvcnRzQ29uZmlnW107XG4gIGdyb3VwPzogRnNMaXN0R3JvdXBDb25maWc7XG4gIHNvcnQ/OiBGc0xpc3RTb3J0Q29uZmlnO1xuICByZXN0b3JlPzogRnNMaXN0UmVzdG9yZUNvbmZpZztcbiAgbm9SZXN1bHRzPzogRnNMaXN0Tm9SZXN1bHRzQ29uZmlnO1xuICBlbXB0eVN0YXRlPzogRnNMaXN0RW1wdHlTdGF0ZUNvbmZpZztcbiAgZmlsdGVySW5pdD86IENoYW5nZUZuO1xuICBmaWx0ZXJDaGFuZ2U/OiBDaGFuZ2VGbjtcbiAgcmVsb2FkPzogYm9vbGVhbjtcbiAgc3R5bGU/OiAnbGluZScgfCAnY2FyZCcgfCAnYmFzaWMnO1xuICBhdXRvUmVsb2FkPzogRnNGaWx0ZXJBdXRvUmVsb2FkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdEdyb3VwQ29uZmlnIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGluaXRpYWxFeHBhbmQ/OiBib29sZWFuO1xuICBncm91cEJ5PzogKHJvdzogYW55KSA9PiBhbnk7XG4gIGNvbXBhcmVCeT86IChyb3c6IGFueSkgPT4gYW55O1xuICBmb290ZXI/OiAoXG4gICAgcm93OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIGdyb3VwPzoge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgfVtdO1xuICAgIH0sXG4gICkgPT4gYm9vbGVhbjtcbiAgYWN0aW9ucz86IChGc0xpc3RSb3dBY3Rpb25Hcm91cCB8IEZzTGlzdFJvd0FjdGlvbilbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RMb2FkTW9yZUNvbmZpZyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuLFxuICBsYWJlbD86IHN0cmluZztcbiAgYnV0dG9uQ29sb3I/OiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJztcbiAgYnV0dG9uVHlwZT86ICdmbGF0JyB8ICdyYWlzZWQnIHwgJ3N0cm9rZWQnIHwgJ2Jhc2ljJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSZW9yZGVyQ29uZmlnIHtcbiAgc3RhcnQ/OiAoKSA9PiB2b2lkO1xuICBtb3ZlZD86IEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrO1xuICBkb25lPzogRnNMaXN0UmVvcmRlckRvbmVDYWxsYmFjaztcbiAgbW92ZURyb3A/OiBGc0xpc3RSZW9yZGVyTW92ZUluR3JvdXBDYWxsYmFjaztcbiAgcG9zaXRpb24/OiBSZW9yZGVyUG9zaXRpb247XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdG9nZ2xlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1lbnU/OiBib29sZWFuO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHN0YXR1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrXG4gID0gKHJvd3M6IEZzTGlzdFJlb3JkZXJEYXRhW10pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJlb3JkZXJEb25lQ2FsbGJhY2tcbiAgPSAocm93czogRnNMaXN0UmVvcmRlckRhdGFbXSkgPT4gdm9pZCB8IE9ic2VydmFibGU8YW55PjtcblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSZW9yZGVyRGF0YSB7XG4gIHR5cGU6IFJvd1R5cGU7XG4gIGRhdGE6IGFueTtcbiAgcGFyZW50OiBGc0xpc3RSZW9yZGVyRGF0YTtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0UmVvcmRlck1vdmVJbkdyb3VwQ2FsbGJhY2sgPVxuICAoZGF0YTogeyByb3cxOiBhbnk7IHJvdzI6IGFueTsgZ3JvdXAxOiBhbnk7IGdyb3VwMjogYW55IH0pID0+IGJvb2xlYW47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0SGVhZGVyQ29uZmlnIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RDZWxsQ29uZmlnIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RGb290ZXJDb25maWcge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGFsaWduPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFNvcnRzQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RTb3J0Q29uZmlnIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0UmVzdG9yZUNvbmZpZyB7XG4gIHF1ZXJ5PzogYW55O1xuICBmaWx0ZXI/OiBib29sZWFuIHwgc3RyaW5nO1xuICBmaWx0ZXJMYWJlbD86IHN0cmluZztcbiAgbWVudUxhYmVsPzogc3RyaW5nO1xuICBjbGljaz86IChyb3c6IEZzTGlzdEFic3RyYWN0Um93LCBldmVudD86IGFueSkgPT4gdm9pZCB8IE9ic2VydmFibGU8YW55PjtcbiAgcmVsb2FkPzogYm9vbGVhbjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdE5vUmVzdWx0c0NvbmZpZyB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0U2VsZWN0aW9uQ29uZmlnIHtcbiAgYWN0aW9ucz86IEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW107XG4gIGFjdGlvblNlbGVjdGVkPzogKGFjdGlvbjogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFsbFNlbGVjdGVkPzogKCkgPT4gdm9pZDtcbiAgY2FuY2VsbGVkPzogKCkgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBzZWxlY3RBbGw/OiBib29sZWFuO1xuICBzZWxlY3Rpb25DaGFuZ2VkPzogKGRhdGE6IGFueSwgc2VsZWN0ZWRBbGw6IGJvb2xlYW4sIHNlbGVjdGlvblJlZjogU2VsZWN0aW9uUmVmKSA9PlxuICAgIEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW10gfCBPYnNlcnZhYmxlPEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW10gfCB2b2lkPiB8IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0RmV0Y2hTdWJzY3JpcHRpb24ge1xuICBsb2FkT2Zmc2V0PzogYm9vbGVhbjtcbiAgc2Nyb2xsSW50b1ZpZXc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBGc0xpc3RBY3Rpb24gPSB7IGN1c3RvbWl6ZT86IGJvb2xlYW4gfSAmIEZzRmlsdGVyQWN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFJvd0FjdGlvbkdyb3VwIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHJvd0FjdGlvbnM6IEZzTGlzdFJvd0FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFJvd0FjdGlvbiB7XG4gIGxhYmVsPzogc3RyaW5nIHwgRnNMaXN0Um93QWN0aW9uTGFiZWxGbjtcbiAgdHlwZT86IEFjdGlvblR5cGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbWVudT86IGJvb2xlYW47XG4gIGNsaWNrPzogKHJvdywgZXZlbnQsIGluZGV4KSA9PiB2b2lkO1xuICBsaW5rPzogRnNMaXN0Um93QWN0aW9uTGlua0ZuO1xuICBmaWxlPzogRnNMaXN0Um93QWN0aW9uRmlsZTtcbiAgc2hvdz86IChyb3csIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW47XG4gIHJlbW92ZT86IHsgdGl0bGU/OiBzdHJpbmc7IHRlbXBsYXRlPzogc3RyaW5nIH0gfCBib29sZWFuO1xuICByZXN0b3JlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0Um93QWN0aW9uRmlsZUZuID0gKHNlbGVjdGlvbjogRnNGaWxlIHwgRnNGaWxlW10sIHJvdzogRnNMaXN0QWJzdHJhY3RSb3csIGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJvd0FjdGlvbkxpbmtGbiA9IChyb3c6IEZzTGlzdEFic3RyYWN0Um93KSA9PiBGc0xpc3RSb3dBY3Rpb25MaW5rO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RSb3dBY3Rpb25MYWJlbEZuID0gKHJvdzogRnNMaXN0QWJzdHJhY3RSb3cpID0+IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSb3dBY3Rpb25GaWxlIHtcbiAgc2VsZWN0OiBGc0xpc3RSb3dBY3Rpb25GaWxlRm47XG4gIGVycm9yPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGFjY2VwdD86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIG1pbkhlaWdodD86IG51bWJlcjtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgaW1hZ2VRdWFsaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFJvd0FjdGlvbkxpbmsge1xuICBsaW5rOiBhbnlbXSB8IHN0cmluZztcbiAgcXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB0YXJnZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0QWJzdHJhY3RSb3cge1xuICBbbmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBGc0xpc3RUcmFja0J5Rm4gPSAocm93OiBGc0xpc3RBYnN0cmFjdFJvdywgaW5kZXg/OiBudW1iZXIpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbiA9IChsaXN0Um93OiBGc0xpc3RBYnN0cmFjdFJvdywgdGFyZ2V0Um93PzogRnNMaXN0QWJzdHJhY3RSb3cpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIEZzTGlzdENvbHVtbkxvYWRGbiA9ICgpID0+IE9ic2VydmFibGU8RnNMaXN0Q29sdW1uW10+O1xuXG5leHBvcnQgdHlwZSBGc0xpc3RDb2x1bW5DaGFuZ2VGbiA9IChsaXN0Q29sdW1uczogRnNMaXN0Q29sdW1uW10pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEZzTGlzdENvbHVtblRpdGxlRm4gPSAobmFtZTogc3RyaW5nLCBkZWZhdWx0VGl0bGU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RDb2x1bW5Ub29sdGlwRm4gPSAobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbikgPT4gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RDb2x1bW5EaXNhYmxlZEZuID0gKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRnNMaXN0Q29sdW1uU2VsZWN0ZWRGbiA9IChuYW1lOiBzdHJpbmcsIHNob3c6IGJvb2xlYW4pID0+IGJvb2xlYW47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0Q29sdW1uQ29uZmlnIHtcbiAgbG9hZD86IEZzTGlzdENvbHVtbkxvYWRGbjtcbiAgY2hhbmdlPzogRnNMaXN0Q29sdW1uQ2hhbmdlRm47XG4gIHRpdGxlPzogRnNMaXN0Q29sdW1uVGl0bGVGbjtcbiAgdG9vbHRpcD86IEZzTGlzdENvbHVtblRvb2x0aXBGbjtcbiAgZGlzYWJsZWQ/OiBGc0xpc3RDb2x1bW5EaXNhYmxlZEZuO1xuICBzZWxlY3RlZD86IEZzTGlzdENvbHVtblNlbGVjdGVkRm47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0Q29sdW1uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzaG93OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdEFjdGlvblNlbGVjdGVkIGV4dGVuZHMgRnNTZWxlY3Rpb25BY3Rpb25TZWxlY3RlZCB7XG4gIHNlbGVjdGVkOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RFbXB0eVN0YXRlQ29uZmlnIHtcbiAgdmFsaWRhdGU6IEZzTGlzdFN0YXRlVmFsaWRhdGlvbkZuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdEZldGNoT3B0aW9ucyB7XG4gIHN0YXRlOiBGc0xpc3RTdGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0UGVyc2l0YW5jZSA9IEZzRmlsdGVyUGVyc2lzdGFuY2U7XG5leHBvcnQgdHlwZSBGc0xpc3RTdGF0ZVZhbGlkYXRpb25GbiA9IChmaWx0ZXJzOiBhbnksIHJvd3M6IEZzTGlzdEFic3RyYWN0Um93W10pID0+IGJvb2xlYW47XG5leHBvcnQgdHlwZSBGc0xpc3RGZXRjaEZuID1cbiAgKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBvcHRpb25zOiBGc0xpc3RGZXRjaE9wdGlvbnMpID0+XG4gICAgT2JzZXJ2YWJsZTx7IGRhdGE6IHVua25vd25bXTsgcGFnaW5nPzogRnNQYWdpbmcgfT47XG5cbmV4cG9ydCB0eXBlIEZzTGlzdEFmdGVyRmV0Y2hGbiA9XG4gIChxdWVyeTogUmVjb3JkPHN0cmluZywgYW55PiwgZGF0YTogdW5rbm93bltdKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RCZWZvcmVGZXRjaEZuID1cbiAgKHF1ZXJ5KSA9PiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG5leHBvcnQgdHlwZSBGc0xpc3RBZnRlckNvbnRlbnRJbml0Rm4gPVxuICAocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4sIGRhdGE6IHVua25vd25bXSkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSb3dDbGFzc09wdGlvbnMge1xuICBpbmRleDogbnVtYmVyO1xuICBncm91cEluZGV4PzogbnVtYmVyO1xuICB0eXBlPzogUm93VHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0QWZ0ZXJJbml0Rm4gPSAobGlzdENvbXBvbmVudDogYW55KSA9PiB2b2lkO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvbGlzdGNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZzRmlsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRm4sXG4gIEZzRmlsdGVyQWN0aW9uLFxuICBGc0ZpbHRlckF1dG9SZWxvYWQsXG4gIEZzRmlsdGVyUGVyc2lzdGFuY2UsXG4gIElGaWx0ZXJDb25maWdEYXRlSXRlbSxcbiAgSUZpbHRlckNvbmZpZ0l0ZW0sXG4gIElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWcsXG59IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQge1xuICBGc1NlbGVjdGlvbkFjdGlvblNlbGVjdGVkLFxuICBGc1NlbGVjdGlvbkRpYWxvZ0NvbmZpZ0FjdGlvbixcbiAgU2VsZWN0aW9uUmVmLFxufSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlb3JkZXJQb3NpdGlvbiB9IGZyb20gJy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9hY3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdHJhdGVneSB9IGZyb20gJy4uL2VudW1zL3BhZ2luYXRpb24tc3RyYXRlZ3kuZW51bSc7XG5pbXBvcnQgeyBSb3dUeXBlIH0gZnJvbSAnLi4vZW51bXMvcm93LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGc0xpc3RTdGF0ZSB9IGZyb20gJy4uL2VudW1zL3N0YXRlLmVudW0nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNQYWdpbmcge1xuICBsaW1pdHM/OiBudW1iZXJbXTtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VzPzogbnVtYmVyO1xuICByZWNvcmRzPzogbnVtYmVyO1xuICBzdHJhdGVneT86IFBhZ2luYXRpb25TdHJhdGVneTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RDb25maWcge1xuICBoZWFkaW5nPzogc3RyaW5nO1xuICB0cmFja0J5Pzogc3RyaW5nO1xuICBzdWJoZWFkaW5nPzogc3RyaW5nO1xuICBzdGF0dXM/OiBib29sZWFuO1xuICByb3dIb3ZlckhpZ2hsaWdodD86IGJvb2xlYW47XG4gIGNoaXBzPzogYm9vbGVhbjtcbiAgY29sdW1uPzogRnNMaXN0Q29sdW1uQ29uZmlnO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBmaWx0ZXJJbnB1dD86IGJvb2xlYW47XG4gIHF1ZXJ5UGFyYW0/OiBib29sZWFuO1xuICBwYWdpbmc/OiBGc1BhZ2luZyB8IGZhbHNlO1xuICBsb2FkTW9yZT86IEZzTGlzdExvYWRNb3JlQ29uZmlnIHwgYm9vbGVhbjtcbiAgY29sdW1uRGVmYXVsdHM/OiBhbnk7XG4gIGZpbHRlcnM/OiAoSUZpbHRlckNvbmZpZ0l0ZW0gfCBJRmlsdGVyQ29uZmlnRGF0ZUl0ZW0pW107XG4gIHNhdmVkRmlsdGVycz86IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWc7XG4gIHBlcnNpc3Q/OiBGc0xpc3RQZXJzaXRhbmNlO1xuICByb3dBY3Rpb25zPzogKEZzTGlzdFJvd0FjdGlvbkdyb3VwIHwgRnNMaXN0Um93QWN0aW9uKVtdO1xuICByb3dBY3Rpb25zSG92ZXI/OiBib29sZWFuO1xuICByb3dDbGFzcz86IChyb3c6IGFueSwgb3B0aW9ucz86IEZzTGlzdFJvd0NsYXNzT3B0aW9ucykgPT4gc3RyaW5nO1xuICByb3dIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGlvbnM/OiBGc0xpc3RBY3Rpb25bXTtcbiAgZmV0Y2g/OiBGc0xpc3RGZXRjaEZuO1xuICBhZnRlckZldGNoPzogRnNMaXN0QWZ0ZXJGZXRjaEZuO1xuICBiZWZvcmVGZXRjaD86IEZzTGlzdEJlZm9yZUZldGNoRm47XG4gIGFmdGVyQ29udGVudEluaXQ/OiBGc0xpc3RBZnRlckNvbnRlbnRJbml0Rm47XG4gIGFmdGVySW5pdD86IEZzTGlzdEFmdGVySW5pdEZuO1xuICBzZWxlY3Rpb24/OiBGc0xpc3RTZWxlY3Rpb25Db25maWc7XG4gIGluaXRpYWxGZXRjaD86IGJvb2xlYW47XG4gIHJvd0V2ZW50cz86IHsgW25hbWU6IHN0cmluZ106IChldmVudCkgPT4gdm9pZCB9O1xuICBoZWFkZXI/OiBGc0xpc3RIZWFkZXJDb25maWc7XG4gIGNlbGw/OiBGc0xpc3RDZWxsQ29uZmlnO1xuICBmb290ZXI/OiBGc0xpc3RGb290ZXJDb25maWc7XG4gIHJlb3JkZXI/OiBGc0xpc3RSZW9yZGVyQ29uZmlnO1xuICBzb3J0cz86IEZzTGlzdFNvcnRzQ29uZmlnW107XG4gIGdyb3VwPzogRnNMaXN0R3JvdXBDb25maWc7XG4gIHNvcnQ/OiBGc0xpc3RTb3J0Q29uZmlnO1xuICByZXN0b3JlPzogRnNMaXN0UmVzdG9yZUNvbmZpZztcbiAgbm9SZXN1bHRzPzogRnNMaXN0Tm9SZXN1bHRzQ29uZmlnO1xuICBlbXB0eVN0YXRlPzogRnNMaXN0RW1wdHlTdGF0ZUNvbmZpZztcbiAgZmlsdGVySW5pdD86IENoYW5nZUZuO1xuICBmaWx0ZXJDaGFuZ2U/OiBDaGFuZ2VGbjtcbiAgcmVsb2FkPzogYm9vbGVhbjtcbiAgc3R5bGU/OiAnbGluZScgfCAnY2FyZCcgfCAnYmFzaWMnO1xuICBhdXRvUmVsb2FkPzogRnNGaWx0ZXJBdXRvUmVsb2FkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdEdyb3VwQ29uZmlnIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGluaXRpYWxFeHBhbmQ/OiBib29sZWFuO1xuICBncm91cEJ5PzogKHJvdzogYW55KSA9PiBhbnk7XG4gIGNvbXBhcmVCeT86IChyb3c6IGFueSkgPT4gYW55O1xuICBmb290ZXI/OiAoXG4gICAgcm93OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIGdyb3VwPzoge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgfVtdO1xuICAgIH0sXG4gICkgPT4gYm9vbGVhbjtcbiAgYWN0aW9ucz86IChGc0xpc3RSb3dBY3Rpb25Hcm91cCB8IEZzTGlzdFJvd0FjdGlvbilbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RMb2FkTW9yZUNvbmZpZyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuLFxuICBsYWJlbD86IHN0cmluZztcbiAgYnV0dG9uQ29sb3I/OiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJztcbiAgYnV0dG9uVHlwZT86ICdmbGF0JyB8ICdyYWlzZWQnIHwgJ3N0cm9rZWQnIHwgJ2Jhc2ljJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSZW9yZGVyQ29uZmlnIHtcbiAgc3RhcnQ/OiAoKSA9PiB2b2lkO1xuICBtb3ZlZD86IEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrO1xuICBkb25lPzogRnNMaXN0UmVvcmRlckRvbmVDYWxsYmFjaztcbiAgbW92ZURyb3A/OiBGc0xpc3RSZW9yZGVyTW92ZUluR3JvdXBDYWxsYmFjaztcbiAgcG9zaXRpb24/OiBSZW9yZGVyUG9zaXRpb247XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdG9nZ2xlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1lbnU/OiBib29sZWFuO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHN0YXR1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJlb3JkZXJNb3ZlZENhbGxiYWNrXG4gID0gKHJvd3M6IEZzTGlzdFJlb3JkZXJEYXRhW10pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJlb3JkZXJEb25lQ2FsbGJhY2tcbiAgPSAocm93czogRnNMaXN0UmVvcmRlckRhdGFbXSkgPT4gdm9pZCB8IE9ic2VydmFibGU8YW55PjtcblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSZW9yZGVyRGF0YSB7XG4gIHR5cGU6IFJvd1R5cGU7XG4gIGRhdGE6IGFueTtcbiAgcGFyZW50OiBGc0xpc3RSZW9yZGVyRGF0YTtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0UmVvcmRlck1vdmVJbkdyb3VwQ2FsbGJhY2sgPVxuICAoZGF0YTogeyByb3cxOiBhbnk7IHJvdzI6IGFueTsgZ3JvdXAxOiBhbnk7IGdyb3VwMjogYW55IH0pID0+IGJvb2xlYW47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0SGVhZGVyQ29uZmlnIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RDZWxsQ29uZmlnIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbGlnbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RGb290ZXJDb25maWcge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGFsaWduPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFNvcnRzQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RTb3J0Q29uZmlnIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0UmVzdG9yZUNvbmZpZyB7XG4gIHF1ZXJ5PzogYW55O1xuICBmaWx0ZXI/OiBib29sZWFuIHwgc3RyaW5nO1xuICBmaWx0ZXJMYWJlbD86IHN0cmluZztcbiAgbWVudUxhYmVsPzogc3RyaW5nO1xuICBjbGljaz86IChyb3c6IEZzTGlzdEFic3RyYWN0Um93LCBldmVudD86IGFueSkgPT4gdm9pZCB8IE9ic2VydmFibGU8YW55PjtcbiAgcmVsb2FkPzogYm9vbGVhbjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdE5vUmVzdWx0c0NvbmZpZyB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0U2VsZWN0aW9uQ29uZmlnIHtcbiAgYWN0aW9ucz86IEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW107XG4gIGFjdGlvblNlbGVjdGVkPzogKGFjdGlvbjogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFsbFNlbGVjdGVkPzogKCkgPT4gdm9pZDtcbiAgY2FuY2VsbGVkPzogKCkgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBzZWxlY3RBbGw/OiBib29sZWFuO1xuICBzZWxlY3Rpb25DaGFuZ2VkPzogKGRhdGE6IGFueSwgc2VsZWN0ZWRBbGw6IGJvb2xlYW4sIHNlbGVjdGlvblJlZjogU2VsZWN0aW9uUmVmKSA9PlxuICAgIEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW10gfCBPYnNlcnZhYmxlPEZzU2VsZWN0aW9uRGlhbG9nQ29uZmlnQWN0aW9uW10gfCB2b2lkPiB8IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0RmV0Y2hTdWJzY3JpcHRpb24ge1xuICBsb2FkT2Zmc2V0PzogYm9vbGVhbjtcbiAgc2Nyb2xsSW50b1ZpZXc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBGc0xpc3RBY3Rpb24gPSB7IGN1c3RvbWl6ZT86IGJvb2xlYW4gfSAmIEZzRmlsdGVyQWN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFJvd0FjdGlvbkdyb3VwIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHJvd0FjdGlvbnM6IEZzTGlzdFJvd0FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdFJvd0FjdGlvbiB7XG4gIGxhYmVsPzogc3RyaW5nIHwgRnNMaXN0Um93QWN0aW9uTGFiZWxGbjtcbiAgdHlwZT86IEFjdGlvblR5cGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZyB8ICgocm93OiBhbnkpID0+IHN0cmluZyk7XG4gIG1lbnU/OiBib29sZWFuO1xuICBjbGljaz86IChyb3csIGV2ZW50LCBpbmRleCkgPT4gdm9pZDtcbiAgbGluaz86IEZzTGlzdFJvd0FjdGlvbkxpbmtGbjtcbiAgZmlsZT86IEZzTGlzdFJvd0FjdGlvbkZpbGU7XG4gIHNob3c/OiAocm93LCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuO1xuICByZW1vdmU/OiB7IHRpdGxlPzogc3RyaW5nOyB0ZW1wbGF0ZT86IHN0cmluZyB9IHwgYm9vbGVhbjtcbiAgcmVzdG9yZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFJvd0FjdGlvbkZpbGVGbiA9IChzZWxlY3Rpb246IEZzRmlsZSB8IEZzRmlsZVtdLCByb3c6IEZzTGlzdEFic3RyYWN0Um93LCBpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RSb3dBY3Rpb25MaW5rRm4gPSAocm93OiBGc0xpc3RBYnN0cmFjdFJvdykgPT4gRnNMaXN0Um93QWN0aW9uTGluaztcblxuZXhwb3J0IHR5cGUgRnNMaXN0Um93QWN0aW9uTGFiZWxGbiA9IChyb3c6IEZzTGlzdEFic3RyYWN0Um93KSA9PiBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0Um93QWN0aW9uRmlsZSB7XG4gIHNlbGVjdDogRnNMaXN0Um93QWN0aW9uRmlsZUZuO1xuICBlcnJvcj86IChlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBtaW5IZWlnaHQ/OiBudW1iZXI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gIGltYWdlUXVhbGl0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RSb3dBY3Rpb25MaW5rIHtcbiAgbGluazogYW55W10gfCBzdHJpbmc7XG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdEFic3RyYWN0Um93IHtcbiAgW25hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgRnNMaXN0VHJhY2tCeUZuID0gKHJvdzogRnNMaXN0QWJzdHJhY3RSb3csIGluZGV4PzogbnVtYmVyKSA9PiBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4gPSAobGlzdFJvdzogRnNMaXN0QWJzdHJhY3RSb3csIHRhcmdldFJvdz86IEZzTGlzdEFic3RyYWN0Um93KSA9PiBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RDb2x1bW5Mb2FkRm4gPSAoKSA9PiBPYnNlcnZhYmxlPEZzTGlzdENvbHVtbltdPjtcblxuZXhwb3J0IHR5cGUgRnNMaXN0Q29sdW1uQ2hhbmdlRm4gPSAobGlzdENvbHVtbnM6IEZzTGlzdENvbHVtbltdKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBGc0xpc3RDb2x1bW5UaXRsZUZuID0gKG5hbWU6IHN0cmluZywgZGVmYXVsdFRpdGxlOiBzdHJpbmcpID0+IHN0cmluZztcblxuZXhwb3J0IHR5cGUgRnNMaXN0Q29sdW1uVG9vbHRpcEZuID0gKG5hbWU6IHN0cmluZywgc2hvdzogYm9vbGVhbiwgZGlzYWJsZWQ6IGJvb2xlYW4pID0+IHN0cmluZztcblxuZXhwb3J0IHR5cGUgRnNMaXN0Q29sdW1uRGlzYWJsZWRGbiA9IChuYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIEZzTGlzdENvbHVtblNlbGVjdGVkRm4gPSAobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuKSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdENvbHVtbkNvbmZpZyB7XG4gIGxvYWQ/OiBGc0xpc3RDb2x1bW5Mb2FkRm47XG4gIGNoYW5nZT86IEZzTGlzdENvbHVtbkNoYW5nZUZuO1xuICB0aXRsZT86IEZzTGlzdENvbHVtblRpdGxlRm47XG4gIHRvb2x0aXA/OiBGc0xpc3RDb2x1bW5Ub29sdGlwRm47XG4gIGRpc2FibGVkPzogRnNMaXN0Q29sdW1uRGlzYWJsZWRGbjtcbiAgc2VsZWN0ZWQ/OiBGc0xpc3RDb2x1bW5TZWxlY3RlZEZuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzTGlzdENvbHVtbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2hvdzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RBY3Rpb25TZWxlY3RlZCBleHRlbmRzIEZzU2VsZWN0aW9uQWN0aW9uU2VsZWN0ZWQge1xuICBzZWxlY3RlZDogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0RW1wdHlTdGF0ZUNvbmZpZyB7XG4gIHZhbGlkYXRlOiBGc0xpc3RTdGF0ZVZhbGlkYXRpb25Gbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0xpc3RGZXRjaE9wdGlvbnMge1xuICBzdGF0ZTogRnNMaXN0U3RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIEZzTGlzdFBlcnNpdGFuY2UgPSBGc0ZpbHRlclBlcnNpc3RhbmNlO1xuZXhwb3J0IHR5cGUgRnNMaXN0U3RhdGVWYWxpZGF0aW9uRm4gPSAoZmlsdGVyczogYW55LCByb3dzOiBGc0xpc3RBYnN0cmFjdFJvd1tdKSA9PiBib29sZWFuO1xuZXhwb3J0IHR5cGUgRnNMaXN0RmV0Y2hGbiA9XG4gIChxdWVyeTogUmVjb3JkPHN0cmluZywgYW55Piwgb3B0aW9uczogRnNMaXN0RmV0Y2hPcHRpb25zKSA9PlxuICAgIE9ic2VydmFibGU8eyBkYXRhOiB1bmtub3duW107IHBhZ2luZz86IEZzUGFnaW5nIH0+O1xuXG5leHBvcnQgdHlwZSBGc0xpc3RBZnRlckZldGNoRm4gPVxuICAocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4sIGRhdGE6IHVua25vd25bXSkgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgRnNMaXN0QmVmb3JlRmV0Y2hGbiA9XG4gIChxdWVyeSkgPT4gT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuZXhwb3J0IHR5cGUgRnNMaXN0QWZ0ZXJDb250ZW50SW5pdEZuID1cbiAgKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBkYXRhOiB1bmtub3duW10pID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNMaXN0Um93Q2xhc3NPcHRpb25zIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgZ3JvdXBJbmRleD86IG51bWJlcjtcbiAgdHlwZT86IFJvd1R5cGU7XG59XG5cbmV4cG9ydCB0eXBlIEZzTGlzdEFmdGVySW5pdEZuID0gKGxpc3RDb21wb25lbnQ6IGFueSkgPT4gdm9pZDtcbiJdfQ==
@@ -25,6 +25,9 @@ export class RowAction {
25
25
  get isGroup() {
26
26
  return this._isGroup;
27
27
  }
28
+ getRowIcon(row) {
29
+ return typeof this.icon === 'function' ? this.icon(row) : this.icon;
30
+ }
28
31
  _init(value) {
29
32
  this.icon = value.icon;
30
33
  this.menu = value.menu ?? true;
@@ -99,4 +102,4 @@ export class RowAction {
99
102
  }
100
103
  }
101
104
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBUXZELE1BQU0sT0FBTyxTQUFTO0lBRWIsSUFBSSxDQUFTO0lBQ2IsSUFBSSxDQUFVO0lBQ2QsTUFBTSxDQUFzQztJQUM1QyxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFhO0lBQ2pCLElBQUksQ0FBVztJQUNmLE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQWM7SUFDeEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFVBQVUsQ0FBc0I7SUFDaEMsVUFBVSxHQUFhLEVBQUUsQ0FBQztJQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2YsS0FBSyxDQUFXO0lBRWhCLFVBQVUsQ0FBc0I7SUFFL0IsT0FBTyxDQUF3QjtJQUN0QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRTNDLFlBQVksU0FBYyxFQUFFO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxD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RSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL2FjdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHtcbiAgRnNMaXN0Um93QWN0aW9uRmlsZSxcbiAgRnNMaXN0Um93QWN0aW9uTGluayxcbiAgRnNMaXN0Um93QWN0aW9uTGlua0ZuLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuXG5leHBvcnQgY2xhc3MgUm93QWN0aW9uIHtcblxuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuICBwdWJsaWMgbWVudTogYm9vbGVhbjtcbiAgcHVibGljIHJlbW92ZTogeyB0aXRsZTogc3RyaW5nOyB0ZW1wbGF0ZTogc3RyaW5nIH07XG4gIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZztcbiAgcHVibGljIHR5cGU6IEFjdGlvblR5cGU7XG4gIHB1YmxpYyBzaG93OiBGdW5jdGlvbjtcbiAgcHVibGljIHJlc3RvcmU6IGJvb2xlYW47XG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgcHVibGljIGxhYmVsID0gJyc7XG4gIHB1YmxpYyByb3V0ZXJMaW5rOiBGc0xpc3RSb3dBY3Rpb25MaW5rO1xuICBwdWJsaWMgY2xhc3NBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGlzU2hvd24gPSB0cnVlO1xuICBwdWJsaWMgY2xpY2s6IEZ1bmN0aW9uO1xuXG4gIHB1YmxpYyBmaWxlQ29uZmlnOiBGc0xpc3RSb3dBY3Rpb25GaWxlO1xuXG4gIHByaXZhdGUgX2xpbmtGbjogRnNMaXN0Um93QWN0aW9uTGlua0ZuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0dyb3VwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBhbnkgPSB7fSkge1xuICAgIHRoaXMuX2luaXQoY29uZmlnKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucm93QWN0aW9ucykpIHtcbiAgICAgIHRoaXMuX2lzR3JvdXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5pY29uID0gdmFsdWUuaWNvbjtcbiAgICB0aGlzLm1lbnUgPSB2YWx1ZS5tZW51ID8/IHRydWU7XG4gICAgdGhpcy5yZW1vdmUgPSB2YWx1ZS5yZW1vdmU7XG4gICAgdGhpcy5jbGFzc05hbWUgPSB2YWx1ZS5jbGFzc05hbWU7XG4gICAgdGhpcy50eXBlID0gdGhpcy5tZW51ICYmIHRoaXMuaWNvbiAmJiAhdGhpcy5sYWJlbCAmJiAhdmFsdWUudHlwZSA/IEFjdGlvblR5cGUuSWNvbiA6IHZhbHVlLnR5cGUgPz8gQWN0aW9uVHlwZS5CYXNpYztcbiAgICB0aGlzLnNob3cgPSB2YWx1ZS5zaG93O1xuICAgIHRoaXMucmVzdG9yZSA9IHZhbHVlLnJlc3RvcmU7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0gdmFsdWUucm93QWN0aW9uc1xuICAgICAgPy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcblxuXG4gICAgLy8gUmUtYXNzaWduIGNsaWNrIGZ1bmN0aW9uXG4gICAgY29uc3QgY2xpY2tGbiA9IHZhbHVlLmNsaWNrO1xuICAgIHRoaXMuY2xpY2sgPSAocm93LCBldmVudCwgaW5kZXgsIHJvd0FjdGlvbnNSZWYgPSBudWxsKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2xpY2tFdmVudChyb3csIGV2ZW50LCBpbmRleCwgcm93QWN0aW9uc1JlZiwgY2xpY2tGbik7XG4gICAgfTtcblxuICAgIHRoaXMuX2xpbmtGbiA9IHZhbHVlLmxpbms7XG5cbiAgICBpZiAodmFsdWUuZmlsZSkge1xuICAgICAgdGhpcy5maWxlQ29uZmlnID0geyAuLi52YWx1ZS5maWxlIH07XG5cbiAgICAgIGlmICh0aGlzLmZpbGVDb25maWcuc2VsZWN0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEZuID0gdGhpcy5maWxlQ29uZmlnLnNlbGVjdDtcbiAgICAgICAgdGhpcy5maWxlQ29uZmlnLnNlbGVjdCA9IChzZWxlY3Rpb24sIHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICBzZWxlY3RGbihzZWxlY3Rpb24sIHJvdywgaW5kZXgpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGFiZWwgPSB2YWx1ZS5sYWJlbDtcblxuICAgIGlmICh0aGlzLmNsYXNzTmFtZSkge1xuICAgICAgdGhpcy5jbGFzc0FycmF5ID0gdGhpcy5jbGFzc05hbWUuc3BsaXQoJyAnKS5yZWR1Y2UoKGFjYywgZWxlbSkgPT4ge1xuICAgICAgICBhY2MucHVzaChlbGVtKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Nob3dTdGF0dXMocm93LCBpbmRleCkge1xuICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyhyb3csIGluZGV4KTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBncm91cFZpc2libGUgPSAhdGhpcy5zaG93IHx8IHRoaXMuc2hvdyhyb3csIGluZGV4KTtcblxuICAgICAgdGhpcy5pc1Nob3duID0gZ3JvdXBWaXNpYmxlICYmIHRoaXMucm93QWN0aW9ucy5zb21lKChhY3Rpb24pID0+IGFjdGlvbi5pc1Nob3duKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdykge1xuICAgICAgdGhpcy5pc1Nob3duID0gdGhpcy5zaG93KHJvdywgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVMaW5rKHJvdykge1xuICAgIGlmICghdGhpcy5pc1Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICBhY3Rpb24udXBkYXRlTGluayhyb3cpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9saW5rRm4pIHtcbiAgICAgIHRoaXMucm91dGVyTGluayA9IHRoaXMuX2xpbmtGbihyb3cpO1xuXG4gICAgICBpZiAodGhpcy5yb3V0ZXJMaW5rICYmICF0aGlzLnJvdXRlckxpbmsudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucm91dGVyTGluay50YXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrRXZlbnQocm93LCBldmVudCwgaW5kZXgsIHJvd0FjdGlvbnNSZWYsIGNsaWNrRm4pIHtcbiAgICAvLyBTdG9wIGV2ZW50IHByb3BhZ2F0aW9uIGZvciBwYXJlbnRcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIENsb3NlIG1lbnVcbiAgICBpZiAocm93QWN0aW9uc1JlZikge1xuICAgICAgcm93QWN0aW9uc1JlZi5jbG9zZU1lbnUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tGbikge1xuICAgICAgLy8gRmlyZSBwYXNzZWQgY2FsbGJhY2tcbiAgICAgIHJldHVybiBjbGlja0ZuKHJvdywgZXZlbnQsIGluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBUXZELE1BQU0sT0FBTyxTQUFTO0lBRWIsSUFBSSxDQUFrQztJQUN0QyxJQUFJLENBQVU7SUFDZCxNQUFNLENBQXNDO0lBQzVDLFNBQVMsQ0FBUztJQUNsQixJQUFJLENBQWE7SUFDakIsSUFBSSxDQUFXO0lBQ2YsT0FBTyxDQUFVO0lBQ2pCLFVBQVUsQ0FBYztJQUN4QixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsVUFBVSxDQUFzQjtJQUNoQyxVQUFVLEdBQWEsRUFBRSxDQUFDO0lBQzFCLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDZixLQUFLLENBQVc7SUFFaEIsVUFBVSxDQUFzQjtJQUUvQixPQUFPLENBQXdCO0lBQ3RCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFM0MsWUFBWSxTQUFjLEVBQUU7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBUTtRQUN4QixPQUFPLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdEUsQ0FBQztJQUVNLEtBQUss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UUFFeEIsYUFBYTtRQUNiLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osdUJBQXVCO1lBQ3ZCLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9hY3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7XG4gIEZzTGlzdFJvd0FjdGlvbkZpbGUsXG4gIEZzTGlzdFJvd0FjdGlvbkxpbmssXG4gIEZzTGlzdFJvd0FjdGlvbkxpbmtGbixcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cblxuZXhwb3J0IGNsYXNzIFJvd0FjdGlvbiB7XG5cbiAgcHVibGljIGljb246IHN0cmluZyB8ICgocm93OiBhbnkpID0+IHN0cmluZyk7XG4gIHB1YmxpYyBtZW51OiBib29sZWFuO1xuICBwdWJsaWMgcmVtb3ZlOiB7IHRpdGxlOiBzdHJpbmc7IHRlbXBsYXRlOiBzdHJpbmcgfTtcbiAgcHVibGljIGNsYXNzTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgdHlwZTogQWN0aW9uVHlwZTtcbiAgcHVibGljIHNob3c6IEZ1bmN0aW9uO1xuICBwdWJsaWMgcmVzdG9yZTogYm9vbGVhbjtcbiAgcHVibGljIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdO1xuICBwdWJsaWMgbGFiZWwgPSAnJztcbiAgcHVibGljIHJvdXRlckxpbms6IEZzTGlzdFJvd0FjdGlvbkxpbms7XG4gIHB1YmxpYyBjbGFzc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgaXNTaG93biA9IHRydWU7XG4gIHB1YmxpYyBjbGljazogRnVuY3Rpb247XG5cbiAgcHVibGljIGZpbGVDb25maWc6IEZzTGlzdFJvd0FjdGlvbkZpbGU7XG5cbiAgcHJpdmF0ZSBfbGlua0ZuOiBGc0xpc3RSb3dBY3Rpb25MaW5rRm47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IGFueSA9IHt9KSB7XG4gICAgdGhpcy5faW5pdChjb25maWcpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5yb3dBY3Rpb25zKSkge1xuICAgICAgdGhpcy5faXNHcm91cCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc0dyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0dyb3VwO1xuICB9XG5cbiAgcHVibGljIGdldFJvd0ljb24ocm93OiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuaWNvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuaWNvbihyb3cpIDogdGhpcy5pY29uO1xuICB9XG5cbiAgcHVibGljIF9pbml0KHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmljb24gPSB2YWx1ZS5pY29uO1xuICAgIHRoaXMubWVudSA9IHZhbHVlLm1lbnUgPz8gdHJ1ZTtcbiAgICB0aGlzLnJlbW92ZSA9IHZhbHVlLnJlbW92ZTtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IHZhbHVlLmNsYXNzTmFtZTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLm1lbnUgJiYgdGhpcy5pY29uICYmICF0aGlzLmxhYmVsICYmICF2YWx1ZS50eXBlID8gQWN0aW9uVHlwZS5JY29uIDogdmFsdWUudHlwZSA/PyBBY3Rpb25UeXBlLkJhc2ljO1xuICAgIHRoaXMuc2hvdyA9IHZhbHVlLnNob3c7XG4gICAgdGhpcy5yZXN0b3JlID0gdmFsdWUucmVzdG9yZTtcbiAgICB0aGlzLnJvd0FjdGlvbnMgPSB2YWx1ZS5yb3dBY3Rpb25zXG4gICAgICA/Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG5cbiAgICAvLyBSZS1hc3NpZ24gY2xpY2sgZnVuY3Rpb25cbiAgICBjb25zdCBjbGlja0ZuID0gdmFsdWUuY2xpY2s7XG4gICAgdGhpcy5jbGljayA9IChyb3csIGV2ZW50LCBpbmRleCwgcm93QWN0aW9uc1JlZiA9IG51bGwpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9jbGlja0V2ZW50KHJvdywgZXZlbnQsIGluZGV4LCByb3dBY3Rpb25zUmVmLCBjbGlja0ZuKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fbGlua0ZuID0gdmFsdWUubGluaztcblxuICAgIGlmICh2YWx1ZS5maWxlKSB7XG4gICAgICB0aGlzLmZpbGVDb25maWcgPSB7IC4uLnZhbHVlLmZpbGUgfTtcblxuICAgICAgaWYgKHRoaXMuZmlsZUNvbmZpZy5zZWxlY3QpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0Rm4gPSB0aGlzLmZpbGVDb25maWcuc2VsZWN0O1xuICAgICAgICB0aGlzLmZpbGVDb25maWcuc2VsZWN0ID0gKHNlbGVjdGlvbiwgcm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgIHNlbGVjdEZuKHNlbGVjdGlvbiwgcm93LCBpbmRleCk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbCA9IHZhbHVlLmxhYmVsO1xuXG4gICAgaWYgKHRoaXMuY2xhc3NOYW1lKSB7XG4gICAgICB0aGlzLmNsYXNzQXJyYXkgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdCgnICcpLnJlZHVjZSgoYWNjLCBlbGVtKSA9PiB7XG4gICAgICAgIGFjYy5wdXNoKGVsZW0pO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoZWNrU2hvd1N0YXR1cyhyb3csIGluZGV4KSB7XG4gICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICBhY3Rpb24uY2hlY2tTaG93U3RhdHVzKHJvdywgaW5kZXgpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdyb3VwVmlzaWJsZSA9ICF0aGlzLnNob3cgfHwgdGhpcy5zaG93KHJvdywgaW5kZXgpO1xuXG4gICAgICB0aGlzLmlzU2hvd24gPSBncm91cFZpc2libGUgJiYgdGhpcy5yb3dBY3Rpb25zLnNvbWUoKGFjdGlvbikgPT4gYWN0aW9uLmlzU2hvd24pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG93KSB7XG4gICAgICB0aGlzLmlzU2hvd24gPSB0aGlzLnNob3cocm93LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUxpbmsocm93KSB7XG4gICAgaWYgKCF0aGlzLmlzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xpbmtGbikge1xuICAgICAgdGhpcy5yb3V0ZXJMaW5rID0gdGhpcy5fbGlua0ZuKHJvdyk7XG5cbiAgICAgIGlmICh0aGlzLnJvdXRlckxpbmsgJiYgIXRoaXMucm91dGVyTGluay50YXJnZXQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJMaW5rLnRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xpY2tFdmVudChyb3csIGV2ZW50LCBpbmRleCwgcm93QWN0aW9uc1JlZiwgY2xpY2tGbikge1xuICAgIC8vIFN0b3AgZXZlbnQgcHJvcGFnYXRpb24gZm9yIHBhcmVudFxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gQ2xvc2UgbWVudVxuICAgIGlmIChyb3dBY3Rpb25zUmVmKSB7XG4gICAgICByb3dBY3Rpb25zUmVmLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIGlmIChjbGlja0ZuKSB7XG4gICAgICAvLyBGaXJlIHBhc3NlZCBjYWxsYmFja1xuICAgICAgcmV0dXJuIGNsaWNrRm4ocm93LCBldmVudCwgaW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1281,6 +1281,9 @@ class RowAction {
1281
1281
  get isGroup() {
1282
1282
  return this._isGroup;
1283
1283
  }
1284
+ getRowIcon(row) {
1285
+ return typeof this.icon === 'function' ? this.icon(row) : this.icon;
1286
+ }
1284
1287
  _init(value) {
1285
1288
  this.icon = value.icon;
1286
1289
  this.menu = value.menu ?? true;
@@ -1358,15 +1361,22 @@ class RowAction {
1358
1361
 
1359
1362
  class FsRowInlineActionComponent {
1360
1363
  actionType;
1361
- action;
1364
+ rowAction;
1365
+ row;
1362
1366
  clicked = new EventEmitter();
1363
1367
  fileSelect = new EventEmitter();
1368
+ icon;
1369
+ ngOnChanges(changes) {
1370
+ if (changes.row) {
1371
+ this.icon = this.rowAction.getRowIcon(this.row.data);
1372
+ }
1373
+ }
1364
1374
  actionClick(event) {
1365
1375
  this.clicked.emit(event);
1366
1376
  }
1367
1377
  ngOnInit() {
1368
- this.actionType = this.action.type;
1369
- if (!this.action.label && this.action.icon) {
1378
+ this.actionType = this.rowAction.type;
1379
+ if (!this.rowAction.label && this.rowAction.icon) {
1370
1380
  this.actionType = ActionType.Icon;
1371
1381
  }
1372
1382
  }
@@ -1374,12 +1384,14 @@ class FsRowInlineActionComponent {
1374
1384
  this.fileSelect.emit(event);
1375
1385
  }
1376
1386
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1377
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: { action: "action" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, ngImport: i0, template: "<ng-container\n *ngIf=\"action.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1387
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: { rowAction: "rowAction", row: "row" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, usesOnChanges: true, ngImport: i0, template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1378
1388
  }
1379
1389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
1380
1390
  type: Component,
1381
- args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngIf=\"action.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"] }]
1382
- }], propDecorators: { action: [{
1391
+ args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"] }]
1392
+ }], propDecorators: { rowAction: [{
1393
+ type: Input
1394
+ }], row: [{
1383
1395
  type: Input
1384
1396
  }], clicked: [{
1385
1397
  type: Output
@@ -1405,14 +1417,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
1405
1417
  class FsRowMenuActionComponent {
1406
1418
  _menu;
1407
1419
  row;
1408
- icon;
1409
- label;
1420
+ rowAction;
1410
1421
  file;
1411
1422
  fileSelect = new EventEmitter();
1412
1423
  fileError = new EventEmitter();
1424
+ icon;
1425
+ label;
1413
1426
  constructor(_menu) {
1414
1427
  this._menu = _menu;
1415
1428
  }
1429
+ ngOnChanges(changes) {
1430
+ if (changes.row) {
1431
+ this.icon = this.rowAction.getRowIcon(this.row.data);
1432
+ }
1433
+ }
1416
1434
  selectFile(event) {
1417
1435
  this.fileSelect.emit(event);
1418
1436
  this.closeMenu();
@@ -1424,17 +1442,18 @@ class FsRowMenuActionComponent {
1424
1442
  closeMenu() {
1425
1443
  this._menu.closeMenu();
1426
1444
  }
1445
+ ngOnInit() {
1446
+ this.label = this.rowAction.label;
1447
+ }
1427
1448
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, deps: [{ token: i3$2.FsMenuComponent }], target: i0.ɵɵFactoryTarget.Component });
1428
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { row: "row", icon: "icon", label: "label", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, ngImport: i0, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1449
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { row: "row", rowAction: "rowAction", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n</ng-container>\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n </fs-file>\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1429
1450
  }
1430
1451
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
1431
1452
  type: Component,
1432
- args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n" }]
1453
+ args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n</ng-container>\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n </fs-file>\n</ng-template>" }]
1433
1454
  }], ctorParameters: () => [{ type: i3$2.FsMenuComponent }], propDecorators: { row: [{
1434
1455
  type: Input
1435
- }], icon: [{
1436
- type: Input
1437
- }], label: [{
1456
+ }], rowAction: [{
1438
1457
  type: Input
1439
1458
  }], file: [{
1440
1459
  type: Input
@@ -1509,11 +1528,11 @@ class FsRowActionsComponent {
1509
1528
  }
1510
1529
  }
1511
1530
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
1512
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1531
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">\n {{ restoreAction.icon }}\n </mat-icon>\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n </ng-container>\n</fs-menu>", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["rowAction", "row"], outputs: ["clicked", "fileSelect"] }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "rowAction", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1513
1532
  }
1514
1533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, decorators: [{
1515
1534
  type: Component,
1516
- args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"] }]
1535
+ args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">\n {{ restoreAction.icon }}\n </mat-icon>\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n </ng-container>\n</fs-menu>", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"] }]
1517
1536
  }], ctorParameters: () => [{ type: i1$1.FsPrompt }], propDecorators: { row: [{
1518
1537
  type: Input
1519
1538
  }], index: [{
@@ -5372,11 +5391,11 @@ class FsStatusComponent {
5372
5391
  this.paging.setLimit(limit);
5373
5392
  }
5374
5393
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5375
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n Showing\n <a [fsMenuTriggerFor]=\"limitsMenu\">\n {{ paging.statusLabel }}\n </a>\n of\n @if (paging.hasManyStrategy) {\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of records'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n {{ paging.records | number:'1.0':'en-US' }} results\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!paging.enabled\"\n #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3$2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
5394
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3$2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
5376
5395
  }
5377
5396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, decorators: [{
5378
5397
  type: Component,
5379
- args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n Showing\n <a [fsMenuTriggerFor]=\"limitsMenu\">\n {{ paging.statusLabel }}\n </a>\n of\n @if (paging.hasManyStrategy) {\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of records'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n {{ paging.records | number:'1.0':'en-US' }} results\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!paging.enabled\"\n #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"] }]
5398
+ args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"] }]
5380
5399
  }], propDecorators: { list: [{
5381
5400
  type: Input
5382
5401
  }], rows: [{