@firestitch/filter 18.2.0 → 18.2.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.
- package/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.d.ts +1 -0
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.mjs +6 -3
- package/fesm2022/firestitch-filter.mjs +5 -2
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,7 @@ export declare class FsSavedFilterAutocompleteChipsComponent implements OnInit {
|
|
|
19
19
|
get pluralLabelLower(): string;
|
|
20
20
|
get pluralLabel(): string;
|
|
21
21
|
get labelIcon(): string;
|
|
22
|
+
compareWith: (o1: IFilterSavedFilter, o2: IFilterSavedFilter) => boolean;
|
|
22
23
|
selectFilter(savedFilter: IFilterSavedFilter): void;
|
|
23
24
|
selectedFilterChange(savedFilter: IFilterSavedFilter): void;
|
|
24
25
|
ngOnInit(): void;
|
|
@@ -11,4 +11,4 @@ import { DateTimeRangeItem } from '../models/items/date-time-range-item';
|
|
|
11
11
|
import { RangeItem } from '../models/items/range-item';
|
|
12
12
|
import { TextItem } from '../models/items/text-item';
|
|
13
13
|
import { WeekItem } from '../models/items/week-item';
|
|
14
|
-
export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): TextItem |
|
|
14
|
+
export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): TextItem | AutocompleteChipsItem | AutocompleteItem | CheckboxItem | ChipsItem | DateItem | DateRangeItem | DateTimeItem | DateTimeRangeItem | RangeItem | import("../models/items").MultipleSelectItem | import("../models/items").SimpleSelectItem | WeekItem;
|
|
@@ -38,6 +38,9 @@ export class FsSavedFilterAutocompleteChipsComponent {
|
|
|
38
38
|
get labelIcon() {
|
|
39
39
|
return this.savedFiltersController.labelIcon;
|
|
40
40
|
}
|
|
41
|
+
compareWith = (o1, o2) => {
|
|
42
|
+
return o1?.id === o2?.id;
|
|
43
|
+
};
|
|
41
44
|
selectFilter(savedFilter) {
|
|
42
45
|
this._paramController.setActiveSavedFilter(savedFilter);
|
|
43
46
|
}
|
|
@@ -106,15 +109,15 @@ export class FsSavedFilterAutocompleteChipsComponent {
|
|
|
106
109
|
});
|
|
107
110
|
}
|
|
108
111
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsSavedFilterAutocompleteChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsSavedFilterAutocompleteChipsComponent, isStandalone: true, selector: "fs-saved-filter-autocomplete-chips", inputs: { savedFiltersController: "savedFiltersController" }, ngImport: i0, template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"], dependencies: [{ kind: "ngmodule", type: FsAutocompleteChipsModule }, { kind: "component", type: i1.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "appearance", "floatLabel", "readonly", "size", "label", "placeholder", "chipMargin", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "chipPadding", "shape", "hint", "allowText", "allowObject", "delay", "minPanelWidth", "validateText", "removable", "allowClear", "color", "background", "orderable", "padless", "initOnClick", "fetchOnFocus", "multiple", "multipleAdd", "confirm", "disabled", "groupBy", "panelWidth", "panelClass", "compareWith"], outputs: ["selected", "removed", "reordered", "clear"] }, { kind: "directive", type: i1.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }, { kind: "directive", type: i1.FsAutocompleteChipsStaticDirective, selector: "[fsAutocompleteChipsStatic]", inputs: ["show", "disable"], outputs: ["click", "selected"] }, { kind: "directive", type: i1.FsAutocompleteChipsPrefixDirective, selector: "[fsAutocompleteChipsPrefix]", inputs: ["icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
112
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsSavedFilterAutocompleteChipsComponent, isStandalone: true, selector: "fs-saved-filter-autocomplete-chips", inputs: { savedFiltersController: "savedFiltersController" }, ngImport: i0, template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"], dependencies: [{ kind: "ngmodule", type: FsAutocompleteChipsModule }, { kind: "component", type: i1.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "appearance", "floatLabel", "readonly", "size", "label", "placeholder", "chipMargin", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "chipPadding", "shape", "hint", "allowText", "allowObject", "delay", "minPanelWidth", "validateText", "removable", "allowClear", "color", "background", "orderable", "padless", "initOnClick", "fetchOnFocus", "multiple", "multipleAdd", "confirm", "disabled", "groupBy", "panelWidth", "panelClass", "compareWith"], outputs: ["selected", "removed", "reordered", "clear"] }, { kind: "directive", type: i1.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }, { kind: "directive", type: i1.FsAutocompleteChipsStaticDirective, selector: "[fsAutocompleteChipsStatic]", inputs: ["show", "disable"], outputs: ["click", "selected"] }, { kind: "directive", type: i1.FsAutocompleteChipsPrefixDirective, selector: "[fsAutocompleteChipsPrefix]", inputs: ["icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
110
113
|
}
|
|
111
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsSavedFilterAutocompleteChipsComponent, decorators: [{
|
|
112
115
|
type: Component,
|
|
113
116
|
args: [{ selector: 'fs-saved-filter-autocomplete-chips', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
114
117
|
FsAutocompleteChipsModule,
|
|
115
118
|
FormsModule,
|
|
116
|
-
], template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"] }]
|
|
119
|
+
], template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"] }]
|
|
117
120
|
}], propDecorators: { savedFiltersController: [{
|
|
118
121
|
type: Input
|
|
119
122
|
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMvc2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMvc2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU3RSxP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QixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTVIVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyw0SkN4Q3BELG1rQ0F3Q3dCLHViREpwQix5QkFBeUIsdWxDQUN6QixXQUFXOzs0RkFHRix1Q0FBdUM7a0JBWG5ELFNBQVM7K0JBQ0Usb0NBQW9DLG1CQUc3Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCx5QkFBeUI7d0JBQ3pCLFdBQVc7cUJBQ1o7OEJBS00sc0JBQXNCO3NCQUQ1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzQXV0b2NvbXBsZXRlQ2hpcHNNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9hdXRvY29tcGxldGUtY2hpcHMnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEl0ZW1TdG9yZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2l0ZW0tc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYXJhbS1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlZC1maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9zYXZlZC1maWx0ZXItbWFuYWdlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1zYXZlZC1maWx0ZXItYXV0b2NvbXBsZXRlLWNoaXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zYXZlZC1maWx0ZXItYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRnNBdXRvY29tcGxldGVDaGlwc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNTYXZlZEZpbHRlckF1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcjogU2F2ZWRGaWx0ZXJDb250cm9sbGVyO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyO1xuXG4gIHByaXZhdGUgX2l0ZW1TdG9yZSA9IGluamVjdChJdGVtU3RvcmUpO1xuICBwcml2YXRlIF9wYXJhbUNvbnRyb2xsZXIgPSBpbmplY3QoUGFyYW1Db250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9wcm9tcHQgPSBpbmplY3QoRnNQcm9tcHQpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIFxuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlciQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsTG93ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnBsdXJhbExhYmVsTG93ZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5wbHVyYWxMYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5sYWJlbEljb247XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0RmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbUNvbnRyb2xsZXIuc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkRmlsdGVyQ2hhbmdlKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbUNvbnRyb2xsZXIuc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuXG4gICAgaWYgKCFzYXZlZEZpbHRlcikge1xuICAgICAgdGhpcy5faXRlbVN0b3JlLmZpbHRlcnNDbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNhdmVkRmlsdGVyKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSBzYXZlZEZpbHRlcjtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5zZWxlY3RlZEZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5jcmVhdGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVxuICAgICAgICAgICAgLnN1Y2Nlc3MoYENyZWF0ZWQgJHt0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzKCk6IHZvaWQge1xuICAgIHRoaXMuX3Byb21wdC5pbnB1dCh7XG4gICAgICB0aXRsZTogJ1NhdmUgYXMgbmV3IGFsZXJ0JyxcbiAgICAgIGxhYmVsOiAnTmFtZScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbW1pdExhYmVsOiAnU2F2ZScsXG4gICAgICBkaWFsb2dDb25maWc6IHtcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBJRmlsdGVyU2F2ZWRGaWx0ZXIgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgZmlsdGVyczogeyAuLi50aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyLmZpbHRlcnMgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zYXZlKGRhdGEpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9IFxuXG5cbiAgcHVibGljIGZldGNoID0gKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdKSA9PiBmaWx0ZXJzXG4gICAgICAgICAgLmZpbHRlcigoZmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpID0+IGZpbHRlclxuICAgICAgICAgICAgLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSkpLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgbWFuYWdlRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxmcy1hdXRvY29tcGxldGUtY2hpcHNcbiAgICBbZmV0Y2hdPVwiZmV0Y2hcIlxuICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsdXJhbExhYmVsXCJcbiAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmlsdGVyXCJcbiAgICBbcGFuZWxDbGFzc109XCInZnMtYXV0b2NvbXBsZXRlLWNoaXBzLXBhbmVsLXNhdmVkLWZpbHRlcidcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkRmlsdGVyQ2hhbmdlKCRldmVudClcIj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgICBmc0F1dG9jb21wbGV0ZUNoaXBzVGVtcGxhdGVcbiAgICAgIGxldC1vYmplY3Q9XCJvYmplY3RcIj5cbiAgICB7eyBvYmplY3QubmFtZSB9fVxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICBmc0F1dG9jb21wbGV0ZUNoaXBzUHJlZml4XG4gICAgW2ljb25dPVwibGFiZWxJY29uXCI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIEBpZiAoc2VsZWN0ZWRGaWx0ZXIpIHtcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgZnNBdXRvY29tcGxldGVDaGlwc1N0YXRpY1xuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+XG4gICAgICBTYXZlIGFsZXJ0IGZpbHRlcnNcbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBmc0F1dG9jb21wbGV0ZUNoaXBzU3RhdGljXG4gICAgICAgIChjbGljayk9XCJzYXZlQXMoKVwiPlxuICAgICAgU2F2ZSBhcyBuZXcgYWxlcnRcbiAgICA8L25nLXRlbXBsYXRlPlxuICB9IEBlbHNlIHtcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgZnNBdXRvY29tcGxldGVDaGlwc1N0YXRpY1xuICAgICAgICAoY2xpY2spPVwiY3JlYXRlKClcIj5cbiAgICAgIENyZWF0ZSBhbGVydFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH1cbiAgPG5nLXRlbXBsYXRlXG4gICAgICBmc0F1dG9jb21wbGV0ZUNoaXBzU3RhdGljXG4gICAgICAoY2xpY2spPVwibWFuYWdlRmlsdGVycygpXCI+XG4gICAgTWFuYWdlIHt7IHBsdXJhbExhYmVsTG93ZXIgfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZnMtYXV0b2NvbXBsZXRlLWNoaXBzPiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMvc2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMvc2F2ZWQtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU3RSxP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SUFFSyxhQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPO2FBQ1QsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQWhJVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyw0SkN4Q3BELHNtQ0F5Q3dCLHViRExwQix5QkFBeUIsdWxDQUN6QixXQUFXOzs0RkFHRix1Q0FBdUM7a0JBWG5ELFNBQVM7K0JBQ0Usb0NBQW9DLG1CQUc3Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCx5QkFBeUI7d0JBQ3pCLFdBQVc7cUJBQ1o7OEJBS00sc0JBQXNCO3NCQUQ1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzQXV0b2NvbXBsZXRlQ2hpcHNNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9hdXRvY29tcGxldGUtY2hpcHMnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEl0ZW1TdG9yZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2l0ZW0tc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYXJhbS1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlZC1maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9zYXZlZC1maWx0ZXItbWFuYWdlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1zYXZlZC1maWx0ZXItYXV0b2NvbXBsZXRlLWNoaXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NhdmVkLWZpbHRlci1hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zYXZlZC1maWx0ZXItYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRnNBdXRvY29tcGxldGVDaGlwc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNTYXZlZEZpbHRlckF1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcjogU2F2ZWRGaWx0ZXJDb250cm9sbGVyO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyO1xuXG4gIHByaXZhdGUgX2l0ZW1TdG9yZSA9IGluamVjdChJdGVtU3RvcmUpO1xuICBwcml2YXRlIF9wYXJhbUNvbnRyb2xsZXIgPSBpbmplY3QoUGFyYW1Db250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9wcm9tcHQgPSBpbmplY3QoRnNQcm9tcHQpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIFxuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlciQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsTG93ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnBsdXJhbExhYmVsTG93ZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5wbHVyYWxMYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5sYWJlbEljb247XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZVdpdGggPSAobzE6IElGaWx0ZXJTYXZlZEZpbHRlciwgbzI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBvMT8uaWQgPT09IG8yPy5pZDtcbiAgfTtcblxuICBwdWJsaWMgc2VsZWN0RmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbUNvbnRyb2xsZXIuc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkRmlsdGVyQ2hhbmdlKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbUNvbnRyb2xsZXIuc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuXG4gICAgaWYgKCFzYXZlZEZpbHRlcikge1xuICAgICAgdGhpcy5faXRlbVN0b3JlLmZpbHRlcnNDbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNhdmVkRmlsdGVyKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIgPSBzYXZlZEZpbHRlcjtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5zZWxlY3RlZEZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5jcmVhdGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVxuICAgICAgICAgICAgLnN1Y2Nlc3MoYENyZWF0ZWQgJHt0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzKCk6IHZvaWQge1xuICAgIHRoaXMuX3Byb21wdC5pbnB1dCh7XG4gICAgICB0aXRsZTogJ1NhdmUgYXMgbmV3IGFsZXJ0JyxcbiAgICAgIGxhYmVsOiAnTmFtZScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbW1pdExhYmVsOiAnU2F2ZScsXG4gICAgICBkaWFsb2dDb25maWc6IHtcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBJRmlsdGVyU2F2ZWRGaWx0ZXIgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgZmlsdGVyczogeyAuLi50aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyLmZpbHRlcnMgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zYXZlKGRhdGEpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9IFxuXG5cbiAgcHVibGljIGZldGNoID0gKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdKSA9PiBmaWx0ZXJzXG4gICAgICAgICAgLmZpbHRlcigoZmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpID0+IGZpbHRlclxuICAgICAgICAgICAgLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSkpLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgbWFuYWdlRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxmcy1hdXRvY29tcGxldGUtY2hpcHNcbiAgICBbZmV0Y2hdPVwiZmV0Y2hcIlxuICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsdXJhbExhYmVsXCJcbiAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmlsdGVyXCJcbiAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVdpdGhcIlxuICAgIFtwYW5lbENsYXNzXT1cIidmcy1hdXRvY29tcGxldGUtY2hpcHMtcGFuZWwtc2F2ZWQtZmlsdGVyJ1wiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGVcbiAgICAgIGZzQXV0b2NvbXBsZXRlQ2hpcHNUZW1wbGF0ZVxuICAgICAgbGV0LW9iamVjdD1cIm9iamVjdFwiPlxuICAgIHt7IG9iamVjdC5uYW1lIH19XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZVxuICAgIGZzQXV0b2NvbXBsZXRlQ2hpcHNQcmVmaXhcbiAgICBbaWNvbl09XCJsYWJlbEljb25cIj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgQGlmIChzZWxlY3RlZEZpbHRlcikge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBmc0F1dG9jb21wbGV0ZUNoaXBzU3RhdGljXG4gICAgICAgIChjbGljayk9XCJzYXZlKClcIj5cbiAgICAgIFNhdmUgYWxlcnQgZmlsdGVyc1xuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGZzQXV0b2NvbXBsZXRlQ2hpcHNTdGF0aWNcbiAgICAgICAgKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICBTYXZlIGFzIG5ldyBhbGVydFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH0gQGVsc2Uge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBmc0F1dG9jb21wbGV0ZUNoaXBzU3RhdGljXG4gICAgICAgIChjbGljayk9XCJjcmVhdGUoKVwiPlxuICAgICAgQ3JlYXRlIGFsZXJ0XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgfVxuICA8bmctdGVtcGxhdGVcbiAgICAgIGZzQXV0b2NvbXBsZXRlQ2hpcHNTdGF0aWNcbiAgICAgIChjbGljayk9XCJtYW5hZ2VGaWx0ZXJzKClcIj5cbiAgICBNYW5hZ2Uge3sgcGx1cmFsTGFiZWxMb3dlciB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9mcy1hdXRvY29tcGxldGUtY2hpcHM+Il19
|
|
@@ -4146,6 +4146,9 @@ class FsSavedFilterAutocompleteChipsComponent {
|
|
|
4146
4146
|
get labelIcon() {
|
|
4147
4147
|
return this.savedFiltersController.labelIcon;
|
|
4148
4148
|
}
|
|
4149
|
+
compareWith = (o1, o2) => {
|
|
4150
|
+
return o1?.id === o2?.id;
|
|
4151
|
+
};
|
|
4149
4152
|
selectFilter(savedFilter) {
|
|
4150
4153
|
this._paramController.setActiveSavedFilter(savedFilter);
|
|
4151
4154
|
}
|
|
@@ -4214,14 +4217,14 @@ class FsSavedFilterAutocompleteChipsComponent {
|
|
|
4214
4217
|
});
|
|
4215
4218
|
}
|
|
4216
4219
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsSavedFilterAutocompleteChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4217
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsSavedFilterAutocompleteChipsComponent, isStandalone: true, selector: "fs-saved-filter-autocomplete-chips", inputs: { savedFiltersController: "savedFiltersController" }, ngImport: i0, template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"], dependencies: [{ kind: "ngmodule", type: FsAutocompleteChipsModule }, { kind: "component", type: i1$3.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "appearance", "floatLabel", "readonly", "size", "label", "placeholder", "chipMargin", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "chipPadding", "shape", "hint", "allowText", "allowObject", "delay", "minPanelWidth", "validateText", "removable", "allowClear", "color", "background", "orderable", "padless", "initOnClick", "fetchOnFocus", "multiple", "multipleAdd", "confirm", "disabled", "groupBy", "panelWidth", "panelClass", "compareWith"], outputs: ["selected", "removed", "reordered", "clear"] }, { kind: "directive", type: i1$3.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }, { kind: "directive", type: i1$3.FsAutocompleteChipsStaticDirective, selector: "[fsAutocompleteChipsStatic]", inputs: ["show", "disable"], outputs: ["click", "selected"] }, { kind: "directive", type: i1$3.FsAutocompleteChipsPrefixDirective, selector: "[fsAutocompleteChipsPrefix]", inputs: ["icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsSavedFilterAutocompleteChipsComponent, isStandalone: true, selector: "fs-saved-filter-autocomplete-chips", inputs: { savedFiltersController: "savedFiltersController" }, ngImport: i0, template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"], dependencies: [{ kind: "ngmodule", type: FsAutocompleteChipsModule }, { kind: "component", type: i1$3.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "appearance", "floatLabel", "readonly", "size", "label", "placeholder", "chipMargin", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "chipPadding", "shape", "hint", "allowText", "allowObject", "delay", "minPanelWidth", "validateText", "removable", "allowClear", "color", "background", "orderable", "padless", "initOnClick", "fetchOnFocus", "multiple", "multipleAdd", "confirm", "disabled", "groupBy", "panelWidth", "panelClass", "compareWith"], outputs: ["selected", "removed", "reordered", "clear"] }, { kind: "directive", type: i1$3.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }, { kind: "directive", type: i1$3.FsAutocompleteChipsStaticDirective, selector: "[fsAutocompleteChipsStatic]", inputs: ["show", "disable"], outputs: ["click", "selected"] }, { kind: "directive", type: i1$3.FsAutocompleteChipsPrefixDirective, selector: "[fsAutocompleteChipsPrefix]", inputs: ["icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4218
4221
|
}
|
|
4219
4222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsSavedFilterAutocompleteChipsComponent, decorators: [{
|
|
4220
4223
|
type: Component,
|
|
4221
4224
|
args: [{ selector: 'fs-saved-filter-autocomplete-chips', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
4222
4225
|
FsAutocompleteChipsModule,
|
|
4223
4226
|
FormsModule,
|
|
4224
|
-
], template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"] }]
|
|
4227
|
+
], template: "<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{width:200px;display:flex;margin-right:5px}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field.mat-form-field-appearance-outline{margin:0}fs-autocomplete-chips ::ng-deep .prefix-icon{color:#626262}fs-autocomplete-chips ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .fs-autocomplete-chips-panel-saved-filter{max-height:400px!important}\n"] }]
|
|
4225
4228
|
}], propDecorators: { savedFiltersController: [{
|
|
4226
4229
|
type: Input
|
|
4227
4230
|
}] } });
|