@porscheinformatik/clr-addons 15.5.8 → 15.6.1

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.
@@ -2,27 +2,35 @@ import { EventEmitter, OnDestroy } from '@angular/core';
2
2
  import { ClrDatagrid, ClrDatagridFilter, ClrDatagridFilterInterface } from '@clr/angular';
3
3
  import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
+ interface FilterValue {
6
+ value: string;
7
+ displayValue: string;
8
+ }
5
9
  export declare class ClrEnumFilterComponent<T extends {
6
10
  [key: string]: any;
7
11
  }> implements ClrDatagridFilterInterface<T>, OnDestroy {
8
12
  property: string;
9
13
  set value(values: string[]);
10
14
  clrFilterValuesChange: EventEmitter<string[]>;
11
- possibleValues: string[];
15
+ possibleValues: FilterValue[];
12
16
  customPossibleValues: boolean;
13
- filteredValues: string[];
17
+ filteredValues: FilterValue[];
14
18
  changes: EventEmitter<boolean>;
15
19
  destroyed$: Subject<void>;
16
- set clrPossibleValues(values: string[]);
20
+ set clrPossibleValues(values: (string | FilterValue)[]);
17
21
  constructor(filterContainer: ClrDatagridFilter, datagrid: ClrDatagrid);
18
- setPossibleValues(values: string[]): void;
19
- onChange(selectedValue: string, checkboxState: boolean): void;
22
+ setPossibleValues(values: (string | FilterValue)[]): void;
23
+ onChange(selectedValue: FilterValue, checkboxState: boolean): void;
20
24
  isActive(): boolean;
21
25
  accepts(item: T): boolean;
22
26
  get state(): any;
23
27
  clearFilters(): void;
24
28
  private emitFilterChanged;
25
29
  ngOnDestroy(): void;
30
+ protected containsFilterValue(entries: FilterValue[], filtered: FilterValue): boolean;
31
+ private getDisplayValues;
32
+ private getValues;
26
33
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrEnumFilterComponent<any>, never>;
27
34
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrEnumFilterComponent<any>, "clr-enum-filter", never, { "property": "clrProperty"; "value": "clrFilterValues"; "clrPossibleValues": "clrPossibleValues"; }, { "clrFilterValuesChange": "clrFilterValuesChange"; }, never, never, false, never>;
28
35
  }
36
+ export {};
@@ -10,11 +10,11 @@ ClarityIcons.addIcons(trashIcon);
10
10
  export class ClrEnumFilterComponent {
11
11
  set value(values) {
12
12
  if (this.possibleValues?.length) {
13
- this.filteredValues = values.filter(filtered => this.possibleValues.includes(filtered));
14
- this.clrFilterValuesChange.emit(this.filteredValues);
13
+ this.filteredValues = this.possibleValues.filter(possibleValue => values?.includes(possibleValue.value));
14
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
15
15
  }
16
16
  else {
17
- this.filteredValues = values;
17
+ this.filteredValues = values.map(filtered => ({ value: filtered, displayValue: filtered }));
18
18
  }
19
19
  this.changes.emit(true);
20
20
  }
@@ -38,9 +38,9 @@ export class ClrEnumFilterComponent {
38
38
  });
39
39
  }
40
40
  setPossibleValues(values) {
41
- this.possibleValues = values;
42
- this.possibleValues.sort();
43
- this.filteredValues = this.filteredValues.filter(filtered => this.possibleValues.includes(filtered));
41
+ this.possibleValues = values.map(v => (v instanceof Object ? v : { value: v, displayValue: v }));
42
+ this.possibleValues.sort((v1, v2) => v1.displayValue.localeCompare(v2.displayValue));
43
+ this.filteredValues = this.filteredValues.filter(filtered => this.containsFilterValue(this.possibleValues, filtered));
44
44
  this.emitFilterChanged();
45
45
  }
46
46
  onChange(selectedValue, checkboxState) {
@@ -48,7 +48,7 @@ export class ClrEnumFilterComponent {
48
48
  this.filteredValues.push(selectedValue);
49
49
  }
50
50
  else {
51
- this.filteredValues = this.filteredValues.filter(filteredState => filteredState !== selectedValue);
51
+ this.filteredValues = this.filteredValues.filter(filtered => filtered.value !== selectedValue.value);
52
52
  }
53
53
  this.emitFilterChanged();
54
54
  }
