ng-fusion-ui 0.2.7 → 0.2.8

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.
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, model, signal, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, model, signal, } from '@angular/core';
2
2
  import { filter } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../services/data-sorting.service";
@@ -9,33 +9,40 @@ export class BodyRowCellComponent {
9
9
  this.sortService = sortService;
10
10
  this.editRowService = editRowService;
11
11
  this.elementRef = elementRef;
12
+ this.cellValue = input('');
13
+ this.editKey = input('');
14
+ this.cellDef = signal('');
12
15
  this.editCellValue = model();
13
16
  this.isEditing = signal(false);
14
- }
15
- ngOnInit() {
16
- const index = this.getCellIndex();
17
- this.cellDef = this.sortService.getCellDef(index) || '';
17
+ this.hasCellValue = signal(false);
18
18
  }
19
19
  ngOnChanges(changes) {
20
- const index = this.getRowIndex();
20
+ const rowIndex = this.getRowIndex();
21
+ if (changes['cellValue']) {
22
+ this.hasCellValue.set(true);
23
+ }
21
24
  if (changes['editKey']) {
22
25
  this.validateKey();
23
- this.subscription = this.editRowService.editState$
26
+ this.subscription = this.editRowService.editIndex$
24
27
  .pipe(filter(() => !!this.editKey))
25
- .subscribe((state) => {
26
- this.editCellValue.set(this.cellValue);
27
- this.isEditing.set(state === index);
28
+ .subscribe((index) => {
29
+ this.editCellValue.set(this.cellValue());
30
+ this.isEditing.set(index === rowIndex);
28
31
  });
29
32
  }
30
33
  }
34
+ ngOnInit() {
35
+ const index = this.getCellIndex();
36
+ this.cellDef.set(this.sortService.getCellDef(index) || '');
37
+ }
31
38
  onInputChange(value) {
32
39
  this.editCellValue.set(value);
33
40
  if (this.isEditing()) {
34
- this.editRowService.updateEditValues(this.editKey, value);
41
+ this.editRowService.updateEditValues(this.editKey(), value);
35
42
  }
36
43
  }
37
44
  validateKey() {
38
- if (!this.sortService.cellKeys().includes(this.editKey)) {
45
+ if (!this.sortService.cellKeys().includes(this.editKey())) {
39
46
  console.warn(`Invalid editKey '${this.editKey}' provided.`);
40
47
  }
41
48
  }
@@ -57,14 +64,10 @@ export class BodyRowCellComponent {
57
64
  }
58
65
  }
59
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BodyRowCellComponent, deps: [{ token: i1.DataSortingService }, { token: i2.EditRowService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: BodyRowCellComponent, selector: "fu-body-row-cell", inputs: { cellValue: { classPropertyName: "cellValue", publicName: "cellValue", isSignal: false, isRequired: false, transformFunction: null }, editKey: { classPropertyName: "editKey", publicName: "editKey", isSignal: false, isRequired: false, transformFunction: null }, editCellValue: { classPropertyName: "editCellValue", publicName: "editCellValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editCellValue: "editCellValueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-body-row-cell\" [attr.data-edit]=\"isEditing()\">\r\n <span>{{ cellDef }}</span>\r\n\r\n @if (cellValue) { @if(isEditing()){\r\n <input\r\n class=\"fu-edit-input\"\r\n [(ngModel)]=\"editCellValue\"\r\n (ngModelChange)=\"onInputChange($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }@else {\r\n <span>{{ cellValue }}</span>\r\n } } @else {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: [".fu-body-row-cell{padding:12px 16px}.fu-body-row-cell[data-edit=true]{padding:8px 16px}.fu-body-row-cell>span:nth-child(1){display:none}@media (max-width: 900px){.fu-body-row-cell>span:nth-child(1){display:inline;font-weight:700}}.fu-body-row-cell>span:nth-child(2){color:var(--fu-grid-cell-color);word-break:break-all}@media (max-width: 900px){.fu-body-row-cell{display:grid;grid-template-columns:repeat(2,1fr);padding:8px 16px}}@media (max-width: 600px){.fu-body-row-cell{grid-template-columns:35% 1fr;padding:6px 16px}}.fu-edit-input{background-color:transparent;color:var(--fu-grid-cell-edit-input);width:100%;padding:4px;border:none;outline:1px solid gray;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: BodyRowCellComponent, selector: "fu-body-row-cell", inputs: { cellValue: { classPropertyName: "cellValue", publicName: "cellValue", isSignal: true, isRequired: false, transformFunction: null }, editKey: { classPropertyName: "editKey", publicName: "editKey", isSignal: true, isRequired: false, transformFunction: null }, editCellValue: { classPropertyName: "editCellValue", publicName: "editCellValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editCellValue: "editCellValueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-body-row-cell\" [attr.data-edit]=\"isEditing()\">\r\n <span>{{ cellDef() }}</span>\r\n\r\n @if (hasCellValue()) { @if(isEditing()){\r\n <input\r\n class=\"fu-edit-input\"\r\n [(ngModel)]=\"editCellValue\"\r\n (ngModelChange)=\"onInputChange($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }@else {\r\n <span>{{ cellValue() }}</span>\r\n } }\r\n <!-- WRAP -->\r\n @if (!hasCellValue()) {\r\n <span>\r\n <ng-content />\r\n </span>\r\n }\r\n</div>\r\n", styles: [".fu-body-row-cell{padding:12px 16px}.fu-body-row-cell[data-edit=true]{padding:8px 16px}.fu-body-row-cell>span:nth-child(1){display:none}@media (max-width: 900px){.fu-body-row-cell>span:nth-child(1){display:inline;font-weight:700}}.fu-body-row-cell>span:nth-child(2){color:var(--fu-grid-cell-color);word-break:break-all}@media (max-width: 900px){.fu-body-row-cell{display:grid;grid-template-columns:repeat(2,1fr);padding:8px 16px}}@media (max-width: 600px){.fu-body-row-cell{grid-template-columns:35% 1fr;padding:6px 16px}}.fu-edit-input{background-color:transparent;color:var(--fu-grid-cell-edit-input);width:100%;padding:4px;border:none;outline:1px solid gray;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
61
68
  }
62
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BodyRowCellComponent, decorators: [{
63
70
  type: Component,
64
- args: [{ selector: 'fu-body-row-cell', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-body-row-cell\" [attr.data-edit]=\"isEditing()\">\r\n <span>{{ cellDef }}</span>\r\n\r\n @if (cellValue) { @if(isEditing()){\r\n <input\r\n class=\"fu-edit-input\"\r\n [(ngModel)]=\"editCellValue\"\r\n (ngModelChange)=\"onInputChange($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }@else {\r\n <span>{{ cellValue }}</span>\r\n } } @else {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: [".fu-body-row-cell{padding:12px 16px}.fu-body-row-cell[data-edit=true]{padding:8px 16px}.fu-body-row-cell>span:nth-child(1){display:none}@media (max-width: 900px){.fu-body-row-cell>span:nth-child(1){display:inline;font-weight:700}}.fu-body-row-cell>span:nth-child(2){color:var(--fu-grid-cell-color);word-break:break-all}@media (max-width: 900px){.fu-body-row-cell{display:grid;grid-template-columns:repeat(2,1fr);padding:8px 16px}}@media (max-width: 600px){.fu-body-row-cell{grid-template-columns:35% 1fr;padding:6px 16px}}.fu-edit-input{background-color:transparent;color:var(--fu-grid-cell-edit-input);width:100%;padding:4px;border:none;outline:1px solid gray;border-radius:4px}\n"] }]
65
- }], ctorParameters: () => [{ type: i1.DataSortingService }, { type: i2.EditRowService }, { type: i0.ElementRef }], propDecorators: { cellValue: [{
66
- type: Input
67
- }], editKey: [{
68
- type: Input
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1yb3ctY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mdXNpb24tdWkvc3JjL2xpYi9kYXRhLWdyaWQvY29tcG9uZW50cy9ib2R5LXJvdy1jZWxsL2JvZHktcm93LWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvYm9keS1yb3ctY2VsbC9ib2R5LXJvdy1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFLTCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTNUMsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUNVLFdBQStCLEVBQy9CLGNBQThCLEVBQzlCLFVBQXNCO1FBRnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVJ6QixrQkFBYSxHQUFHLEtBQUssRUFBbUIsQ0FBQztRQUN6QyxjQUFTLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBUXZDLENBQUM7SUFFRyxRQUFRO1FBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRW5CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVO2lCQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2xDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsT0FBTyxhQUFhLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBNEIsQ0FBQztRQUMxRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQTRCLENBQUM7UUFDM0UsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7OEdBbkVVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdpQkN4QmpDLCthQWdCQTs7MkZEUWEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzZJQUdyQixTQUFTO3NCQUF4QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgbW9kZWwsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU29ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLXNvcnRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IEVkaXRSb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdC1yb3cuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z1LWJvZHktcm93LWNlbGwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ib2R5LXJvdy1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYm9keS1yb3ctY2VsbC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJvZHlSb3dDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgcHVibGljIGNlbGxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0S2V5OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjZWxsRGVmOiBzdHJpbmc7XHJcbiAgcHVibGljIGVkaXRDZWxsVmFsdWUgPSBtb2RlbDxzdHJpbmcgfCBudW1iZXI+KCk7XHJcbiAgcHVibGljIGlzRWRpdGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzb3J0U2VydmljZTogRGF0YVNvcnRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlZGl0Um93U2VydmljZTogRWRpdFJvd1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDZWxsSW5kZXgoKTtcclxuICAgIHRoaXMuY2VsbERlZiA9IHRoaXMuc29ydFNlcnZpY2UuZ2V0Q2VsbERlZihpbmRleCkgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFJvd0luZGV4KCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRLZXknXSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlS2V5KCk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZWRpdFJvd1NlcnZpY2UuZWRpdFN0YXRlJFxyXG4gICAgICAgIC5waXBlKGZpbHRlcigoKSA9PiAhIXRoaXMuZWRpdEtleSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcclxuICAgICAgICAgIHRoaXMuZWRpdENlbGxWYWx1ZS5zZXQodGhpcy5jZWxsVmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KHN0YXRlID09PSBpbmRleCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbnB1dENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRDZWxsVmFsdWUuc2V0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XHJcbiAgICAgIHRoaXMuZWRpdFJvd1NlcnZpY2UudXBkYXRlRWRpdFZhbHVlcyh0aGlzLmVkaXRLZXksIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVLZXkoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc29ydFNlcnZpY2UuY2VsbEtleXMoKS5pbmNsdWRlcyh0aGlzLmVkaXRLZXkpKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBlZGl0S2V5ICcke3RoaXMuZWRpdEtleX0nIHByb3ZpZGVkLmApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDZWxsSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pLmluZGV4T2YodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3dJbmRleCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIC0xO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pO1xyXG4gICAgcmV0dXJuIGNoaWxkcmVuLmluZGV4T2YoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZ1LWJvZHktcm93LWNlbGxcIiBbYXR0ci5kYXRhLWVkaXRdPVwiaXNFZGl0aW5nKClcIj5cclxuICA8c3Bhbj57eyBjZWxsRGVmIH19PC9zcGFuPlxyXG5cclxuICBAaWYgKGNlbGxWYWx1ZSkgeyBAaWYoaXNFZGl0aW5nKCkpe1xyXG4gIDxpbnB1dFxyXG4gICAgY2xhc3M9XCJmdS1lZGl0LWlucHV0XCJcclxuICAgIFsobmdNb2RlbCldPVwiZWRpdENlbGxWYWx1ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgLz5cclxuICB9QGVsc2Uge1xyXG4gIDxzcGFuPnt7IGNlbGxWYWx1ZSB9fTwvc3Bhbj5cclxuICB9IH0gQGVsc2Uge1xyXG4gIDxuZy1jb250ZW50IC8+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
71
+ args: [{ selector: 'fu-body-row-cell', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-body-row-cell\" [attr.data-edit]=\"isEditing()\">\r\n <span>{{ cellDef() }}</span>\r\n\r\n @if (hasCellValue()) { @if(isEditing()){\r\n <input\r\n class=\"fu-edit-input\"\r\n [(ngModel)]=\"editCellValue\"\r\n (ngModelChange)=\"onInputChange($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n }@else {\r\n <span>{{ cellValue() }}</span>\r\n } }\r\n <!-- WRAP -->\r\n @if (!hasCellValue()) {\r\n <span>\r\n <ng-content />\r\n </span>\r\n }\r\n</div>\r\n", styles: [".fu-body-row-cell{padding:12px 16px}.fu-body-row-cell[data-edit=true]{padding:8px 16px}.fu-body-row-cell>span:nth-child(1){display:none}@media (max-width: 900px){.fu-body-row-cell>span:nth-child(1){display:inline;font-weight:700}}.fu-body-row-cell>span:nth-child(2){color:var(--fu-grid-cell-color);word-break:break-all}@media (max-width: 900px){.fu-body-row-cell{display:grid;grid-template-columns:repeat(2,1fr);padding:8px 16px}}@media (max-width: 600px){.fu-body-row-cell{grid-template-columns:35% 1fr;padding:6px 16px}}.fu-edit-input{background-color:transparent;color:var(--fu-grid-cell-edit-input);width:100%;padding:4px;border:none;outline:1px solid gray;border-radius:4px}\n"] }]
72
+ }], ctorParameters: () => [{ type: i1.DataSortingService }, { type: i2.EditRowService }, { type: i0.ElementRef }] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1yb3ctY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mdXNpb24tdWkvc3JjL2xpYi9kYXRhLWdyaWQvY29tcG9uZW50cy9ib2R5LXJvdy1jZWxsL2JvZHktcm93LWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvYm9keS1yb3ctY2VsbC9ib2R5LXJvdy1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQU1ULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTNUMsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQixZQUNVLFdBQStCLEVBQy9CLGNBQThCLEVBQzlCLFVBQXNCO1FBRnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWJ6QixjQUFTLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN2QyxZQUFPLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTVCLFlBQU8sR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxLQUFLLEVBQW1CLENBQUM7UUFDekMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQVExQyxDQUFDO0lBRUcsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVTtpQkFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQTRCLENBQUM7UUFDMUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUE0QixDQUFDO1FBQzNFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDOzhHQXhFVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw4aEJDeEJqQywyZkFvQkE7OzJGRElhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbnB1dCxcclxuICBtb2RlbCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTb3J0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEtc29ydGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWRpdFJvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0LXJvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnUtYm9keS1yb3ctY2VsbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JvZHktcm93LWNlbGwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9ib2R5LXJvdy1jZWxsLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9keVJvd0NlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwdWJsaWMgY2VsbFZhbHVlID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyPignJyk7XHJcbiAgcHVibGljIGVkaXRLZXkgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgcHVibGljIGNlbGxEZWYgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcbiAgcHVibGljIGVkaXRDZWxsVmFsdWUgPSBtb2RlbDxzdHJpbmcgfCBudW1iZXI+KCk7XHJcbiAgcHVibGljIGlzRWRpdGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIGhhc0NlbGxWYWx1ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzb3J0U2VydmljZTogRGF0YVNvcnRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlZGl0Um93U2VydmljZTogRWRpdFJvd1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ2V0Um93SW5kZXgoKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2VsbFZhbHVlJ10pIHtcclxuICAgICAgdGhpcy5oYXNDZWxsVmFsdWUuc2V0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydlZGl0S2V5J10pIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUtleSgpO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmVkaXRSb3dTZXJ2aWNlLmVkaXRJbmRleCRcclxuICAgICAgICAucGlwZShmaWx0ZXIoKCkgPT4gISF0aGlzLmVkaXRLZXkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsVmFsdWUuc2V0KHRoaXMuY2VsbFZhbHVlKCkpO1xyXG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGluZGV4ID09PSByb3dJbmRleCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0Q2VsbEluZGV4KCk7XHJcbiAgICB0aGlzLmNlbGxEZWYuc2V0KHRoaXMuc29ydFNlcnZpY2UuZ2V0Q2VsbERlZihpbmRleCkgfHwgJycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSW5wdXRDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0Q2VsbFZhbHVlLnNldCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5pc0VkaXRpbmcoKSkge1xyXG4gICAgICB0aGlzLmVkaXRSb3dTZXJ2aWNlLnVwZGF0ZUVkaXRWYWx1ZXModGhpcy5lZGl0S2V5KCksIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVLZXkoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc29ydFNlcnZpY2UuY2VsbEtleXMoKS5pbmNsdWRlcyh0aGlzLmVkaXRLZXkoKSkpIHtcclxuICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGVkaXRLZXkgJyR7dGhpcy5lZGl0S2V5fScgcHJvdmlkZWQuYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENlbGxJbmRleCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbikuaW5kZXhPZih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJvd0luZGV4KCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgIGlmICghcGFyZW50KSByZXR1cm4gLTE7XHJcblxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbik7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnUtYm9keS1yb3ctY2VsbFwiIFthdHRyLmRhdGEtZWRpdF09XCJpc0VkaXRpbmcoKVwiPlxyXG4gIDxzcGFuPnt7IGNlbGxEZWYoKSB9fTwvc3Bhbj5cclxuXHJcbiAgQGlmIChoYXNDZWxsVmFsdWUoKSkgeyBAaWYoaXNFZGl0aW5nKCkpe1xyXG4gIDxpbnB1dFxyXG4gICAgY2xhc3M9XCJmdS1lZGl0LWlucHV0XCJcclxuICAgIFsobmdNb2RlbCldPVwiZWRpdENlbGxWYWx1ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgLz5cclxuICB9QGVsc2Uge1xyXG4gIDxzcGFuPnt7IGNlbGxWYWx1ZSgpIH19PC9zcGFuPlxyXG4gIH0gfVxyXG4gIDwhLS0gV1JBUCAtLT5cclxuICBAaWYgKCFoYXNDZWxsVmFsdWUoKSkge1xyXG4gIDxzcGFuPlxyXG4gICAgPG5nLWNvbnRlbnQgLz5cclxuICA8L3NwYW4+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, effect, signal, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, effect, input, signal, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../services/data-sorting.service";
4
4
  import * as i2 from "../../../icons/icon.component";
@@ -7,9 +7,11 @@ export class HeadRowCellComponent {
7
7
  constructor(sortService, elementRef) {
8
8
  this.sortService = sortService;
9
9
  this.elementRef = elementRef;
10
+ this.cellDef = input.required();
11
+ this.sortKey = input();
10
12
  this.direction = signal('');
11
13
  effect(() => {
12
- if (this.sortKey) {
14
+ if (this.sortKey()) {
13
15
  this.direction.set(this.sortService.sortDirection());
14
16
  this.sorting = this.sortService.sortKey();
15
17
  this.validateKey();
@@ -18,14 +20,14 @@ export class HeadRowCellComponent {
18
20
  }
19
21
  ngOnInit() {
20
22
  const index = this.getIndex();
21
- this.sortService.setCellDef(index, this.cellDef);
23
+ this.sortService.setCellDef(index, this.cellDef());
22
24
  }
23
25
  onSort() {
24
- this.sortService.setSortKey(this.sortKey);
26
+ this.sortService.setSortKey(this.sortKey());
25
27
  }
26
28
  validateKey() {
27
29
  if (this.sortService.cellKeys().length > 0) {
28
- if (!this.sortService.cellKeys().includes(this.sortKey)) {
30
+ if (!this.sortService.cellKeys().includes(this.sortKey())) {
29
31
  console.warn(`Invalid sortKey '${this.sortKey}' provided.`);
30
32
  }
31
33
  }
@@ -35,15 +37,10 @@ export class HeadRowCellComponent {
35
37
  return Array.from(parent.children).indexOf(this.elementRef.nativeElement);
36
38
  }
37
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HeadRowCellComponent, deps: [{ token: i1.DataSortingService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: HeadRowCellComponent, selector: "fu-head-row-cell", inputs: { cellDef: "cellDef", sortKey: "sortKey" }, ngImport: i0, template: "<div class=\"fu-head-row-cell\" [sortColumn]=\"sortKey\" (click)=\"onSort()\">\r\n <span>{{ cellDef }}</span>\r\n @if (sortKey) {\r\n <!-- wrap -->\r\n @if (sortKey === sorting) {\r\n <button>\r\n @if(direction() === 'asc') {\r\n <fu-icon iconName=\"sortAsc\" />\r\n } @if (direction() === 'desc') {\r\n <fu-icon iconName=\"sortDesc\" />\r\n }\r\n </button>\r\n } @else {\r\n <button><fu-icon iconName=\"sort\" /></button>\r\n } }\r\n</div>\r\n", styles: [".fu-head-row-cell{padding:16px;font-weight:700;display:flex}.fu-head-row-cell>span{margin-right:4px}.fu-head-row-cell>button{cursor:pointer;background-color:transparent;color:var(--fu-grid-text-color);font-weight:700;border:none}@media (max-width: 900px){.fu-head-row-cell{display:none}.fu-head-row-cell[data-sorted]{display:flex}}.fu-head-row-cell[data-sorted]:hover{cursor:pointer;background-color:var(--fu-grid-hover-color)}.fu-head-row-cell.sort-asc,.fu-head-row-cell.sort-desc{background-color:var(--fu-grid-fg-color)}\n"], dependencies: [{ kind: "component", type: i2.IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.SortColumnDirective, selector: "[sortColumn]", inputs: ["sortColumn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: HeadRowCellComponent, selector: "fu-head-row-cell", inputs: { cellDef: { classPropertyName: "cellDef", publicName: "cellDef", isSignal: true, isRequired: true, transformFunction: null }, sortKey: { classPropertyName: "sortKey", publicName: "sortKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"fu-head-row-cell\" [sortColumn]=\"sortKey()\" (click)=\"onSort()\">\r\n <span>{{ cellDef() }}</span>\r\n @if (sortKey()) {\r\n <!-- wrap -->\r\n @if (sortKey() === sorting) {\r\n <button>\r\n @if(direction() === 'asc') {\r\n <fu-icon iconName=\"sortAsc\" />\r\n } @if (direction() === 'desc') {\r\n <fu-icon iconName=\"sortDesc\" />\r\n }\r\n </button>\r\n } @else {\r\n <button><fu-icon iconName=\"sort\" /></button>\r\n } }\r\n</div>\r\n", styles: [".fu-head-row-cell{padding:16px;font-weight:700;display:flex}.fu-head-row-cell>span{margin-right:4px}.fu-head-row-cell>button{cursor:pointer;background-color:transparent;color:var(--fu-grid-text-color);font-weight:700;border:none}@media (max-width: 900px){.fu-head-row-cell{display:none}.fu-head-row-cell[data-sorted]{display:flex}}.fu-head-row-cell[data-sorted]:hover{cursor:pointer;background-color:var(--fu-grid-hover-color)}.fu-head-row-cell.sort-asc,.fu-head-row-cell.sort-desc{background-color:var(--fu-grid-fg-color)}\n"], dependencies: [{ kind: "component", type: i2.IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.SortColumnDirective, selector: "[sortColumn]", inputs: ["sortColumn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
41
  }
40
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HeadRowCellComponent, decorators: [{
41
43
  type: Component,
42
- args: [{ selector: 'fu-head-row-cell', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-head-row-cell\" [sortColumn]=\"sortKey\" (click)=\"onSort()\">\r\n <span>{{ cellDef }}</span>\r\n @if (sortKey) {\r\n <!-- wrap -->\r\n @if (sortKey === sorting) {\r\n <button>\r\n @if(direction() === 'asc') {\r\n <fu-icon iconName=\"sortAsc\" />\r\n } @if (direction() === 'desc') {\r\n <fu-icon iconName=\"sortDesc\" />\r\n }\r\n </button>\r\n } @else {\r\n <button><fu-icon iconName=\"sort\" /></button>\r\n } }\r\n</div>\r\n", styles: [".fu-head-row-cell{padding:16px;font-weight:700;display:flex}.fu-head-row-cell>span{margin-right:4px}.fu-head-row-cell>button{cursor:pointer;background-color:transparent;color:var(--fu-grid-text-color);font-weight:700;border:none}@media (max-width: 900px){.fu-head-row-cell{display:none}.fu-head-row-cell[data-sorted]{display:flex}}.fu-head-row-cell[data-sorted]:hover{cursor:pointer;background-color:var(--fu-grid-hover-color)}.fu-head-row-cell.sort-asc,.fu-head-row-cell.sort-desc{background-color:var(--fu-grid-fg-color)}\n"] }]
43
- }], ctorParameters: () => [{ type: i1.DataSortingService }, { type: i0.ElementRef }], propDecorators: { cellDef: [{
44
- type: Input,
45
- args: [{ required: true }]
46
- }], sortKey: [{
47
- type: Input
48
- }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1yb3ctY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mdXNpb24tdWkvc3JjL2xpYi9kYXRhLWdyaWQvY29tcG9uZW50cy9oZWFkLXJvdy1jZWxsL2hlYWQtcm93LWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvaGVhZC1yb3ctY2VsbC9oZWFkLXJvdy1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFFTCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVdkIsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQixZQUNVLFdBQStCLEVBQy9CLFVBQXNCO1FBRHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBTHpCLGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFPcEMsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFMUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRO1FBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxPQUFPLGFBQWEsQ0FBQyxDQUFDO1lBQzlELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDM0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQTVDVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw0R0NuQmpDLHNkQWdCQTs7MkZER2Esb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO2dIQUdILE9BQU87c0JBQXhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNULE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBlZmZlY3QsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU29ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLXNvcnRpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z1LWhlYWQtcm93LWNlbGwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkLXJvdy1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZC1yb3ctY2VsbC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRSb3dDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgY2VsbERlZjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0S2V5OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBkaXJlY3Rpb24gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcbiAgcHVibGljIHNvcnRpbmc6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNvcnRTZXJ2aWNlOiBEYXRhU29ydGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNvcnRLZXkpIHtcclxuICAgICAgICAgIHRoaXMuZGlyZWN0aW9uLnNldCh0aGlzLnNvcnRTZXJ2aWNlLnNvcnREaXJlY3Rpb24oKSk7XHJcbiAgICAgICAgICB0aGlzLnNvcnRpbmcgPSB0aGlzLnNvcnRTZXJ2aWNlLnNvcnRLZXkoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlS2V5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoKTtcclxuICAgIHRoaXMuc29ydFNlcnZpY2Uuc2V0Q2VsbERlZihpbmRleCwgdGhpcy5jZWxsRGVmKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNvcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRTZXJ2aWNlLnNldFNvcnRLZXkodGhpcy5zb3J0S2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVLZXkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0U2VydmljZS5jZWxsS2V5cygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCF0aGlzLnNvcnRTZXJ2aWNlLmNlbGxLZXlzKCkuaW5jbHVkZXModGhpcy5zb3J0S2V5KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBzb3J0S2V5ICcke3RoaXMuc29ydEtleX0nIHByb3ZpZGVkLmApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluZGV4KCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGFyZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZ1LWhlYWQtcm93LWNlbGxcIiBbc29ydENvbHVtbl09XCJzb3J0S2V5XCIgKGNsaWNrKT1cIm9uU29ydCgpXCI+XHJcbiAgPHNwYW4+e3sgY2VsbERlZiB9fTwvc3Bhbj5cclxuICBAaWYgKHNvcnRLZXkpIHtcclxuICA8IS0tIHdyYXAgLS0+XHJcbiAgQGlmIChzb3J0S2V5ID09PSBzb3J0aW5nKSB7XHJcbiAgPGJ1dHRvbj5cclxuICAgIEBpZihkaXJlY3Rpb24oKSA9PT0gJ2FzYycpIHtcclxuICAgIDxmdS1pY29uIGljb25OYW1lPVwic29ydEFzY1wiIC8+XHJcbiAgICB9IEBpZiAoZGlyZWN0aW9uKCkgPT09ICdkZXNjJykge1xyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJzb3J0RGVzY1wiIC8+XHJcbiAgICB9XHJcbiAgPC9idXR0b24+XHJcbiAgfSBAZWxzZSB7XHJcbiAgPGJ1dHRvbj48ZnUtaWNvbiBpY29uTmFtZT1cInNvcnRcIiAvPjwvYnV0dG9uPlxyXG4gIH0gfVxyXG48L2Rpdj5cclxuIl19
44
+ args: [{ selector: 'fu-head-row-cell', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-head-row-cell\" [sortColumn]=\"sortKey()\" (click)=\"onSort()\">\r\n <span>{{ cellDef() }}</span>\r\n @if (sortKey()) {\r\n <!-- wrap -->\r\n @if (sortKey() === sorting) {\r\n <button>\r\n @if(direction() === 'asc') {\r\n <fu-icon iconName=\"sortAsc\" />\r\n } @if (direction() === 'desc') {\r\n <fu-icon iconName=\"sortDesc\" />\r\n }\r\n </button>\r\n } @else {\r\n <button><fu-icon iconName=\"sort\" /></button>\r\n } }\r\n</div>\r\n", styles: [".fu-head-row-cell{padding:16px;font-weight:700;display:flex}.fu-head-row-cell>span{margin-right:4px}.fu-head-row-cell>button{cursor:pointer;background-color:transparent;color:var(--fu-grid-text-color);font-weight:700;border:none}@media (max-width: 900px){.fu-head-row-cell{display:none}.fu-head-row-cell[data-sorted]{display:flex}}.fu-head-row-cell[data-sorted]:hover{cursor:pointer;background-color:var(--fu-grid-hover-color)}.fu-head-row-cell.sort-asc,.fu-head-row-cell.sort-desc{background-color:var(--fu-grid-fg-color)}\n"] }]
45
+ }], ctorParameters: () => [{ type: i1.DataSortingService }, { type: i0.ElementRef }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1yb3ctY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mdXNpb24tdWkvc3JjL2xpYi9kYXRhLWdyaWQvY29tcG9uZW50cy9oZWFkLXJvdy1jZWxsL2hlYWQtcm93LWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvaGVhZC1yb3ctY2VsbC9oZWFkLXJvdy1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUdULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVdkIsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQixZQUNVLFdBQStCLEVBQy9CLFVBQXNCO1FBRHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBUnpCLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDbkMsWUFBTyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFPcEMsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUUxQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7OEdBNUNVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtUQ25CakMsOGRBZ0JBOzsyRkRHYSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBlZmZlY3QsXHJcbiAgaW5wdXQsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU29ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLXNvcnRpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z1LWhlYWQtcm93LWNlbGwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkLXJvdy1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZC1yb3ctY2VsbC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRSb3dDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgY2VsbERlZiA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuICBwdWJsaWMgc29ydEtleSA9IGlucHV0PHN0cmluZz4oKTtcclxuXHJcbiAgcHVibGljIGRpcmVjdGlvbiA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICBwdWJsaWMgc29ydGluZzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc29ydFNlcnZpY2U6IERhdGFTb3J0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29ydEtleSgpKSB7XHJcbiAgICAgICAgICB0aGlzLmRpcmVjdGlvbi5zZXQodGhpcy5zb3J0U2VydmljZS5zb3J0RGlyZWN0aW9uKCkpO1xyXG4gICAgICAgICAgdGhpcy5zb3J0aW5nID0gdGhpcy5zb3J0U2VydmljZS5zb3J0S2V5KCk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUtleSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XHJcbiAgICB0aGlzLnNvcnRTZXJ2aWNlLnNldENlbGxEZWYoaW5kZXgsIHRoaXMuY2VsbERlZigpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNvcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRTZXJ2aWNlLnNldFNvcnRLZXkodGhpcy5zb3J0S2V5KCkhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVLZXkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0U2VydmljZS5jZWxsS2V5cygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCF0aGlzLnNvcnRTZXJ2aWNlLmNlbGxLZXlzKCkuaW5jbHVkZXModGhpcy5zb3J0S2V5KCkhKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBzb3J0S2V5ICcke3RoaXMuc29ydEtleX0nIHByb3ZpZGVkLmApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluZGV4KCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGFyZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZ1LWhlYWQtcm93LWNlbGxcIiBbc29ydENvbHVtbl09XCJzb3J0S2V5KClcIiAoY2xpY2spPVwib25Tb3J0KClcIj5cclxuICA8c3Bhbj57eyBjZWxsRGVmKCkgfX08L3NwYW4+XHJcbiAgQGlmIChzb3J0S2V5KCkpIHtcclxuICA8IS0tIHdyYXAgLS0+XHJcbiAgQGlmIChzb3J0S2V5KCkgPT09IHNvcnRpbmcpIHtcclxuICA8YnV0dG9uPlxyXG4gICAgQGlmKGRpcmVjdGlvbigpID09PSAnYXNjJykge1xyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJzb3J0QXNjXCIgLz5cclxuICAgIH0gQGlmIChkaXJlY3Rpb24oKSA9PT0gJ2Rlc2MnKSB7XHJcbiAgICA8ZnUtaWNvbiBpY29uTmFtZT1cInNvcnREZXNjXCIgLz5cclxuICAgIH1cclxuICA8L2J1dHRvbj5cclxuICB9IEBlbHNlIHtcclxuICA8YnV0dG9uPjxmdS1pY29uIGljb25OYW1lPVwic29ydFwiIC8+PC9idXR0b24+XHJcbiAgfSB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, signal, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation, input, signal, } from '@angular/core';
2
2
  import { take } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../services/edit-row.service";
@@ -9,24 +9,26 @@ export class RowActionsComponent {
9
9
  this.renderer = renderer;
10
10
  this.el = el;
11
11
  this.editRowService = editRowService;
12
+ this.editRow = input();
13
+ this.editIndex = input();
12
14
  this.isEditing = signal(false);
13
- this.showDelete = false;
15
+ this.showDelete = signal(false);
14
16
  this.editSave = new EventEmitter();
15
17
  this.delete = new EventEmitter();
16
18
  this.renderer.setAttribute(this.el.nativeElement, 'data-actions', 'true');
17
19
  }
18
- ngOnInit() {
19
- this.showDelete = this.delete.observers.length > 0;
20
- }
21
20
  ngOnChanges(changes) {
22
21
  if (changes['editRow'] && changes['editIndex']) {
23
- this.subscription = this.editRowService.editState$.subscribe((state) => {
24
- this.isEditing.set(state === this.editIndex);
22
+ this.subscription = this.editRowService.editIndex$.subscribe((index) => {
23
+ this.isEditing.set(index === this.editIndex());
25
24
  });
26
25
  }
27
26
  }
27
+ ngOnInit() {
28
+ this.showDelete.set(this.delete.observers.length > 0);
29
+ }
28
30
  setEdit(e) {
29
- this.editRowService.startEditing(this.editIndex);
31
+ this.editRowService.startEditing(this.editIndex());
30
32
  e.stopPropagation();
31
33
  }
32
34
  cancelEdit(e) {
@@ -36,7 +38,7 @@ export class RowActionsComponent {
36
38
  saveEdit(e) {
37
39
  this.editRowService.stopEditing();
38
40
  this.editRowService.editValues$.pipe(take(1)).subscribe((editedValues) => {
39
- const updatedRow = { ...this.editRow, ...editedValues };
41
+ const updatedRow = { ...this.editRow(), ...editedValues };
40
42
  this.editSave.emit(updatedRow);
41
43
  });
42
44
  this.editRowService.resetEditValues();
@@ -52,18 +54,14 @@ export class RowActionsComponent {
52
54
  }
53
55
  }
54
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RowActionsComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.EditRowService }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: RowActionsComponent, selector: "fu-row-actions", inputs: { editRow: "editRow", editIndex: "editIndex" }, outputs: { editSave: "editSave", delete: "delete" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-row-actions\">\r\n @if (editRow && editIndex !== null) { @if(isEditing()){\r\n <button fu-btn-outline iconButton (click)=\"cancelEdit($event)\">\r\n <fu-icon iconName=\"editOff\" />\r\n </button>\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"success\"\r\n (click)=\"saveEdit($event)\"\r\n >\r\n <fu-icon iconName=\"editSave\" />\r\n </button>\r\n }@else {\r\n <button fu-btn-outline iconButton (click)=\"setEdit($event)\">\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n } } @if (!isEditing() && showDelete) {\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"danger\"\r\n (click)=\"emitDelete($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [".fu-row-actions{display:flex;justify-content:center;align-items:center;height:100%;gap:12px}\n"], dependencies: [{ kind: "component", type: i2.IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.OutlinedButtonDirective, selector: "[fu-btn-outline]", inputs: ["variant", "iconButton", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: RowActionsComponent, selector: "fu-row-actions", inputs: { editRow: { classPropertyName: "editRow", publicName: "editRow", isSignal: true, isRequired: false, transformFunction: null }, editIndex: { classPropertyName: "editIndex", publicName: "editIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editSave: "editSave", delete: "delete" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fu-row-actions\">\r\n @if (editRow() && editIndex() !== null) { @if(isEditing()){\r\n <button fu-btn-outline iconButton (click)=\"cancelEdit($event)\">\r\n <fu-icon iconName=\"editOff\" />\r\n </button>\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"success\"\r\n (click)=\"saveEdit($event)\"\r\n >\r\n <fu-icon iconName=\"editSave\" />\r\n </button>\r\n }@else {\r\n <button fu-btn-outline iconButton (click)=\"setEdit($event)\">\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n } } @if (!isEditing() && showDelete()) {\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"danger\"\r\n (click)=\"emitDelete($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [".fu-row-actions{display:flex;justify-content:center;align-items:center;height:100%;gap:12px}\n"], dependencies: [{ kind: "component", type: i2.IconComponent, selector: "fu-icon", inputs: ["iconName", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.OutlinedButtonDirective, selector: "[fu-btn-outline]", inputs: ["variant", "iconButton", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
56
58
  }
57
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RowActionsComponent, decorators: [{
58
60
  type: Component,
59
- args: [{ selector: 'fu-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-row-actions\">\r\n @if (editRow && editIndex !== null) { @if(isEditing()){\r\n <button fu-btn-outline iconButton (click)=\"cancelEdit($event)\">\r\n <fu-icon iconName=\"editOff\" />\r\n </button>\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"success\"\r\n (click)=\"saveEdit($event)\"\r\n >\r\n <fu-icon iconName=\"editSave\" />\r\n </button>\r\n }@else {\r\n <button fu-btn-outline iconButton (click)=\"setEdit($event)\">\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n } } @if (!isEditing() && showDelete) {\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"danger\"\r\n (click)=\"emitDelete($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [".fu-row-actions{display:flex;justify-content:center;align-items:center;height:100%;gap:12px}\n"] }]
60
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.EditRowService }], propDecorators: { editRow: [{
61
- type: Input
62
- }], editIndex: [{
63
- type: Input
64
- }], editSave: [{
61
+ args: [{ selector: 'fu-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fu-row-actions\">\r\n @if (editRow() && editIndex() !== null) { @if(isEditing()){\r\n <button fu-btn-outline iconButton (click)=\"cancelEdit($event)\">\r\n <fu-icon iconName=\"editOff\" />\r\n </button>\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"success\"\r\n (click)=\"saveEdit($event)\"\r\n >\r\n <fu-icon iconName=\"editSave\" />\r\n </button>\r\n }@else {\r\n <button fu-btn-outline iconButton (click)=\"setEdit($event)\">\r\n <fu-icon iconName=\"edit\" />\r\n </button>\r\n } } @if (!isEditing() && showDelete()) {\r\n <button\r\n fu-btn-outline\r\n iconButton\r\n variant=\"danger\"\r\n (click)=\"emitDelete($event)\"\r\n >\r\n <fu-icon iconName=\"trash\" />\r\n </button>\r\n }\r\n <ng-content />\r\n</div>\r\n", styles: [".fu-row-actions{display:flex;justify-content:center;align-items:center;height:100%;gap:12px}\n"] }]
62
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.EditRowService }], propDecorators: { editSave: [{
65
63
  type: Output
66
64
  }], delete: [{
67
65
  type: Output
68
66
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvcm93LWFjdGlvbnMvcm93LWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvcm93LWFjdGlvbnMvcm93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04saUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTMUMsTUFBTSxPQUFPLG1CQUFtQjtJQVk5QixZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCxjQUE4QjtRQUY5QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFYakMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBU2pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxDQUFRO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxDQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQUMsQ0FBUTtRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN2RSxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDO1lBRXhELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxDQUFRO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7OEdBbEVVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdMQ3pCaEMsMHhCQTZCQTs7MkZESmEsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO29JQUdyQixPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1csUUFBUTtzQkFBeEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdFJvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0LXJvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z1LXJvdy1hY3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcm93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9yb3ctYWN0aW9ucy5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvd0FjdGlvbnNDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBwdWJsaWMgZWRpdFJvdzogVDtcclxuICBASW5wdXQoKSBwdWJsaWMgZWRpdEluZGV4OiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBpc0VkaXRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZWRpdFNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgZWRpdFJvd1NlcnZpY2U6IEVkaXRSb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdkYXRhLWFjdGlvbnMnLCAndHJ1ZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RGVsZXRlID0gdGhpcy5kZWxldGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRSb3cnXSAmJiBjaGFuZ2VzWydlZGl0SW5kZXgnXSkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZWRpdFJvd1NlcnZpY2UuZWRpdFN0YXRlJC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KHN0YXRlID09PSB0aGlzLmVkaXRJbmRleCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVkaXQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFJvd1NlcnZpY2Uuc3RhcnRFZGl0aW5nKHRoaXMuZWRpdEluZGV4KTtcclxuXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEVkaXQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFJvd1NlcnZpY2Uuc3RvcEVkaXRpbmcoKTtcclxuXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVFZGl0KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRSb3dTZXJ2aWNlLnN0b3BFZGl0aW5nKCk7XHJcblxyXG4gICAgdGhpcy5lZGl0Um93U2VydmljZS5lZGl0VmFsdWVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZWRpdGVkVmFsdWVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRSb3cgPSB7IC4uLnRoaXMuZWRpdFJvdywgLi4uZWRpdGVkVmFsdWVzIH07XHJcblxyXG4gICAgICB0aGlzLmVkaXRTYXZlLmVtaXQodXBkYXRlZFJvdyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmVkaXRSb3dTZXJ2aWNlLnJlc2V0RWRpdFZhbHVlcygpO1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0RGVsZXRlKGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmRlbGV0ZS5lbWl0KCk7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmdS1yb3ctYWN0aW9uc1wiPlxyXG4gIEBpZiAoZWRpdFJvdyAmJiBlZGl0SW5kZXggIT09IG51bGwpIHsgQGlmKGlzRWRpdGluZygpKXtcclxuICA8YnV0dG9uIGZ1LWJ0bi1vdXRsaW5lIGljb25CdXR0b24gKGNsaWNrKT1cImNhbmNlbEVkaXQoJGV2ZW50KVwiPlxyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJlZGl0T2ZmXCIgLz5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uXHJcbiAgICBmdS1idG4tb3V0bGluZVxyXG4gICAgaWNvbkJ1dHRvblxyXG4gICAgdmFyaWFudD1cInN1Y2Nlc3NcIlxyXG4gICAgKGNsaWNrKT1cInNhdmVFZGl0KCRldmVudClcIlxyXG4gID5cclxuICAgIDxmdS1pY29uIGljb25OYW1lPVwiZWRpdFNhdmVcIiAvPlxyXG4gIDwvYnV0dG9uPlxyXG4gIH1AZWxzZSB7XHJcbiAgPGJ1dHRvbiBmdS1idG4tb3V0bGluZSBpY29uQnV0dG9uIChjbGljayk9XCJzZXRFZGl0KCRldmVudClcIj5cclxuICAgIDxmdS1pY29uIGljb25OYW1lPVwiZWRpdFwiIC8+XHJcbiAgPC9idXR0b24+XHJcbiAgfSB9IEBpZiAoIWlzRWRpdGluZygpICYmIHNob3dEZWxldGUpIHtcclxuICA8YnV0dG9uXHJcbiAgICBmdS1idG4tb3V0bGluZVxyXG4gICAgaWNvbkJ1dHRvblxyXG4gICAgdmFyaWFudD1cImRhbmdlclwiXHJcbiAgICAoY2xpY2spPVwiZW1pdERlbGV0ZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8ZnUtaWNvbiBpY29uTmFtZT1cInRyYXNoXCIgLz5cclxuICA8L2J1dHRvbj5cclxuICB9XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+XHJcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvcm93LWFjdGlvbnMvcm93LWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZnVzaW9uLXVpL3NyYy9saWIvZGF0YS1ncmlkL2NvbXBvbmVudHMvcm93LWFjdGlvbnMvcm93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUlaLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTMUMsTUFBTSxPQUFPLG1CQUFtQjtJQWM5QixZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCxjQUE4QjtRQUY5QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFkakMsWUFBTyxHQUFHLEtBQUssRUFBSyxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUU1QixjQUFTLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFMUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDakMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFTakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxPQUFPLENBQUMsQ0FBUTtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsQ0FBQztRQUVwRCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxDQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQUMsQ0FBUTtRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN2RSxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFPLENBQUM7WUFFL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sVUFBVSxDQUFDLENBQVE7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs4R0FwRVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsOFlDekJoQyxneUJBNkJBOzsyRkRKYSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7b0lBV3BCLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1UsTUFBTTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbnB1dCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVkaXRSb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdC1yb3cuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmdS1yb3ctYWN0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcm93LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3dBY3Rpb25zQ29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+XHJcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICBwdWJsaWMgZWRpdFJvdyA9IGlucHV0PFQ+KCk7XHJcbiAgcHVibGljIGVkaXRJbmRleCA9IGlucHV0PG51bWJlcj4oKTtcclxuXHJcbiAgcHVibGljIGlzRWRpdGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHNob3dEZWxldGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGVkaXRTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGVkaXRSb3dTZXJ2aWNlOiBFZGl0Um93U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGF0YS1hY3Rpb25zJywgJ3RydWUnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZWRpdFJvdyddICYmIGNoYW5nZXNbJ2VkaXRJbmRleCddKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5lZGl0Um93U2VydmljZS5lZGl0SW5kZXgkLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoaW5kZXggPT09IHRoaXMuZWRpdEluZGV4KCkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0RlbGV0ZS5zZXQodGhpcy5kZWxldGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVkaXQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFJvd1NlcnZpY2Uuc3RhcnRFZGl0aW5nKHRoaXMuZWRpdEluZGV4KCkhKTtcclxuXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEVkaXQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFJvd1NlcnZpY2Uuc3RvcEVkaXRpbmcoKTtcclxuXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVFZGl0KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRSb3dTZXJ2aWNlLnN0b3BFZGl0aW5nKCk7XHJcblxyXG4gICAgdGhpcy5lZGl0Um93U2VydmljZS5lZGl0VmFsdWVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZWRpdGVkVmFsdWVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRSb3cgPSB7IC4uLnRoaXMuZWRpdFJvdygpLCAuLi5lZGl0ZWRWYWx1ZXMgfSBhcyBUO1xyXG5cclxuICAgICAgdGhpcy5lZGl0U2F2ZS5lbWl0KHVwZGF0ZWRSb3cpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lZGl0Um93U2VydmljZS5yZXNldEVkaXRWYWx1ZXMoKTtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdERlbGV0ZShlOiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWxldGUuZW1pdCgpO1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnUtcm93LWFjdGlvbnNcIj5cclxuICBAaWYgKGVkaXRSb3coKSAmJiBlZGl0SW5kZXgoKSAhPT0gbnVsbCkgeyBAaWYoaXNFZGl0aW5nKCkpe1xyXG4gIDxidXR0b24gZnUtYnRuLW91dGxpbmUgaWNvbkJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsRWRpdCgkZXZlbnQpXCI+XHJcbiAgICA8ZnUtaWNvbiBpY29uTmFtZT1cImVkaXRPZmZcIiAvPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b25cclxuICAgIGZ1LWJ0bi1vdXRsaW5lXHJcbiAgICBpY29uQnV0dG9uXHJcbiAgICB2YXJpYW50PVwic3VjY2Vzc1wiXHJcbiAgICAoY2xpY2spPVwic2F2ZUVkaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJlZGl0U2F2ZVwiIC8+XHJcbiAgPC9idXR0b24+XHJcbiAgfUBlbHNlIHtcclxuICA8YnV0dG9uIGZ1LWJ0bi1vdXRsaW5lIGljb25CdXR0b24gKGNsaWNrKT1cInNldEVkaXQoJGV2ZW50KVwiPlxyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJlZGl0XCIgLz5cclxuICA8L2J1dHRvbj5cclxuICB9IH0gQGlmICghaXNFZGl0aW5nKCkgJiYgc2hvd0RlbGV0ZSgpKSB7XHJcbiAgPGJ1dHRvblxyXG4gICAgZnUtYnRuLW91dGxpbmVcclxuICAgIGljb25CdXR0b25cclxuICAgIHZhcmlhbnQ9XCJkYW5nZXJcIlxyXG4gICAgKGNsaWNrKT1cImVtaXREZWxldGUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGZ1LWljb24gaWNvbk5hbWU9XCJ0cmFzaFwiIC8+XHJcbiAgPC9idXR0b24+XHJcbiAgfVxyXG4gIDxuZy1jb250ZW50IC8+XHJcbjwvZGl2PlxyXG4iXX0=