@@ -56,12 +56,12 @@ export class ClrEnumFilterComponent {
56
56
  return this.filteredValues.length > 0;
57
57
  }
58
58
  accepts(item) {
59
- return this.filteredValues.includes(item[this.property]);
59
+ return this.getDisplayValues(this.filteredValues).includes(item[this.property]);
60
60
  }
61
61
  get state() {
62
62
  return {
63
63
  property: this.property,
64
- value: this.filteredValues,
64
+ value: this.getValues(this.filteredValues),
65
65
  };
66
66
  }
67
67
  clearFilters() {
@@ -69,19 +69,28 @@ export class ClrEnumFilterComponent {
69
69
  this.emitFilterChanged();
70
70
  }
71
71
  emitFilterChanged() {
72
- this.clrFilterValuesChange.emit(this.filteredValues);
72
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
73
73
  this.changes.emit(true);
74
74
  }
75
75
  ngOnDestroy() {
76
76
  this.destroyed$.next();
77
77
  this.destroyed$.complete();
78
78
  }
79
+ containsFilterValue(entries, filtered) {
80
+ return entries.some(v => v.value === filtered.value);
81
+ }
82
+ getDisplayValues(entries) {
83
+ return entries.map(entry => entry.displayValue);
84
+ }
85
+ getValues(entries) {
86
+ return entries.map(entry => entry.value);
87
+ }
79
88
  }
80
89
  ClrEnumFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, deps: [{ token: i1.ClrDatagridFilter }, { token: i1.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Component });
81
- ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }] });
90
+ ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }] });
82
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, decorators: [{
83
92
  type: Component,
84
- args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
93
+ args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
85
94
  }], ctorParameters: function () { return [{ type: i1.ClrDatagridFilter }, { type: i1.ClrDatagrid }]; }, propDecorators: { property: [{
86
95
  type: Input,
87
96
  args: ['clrProperty']
@@ -93,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
93
102
  }], clrPossibleValues: [{
94
103
  type: Input
95
104
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBT2pDLE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsSUFDVyxLQUFLLENBQUMsTUFBZ0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFD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LENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7bUhBdkZVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9QQ1puQyxrbUJBZ0JBOzJGREphLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxpQkFBaUI7a0lBT0wsUUFBUTtzQkFBN0IsS0FBSzt1QkFBQyxhQUFhO2dCQUdULEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBV2QscUJBQXFCO3NCQUE5QixNQUFNO2dCQVNNLGlCQUFpQjtzQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsckRhdGFncmlkLCBDbHJEYXRhZ3JpZEZpbHRlciwgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbGFyaXR5SWNvbnMsIHRyYXNoSWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuQ2xhcml0eUljb25zLmFkZEljb25zKHRyYXNoSWNvbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1lbnVtLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnVtLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudW0tZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENsckVudW1GaWx0ZXJDb21wb25lbnQ8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+XG4gIGltcGxlbWVudHMgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8VD4sIE9uRGVzdHJveVxue1xuICBASW5wdXQoJ2NsclByb3BlcnR5JykgcHJvcGVydHkgPSAnJztcblxuICBASW5wdXQoJ2NsckZpbHRlclZhbHVlcycpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWVzOiBzdHJpbmdbXSkge1xuICAgIGlmICh0aGlzLnBvc3NpYmxlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKGZpbHRlcmVkID0+IHRoaXMucG9zc2libGVWYWx1ZXMuaW5jbHVkZXMoZmlsdGVyZWQpKTtcbiAgICAgIHRoaXMuY2xyRmlsdGVyVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJlZFZhbHVlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIGNsckZpbHRlclZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgcG9zc2libGVWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gIGN1c3RvbVBvc3NpYmxlVmFsdWVzID0gZmFsc2U7XG4gIGZpbHRlcmVkVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBjaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG5cbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgc2V0IGNsclBvc3NpYmxlVmFsdWVzKHZhbHVlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNldFBvc3NpYmxlVmFsdWVzKHZhbHVlcyk7XG4gICAgdGhpcy5jdXN0b21Qb3NzaWJsZVZhbHVlcyA9IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihmaWx0ZXJDb250YWluZXI6IENsckRhdGFncmlkRmlsdGVyLCBkYXRhZ3JpZDogQ2xyRGF0YWdyaWQpIHtcbiAgICBmaWx0ZXJDb250YWluZXIuc2V0RmlsdGVyKHRoaXMpO1xuICAgIGRhdGFncmlkLml0ZW1zLmFsbENoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgIGlmICghdGhpcy5jdXN0b21Qb3NzaWJsZVZhbHVlcykge1xuICAgICAgICB0aGlzLnNldFBvc3NpYmxlVmFsdWVzKFxuICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5wcm9wZXJ0eV0pLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFBvc3NpYmxlVmFsdWVzKHZhbHVlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnBvc3NpYmxlVmFsdWVzID0gdmFsdWVzO1xuICAgIHRoaXMucG9zc2libGVWYWx1ZXMuc29ydCgpO1xuICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkVmFsdWVzLmZpbHRlcihmaWx0ZXJlZCA9PiB0aGlzLnBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKGZpbHRlcmVkKSk7XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBvbkNoYW5nZShzZWxlY3RlZFZhbHVlOiBzdHJpbmcsIGNoZWNrYm94U3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2hlY2tib3hTdGF0ZSkge1xuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5wdXNoKHNlbGVjdGVkVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5maWx0ZXJlZFZhbHVlcy5maWx0ZXIoZmlsdGVyZWRTdGF0ZSA9PiBmaWx0ZXJlZFN0YXRlICE9PSBzZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRWYWx1ZXMuaW5jbHVkZXMoaXRlbVt0aGlzLnByb3BlcnR5XSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnByb3BlcnR5LFxuICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyZWRWYWx1ZXMsXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gW107XG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsdGVyQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmNsckZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRWYWx1ZXMpO1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpbmsgYnRuLXRyYXNoXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XG4gIDxjZHMtaWNvbiBzaGFwZT1cInRyYXNoXCI+PC9jZHMtaWNvbj5cbjwvYnV0dG9uPlxuPGNsci1jaGVja2JveC1jb250YWluZXIgY2xhc3M9XCJmaWx0ZXItc2VsZWN0aW9uXCI+XG4gIDxjbHItY2hlY2tib3gtd3JhcHBlciAqbmdGb3I9XCJsZXQgcG9zc2libGVWYWx1ZSBvZiBwb3NzaWJsZVZhbHVlc1wiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGNsckNoZWNrYm94XG4gICAgICB2YWx1ZT1cInt7IHBvc3NpYmxlVmFsdWUgfX1cIlxuICAgICAgbmFtZT1cInBvc3NpYmxlVmFsdWVcIlxuICAgICAgW25nTW9kZWxdPVwiZmlsdGVyZWRWYWx1ZXMuaW5jbHVkZXMocG9zc2libGVWYWx1ZSlcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocG9zc2libGVWYWx1ZSwgJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bGFiZWw+e3sgcG9zc2libGVWYWx1ZSB9fTwvbGFiZWw+XG4gIDwvY2xyLWNoZWNrYm94LXdyYXBwZXI+XG48L2Nsci1jaGVja2JveC1jb250YWluZXI+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBWWpDLE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsSUFDVyxLQUFLLENBQUMsTUFBZ0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6RyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM3RjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFXRCxJQUFhLGlCQUFpQixDQUFDLE1BQWdDO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLGVBQWtDLEVBQUUsUUFBcUI7UUEzQi9DLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFhMUIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUUvRCxtQkFBYyxHQUFrQixFQUFFLENBQUM7UUFDbkMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUNuQyxZQUFPLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFM0MsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFRL0IsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQ3BCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQ3JHLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWdDO1FBQ2hELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQ3hELENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUSxDQUFDLGFBQTBCLEVBQUUsYUFBc0I7UUFDekQsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0RztRQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxPQUFzQixFQUFFLFFBQXFCO1FBQ3pFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFzQjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUFzQjtRQUN0QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7bUhBckdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9QQ2pCbkMsMHFCQWdCQTsyRkRDYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO2tJQU9MLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFHVCxLQUFLO3NCQURmLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVdkLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFTTSxpQkFBaUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZCwgQ2xyRGF0YWdyaWRGaWx0ZXIsIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xhcml0eUljb25zLCB0cmFzaEljb24gfSBmcm9tICdAY2RzL2NvcmUvaWNvbic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyh0cmFzaEljb24pO1xuXG5pbnRlcmZhY2UgRmlsdGVyVmFsdWUge1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNwbGF5VmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWVudW0tZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudW0tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW51bS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRW51bUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT5cbiAgaW1wbGVtZW50cyBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxUPiwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgnY2xyUHJvcGVydHknKSBwcm9wZXJ0eSA9ICcnO1xuXG4gIEBJbnB1dCgnY2xyRmlsdGVyVmFsdWVzJylcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKHRoaXMucG9zc2libGVWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMucG9zc2libGVWYWx1ZXMuZmlsdGVyKHBvc3NpYmxlVmFsdWUgPT4gdmFsdWVzPy5pbmNsdWRlcyhwb3NzaWJsZVZhbHVlLnZhbHVlKSk7XG4gICAgICB0aGlzLmNsckZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZ2V0RGlzcGxheVZhbHVlcyh0aGlzLmZpbHRlcmVkVmFsdWVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKGZpbHRlcmVkID0+ICh7IHZhbHVlOiBmaWx0ZXJlZCwgZGlzcGxheVZhbHVlOiBmaWx0ZXJlZCB9KSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIGNsckZpbHRlclZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgcG9zc2libGVWYWx1ZXM6IEZpbHRlclZhbHVlW10gPSBbXTtcbiAgY3VzdG9tUG9zc2libGVWYWx1ZXMgPSBmYWxzZTtcbiAgZmlsdGVyZWRWYWx1ZXM6IEZpbHRlclZhbHVlW10gPSBbXTtcbiAgY2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpIHNldCBjbHJQb3NzaWJsZVZhbHVlcyh2YWx1ZXM6IChzdHJpbmcgfCBGaWx0ZXJWYWx1ZSlbXSkge1xuICAgIHRoaXMuc2V0UG9zc2libGVWYWx1ZXModmFsdWVzKTtcbiAgICB0aGlzLmN1c3RvbVBvc3NpYmxlVmFsdWVzID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGZpbHRlckNvbnRhaW5lcjogQ2xyRGF0YWdyaWRGaWx0ZXIsIGRhdGFncmlkOiBDbHJEYXRhZ3JpZCkge1xuICAgIGZpbHRlckNvbnRhaW5lci5zZXRGaWx0ZXIodGhpcyk7XG4gICAgZGF0YWdyaWQuaXRlbXMuYWxsQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgaWYgKCF0aGlzLmN1c3RvbVBvc3NpYmxlVmFsdWVzKSB7XG4gICAgICAgIHRoaXMuc2V0UG9zc2libGVWYWx1ZXMoXG4gICAgICAgICAgaXRlbXMubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLnByb3BlcnR5XSkuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0UG9zc2libGVWYWx1ZXModmFsdWVzOiAoc3RyaW5nIHwgRmlsdGVyVmFsdWUpW10pIHtcbiAgICB0aGlzLnBvc3NpYmxlVmFsdWVzID0gdmFsdWVzLm1hcCh2ID0+ICh2IGluc3RhbmNlb2YgT2JqZWN0ID8gdiA6IHsgdmFsdWU6IHYsIGRpc3BsYXlWYWx1ZTogdiB9KSk7XG4gICAgdGhpcy5wb3NzaWJsZVZhbHVlcy5zb3J0KCh2MSwgdjIpID0+IHYxLmRpc3BsYXlWYWx1ZS5sb2NhbGVDb21wYXJlKHYyLmRpc3BsYXlWYWx1ZSkpO1xuICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkVmFsdWVzLmZpbHRlcihmaWx0ZXJlZCA9PlxuICAgICAgdGhpcy5jb250YWluc0ZpbHRlclZhbHVlKHRoaXMucG9zc2libGVWYWx1ZXMsIGZpbHRlcmVkKVxuICAgICk7XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBvbkNoYW5nZShzZWxlY3RlZFZhbHVlOiBGaWx0ZXJWYWx1ZSwgY2hlY2tib3hTdGF0ZTogYm9vbGVhbikge1xuICAgIGlmIChjaGVja2JveFN0YXRlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLnB1c2goc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkVmFsdWVzLmZpbHRlcihmaWx0ZXJlZCA9PiBmaWx0ZXJlZC52YWx1ZSAhPT0gc2VsZWN0ZWRWYWx1ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlZCgpO1xuICB9XG5cbiAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRWYWx1ZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGFjY2VwdHMoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldERpc3BsYXlWYWx1ZXModGhpcy5maWx0ZXJlZFZhbHVlcykuaW5jbHVkZXMoaXRlbVt0aGlzLnByb3BlcnR5XSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnByb3BlcnR5LFxuICAgICAgdmFsdWU6IHRoaXMuZ2V0VmFsdWVzKHRoaXMuZmlsdGVyZWRWYWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IFtdO1xuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEZpbHRlckNoYW5nZWQoKSB7XG4gICAgdGhpcy5jbHJGaWx0ZXJWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLmdldERpc3BsYXlWYWx1ZXModGhpcy5maWx0ZXJlZFZhbHVlcykpO1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb250YWluc0ZpbHRlclZhbHVlKGVudHJpZXM6IEZpbHRlclZhbHVlW10sIGZpbHRlcmVkOiBGaWx0ZXJWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRyaWVzLnNvbWUodiA9PiB2LnZhbHVlID09PSBmaWx0ZXJlZC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3BsYXlWYWx1ZXMoZW50cmllczogRmlsdGVyVmFsdWVbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZW50cmllcy5tYXAoZW50cnkgPT4gZW50cnkuZGlzcGxheVZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVzKGVudHJpZXM6IEZpbHRlclZhbHVlW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IGVudHJ5LnZhbHVlKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpbmsgYnRuLXRyYXNoXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XG4gIDxjZHMtaWNvbiBzaGFwZT1cInRyYXNoXCI+PC9jZHMtaWNvbj5cbjwvYnV0dG9uPlxuPGNsci1jaGVja2JveC1jb250YWluZXIgY2xhc3M9XCJmaWx0ZXItc2VsZWN0aW9uXCI+XG4gIDxjbHItY2hlY2tib3gtd3JhcHBlciAqbmdGb3I9XCJsZXQgcG9zc2libGVWYWx1ZSBvZiBwb3NzaWJsZVZhbHVlc1wiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGNsckNoZWNrYm94XG4gICAgICB2YWx1ZT1cInt7IHBvc3NpYmxlVmFsdWUuZGlzcGxheVZhbHVlID8/IHBvc3NpYmxlVmFsdWUgfX1cIlxuICAgICAgbmFtZT1cInBvc3NpYmxlVmFsdWVcIlxuICAgICAgW25nTW9kZWxdPVwiY29udGFpbnNGaWx0ZXJWYWx1ZShmaWx0ZXJlZFZhbHVlcywgcG9zc2libGVWYWx1ZSlcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocG9zc2libGVWYWx1ZSwgJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bGFiZWw+e3sgcG9zc2libGVWYWx1ZS5kaXNwbGF5VmFsdWUgPz8gcG9zc2libGVWYWx1ZSB9fTwvbGFiZWw+XG4gIDwvY2xyLWNoZWNrYm94LXdyYXBwZXI+XG48L2Nsci1jaGVja2JveC1jb250YWluZXI+XG4iXX0=
@@ -5749,11 +5749,11 @@ class ClrEnumFilterComponent {
5749
5749
  set value(values) {
5750
5750
  var _a;
5751
5751
  if ((_a = this.possibleValues) === null || _a === void 0 ? void 0 : _a.length) {
5752
- this.filteredValues = values.filter(filtered => this.possibleValues.includes(filtered));
5753
- this.clrFilterValuesChange.emit(this.filteredValues);
5752
+ this.filteredValues = this.possibleValues.filter(possibleValue => values === null || values === void 0 ? void 0 : values.includes(possibleValue.value));
5753
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
5754
5754
  }
5755
5755
  else {
5756
- this.filteredValues = values;
5756
+ this.filteredValues = values.map(filtered => ({ value: filtered, displayValue: filtered }));
5757
5757
  }
5758
5758
  this.changes.emit(true);
5759
5759
  }
@@ -5777,9 +5777,9 @@ class ClrEnumFilterComponent {
5777
5777
  });
5778
5778
  }
5779
5779
  setPossibleValues(values) {
5780
- this.possibleValues = values;
5781
- this.possibleValues.sort();
5782
- this.filteredValues = this.filteredValues.filter(filtered => this.possibleValues.includes(filtered));
5780
+ this.possibleValues = values.map(v => (v instanceof Object ? v : { value: v, displayValue: v }));
5781
+ this.possibleValues.sort((v1, v2) => v1.displayValue.localeCompare(v2.displayValue));
5782
+ this.filteredValues = this.filteredValues.filter(filtered => this.containsFilterValue(this.possibleValues, filtered));
5783
5783
  this.emitFilterChanged();
5784
5784
  }
5785
5785
  onChange(selectedValue, checkboxState) {
@@ -5787,7 +5787,7 @@ class ClrEnumFilterComponent {
5787
5787
  this.filteredValues.push(selectedValue);
5788
5788
  }
5789
5789
  else {
5790
- this.filteredValues = this.filteredValues.filter(filteredState => filteredState !== selectedValue);
5790
+ this.filteredValues = this.filteredValues.filter(filtered => filtered.value !== selectedValue.value);
5791
5791
  }
5792
5792
  this.emitFilterChanged();
5793
5793
  }
@@ -5795,12 +5795,12 @@ class ClrEnumFilterComponent {
5795
5795
  return this.filteredValues.length > 0;
5796
5796
  }
5797
5797
  accepts(item) {
5798
- return this.filteredValues.includes(item[this.property]);
5798
+ return this.getDisplayValues(this.filteredValues).includes(item[this.property]);
5799
5799
  }
5800
5800
  get state() {
5801
5801
  return {
5802
5802
  property: this.property,
5803
- value: this.filteredValues,
5803
+ value: this.getValues(this.filteredValues),
5804
5804
  };
5805
5805
  }
5806
5806
  clearFilters() {
@@ -5808,19 +5808,28 @@ class ClrEnumFilterComponent {
5808
5808
  this.emitFilterChanged();
5809
5809
  }
5810
5810
  emitFilterChanged() {
5811
- this.clrFilterValuesChange.emit(this.filteredValues);
5811
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
5812
5812
  this.changes.emit(true);
5813
5813
  }
5814
5814
  ngOnDestroy() {
5815
5815
  this.destroyed$.next();
5816
5816
  this.destroyed$.complete();
5817
5817
  }
5818
+ containsFilterValue(entries, filtered) {
5819
+ return entries.some(v => v.value === filtered.value);
5820
+ }
5821
+ getDisplayValues(entries) {
5822
+ return entries.map(entry => entry.displayValue);
5823
+ }
5824
+ getValues(entries) {
5825
+ return entries.map(entry => entry.value);
5826
+ }
5818
5827
  }
5819
5828
  ClrEnumFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, deps: [{ token: i1$1.ClrDatagridFilter }, { token: i1$1.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Component });
5820
- ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1$1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1$1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1$1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
5829
+ ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1$1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1$1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1$1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
5821
5830
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, decorators: [{
5822
5831
  type: Component,
5823
- args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
5832
+ args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
5824
5833
  }], ctorParameters: function () { return [{ type: i1$1.ClrDatagridFilter }, { type: i1$1.ClrDatagrid }]; }, propDecorators: { property: [{
5825
5834
  type: Input,
5826
5835
  args: ['clrProperty']