@recursyve/nice-data-filter-kit 15.0.0 → 15.1.0

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.
Files changed (23) hide show
  1. package/esm2020/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.mjs +45 -17
  2. package/esm2020/lib/components/nice-filter-view/nice-base-filter-view.component.mjs +10 -2
  3. package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.service.mjs +39 -4
  4. package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.store.mjs +95 -4
  5. package/esm2020/lib/directive/selectable-list/model/selectable-list-options.model.mjs +1 -1
  6. package/esm2020/lib/directive/selectable-list/selectable-list.directive.mjs +5 -2
  7. package/esm2020/lib/directive/selectable-list/store/selectable-list-state.service.mjs +10 -5
  8. package/esm2020/lib/directive/selectable-list/store/selectable-list.state.mjs +1 -1
  9. package/esm2020/lib/models/filter.model.mjs +1 -1
  10. package/esm2020/lib/utils/filter.utils.mjs +3 -2
  11. package/fesm2015/recursyve-nice-data-filter-kit.mjs +1129 -975
  12. package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +1 -1
  13. package/fesm2020/recursyve-nice-data-filter-kit.mjs +1124 -960
  14. package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +1 -1
  15. package/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.d.ts +8 -4
  16. package/lib/components/nice-filter-view/nice-base-filter-view.component.d.ts +2 -0
  17. package/lib/components/nice-filter-view/store/nice-filter-view.service.d.ts +5 -2
  18. package/lib/components/nice-filter-view/store/nice-filter-view.store.d.ts +4 -0
  19. package/lib/directive/selectable-list/model/selectable-list-options.model.d.ts +1 -0
  20. package/lib/directive/selectable-list/store/selectable-list-state.service.d.ts +1 -0
  21. package/lib/directive/selectable-list/store/selectable-list.state.d.ts +1 -0
  22. package/lib/models/filter.model.d.ts +2 -0
  23. package/package.json +1 -1
@@ -4,19 +4,24 @@ import { ExportBottomSheetComponent } from "@recursyve/nice-ui-kit.v2";
4
4
  import { EXPORTS_SETTINGS, FILTER_VIEW_ICONS } from "../../nice-filter-view.constant";
5
5
  import { NiceFilterViewQuery } from "../../store/nice-filter-view.query";
6
6
  import { NiceFilterViewService } from "../../store/nice-filter-view.service";
7
+ import { NiceSelectableListService } from "../../../../directive/selectable-list/store/selectable-list.service";
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../../store/nice-filter-view.query";
9
10
  import * as i2 from "../../store/nice-filter-view.service";
10
- import * as i3 from "@angular/material/bottom-sheet";
11
- import * as i4 from "@angular/material/icon";
12
- import * as i5 from "@angular/common";
13
- import * as i6 from "@angular/material/tooltip";
14
- import * as i7 from "@angular/material/button";
15
- import * as i8 from "@ngx-translate/core";
11
+ import * as i3 from "../../../../directive/selectable-list/store/selectable-list.service";
12
+ import * as i4 from "@angular/material/bottom-sheet";
13
+ import * as i5 from "@angular/material/icon";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "@angular/material/tooltip";
16
+ import * as i8 from "@angular/material/button";
17
+ import * as i9 from "@ngx-translate/core";
16
18
  export class NiceFilterExportButtonsComponent {
17
- constructor(icons, exportsSettings, query, service, bottomSheet) {
19
+ constructor(icons, exportsSettings, niceFilterViewQuery, niceFilterViewService, selectableListService, query, service, bottomSheet) {
18
20
  this.icons = icons;
19
21
  this.exportsSettings = exportsSettings;
22
+ this.niceFilterViewQuery = niceFilterViewQuery;
23
+ this.niceFilterViewService = niceFilterViewService;
24
+ this.selectableListService = selectableListService;
20
25
  this.query = query;
21
26
  this.service = service;
22
27
  this.bottomSheet = bottomSheet;
@@ -27,23 +32,46 @@ export class NiceFilterExportButtonsComponent {
27
32
  }
28
33
  clickExport() {
29
34
  const exports = [];
35
+ const subState = this.niceFilterViewQuery.getSubState("selectable");
36
+ let selected = [];
37
+ if (subState?.stateName) {
38
+ selected = this.selectableListService.query(subState.stateName).getAll().map((entity) => entity.id);
39
+ }
30
40
  if (this.exportsSettings.xlsx) {
31
41
  exports.push({
32
42
  type: "xlsx",
33
43
  onClickExport: () => this.clickXlsx()
34
44
  });
45
+ if (selected.length) {
46
+ exports.push({
47
+ type: "selected_xlsx",
48
+ onClickExport: () => this.clickXlsx(selected)
49
+ });
50
+ }
35
51
  }
36
52
  if (this.exportsSettings.csv) {
37
53
  exports.push({
38
54
  type: "csv",
39
55
  onClickExport: () => this.clickCsv()
40
56
  });
57
+ if (selected.length) {
58
+ exports.push({
59
+ type: "selected_csv",
60
+ onClickExport: () => this.clickCsv(selected)
61
+ });
62
+ }
41
63
  }
42
64
  if (this.exportsSettings.pdf) {
43
65
  exports.push({
44
66
  type: "pdf",
45
67
  onClickExport: () => this.clickPdf()
46
68
  });
69
+ if (selected.length) {
70
+ exports.push({
71
+ type: "selected_pdf",
72
+ onClickExport: () => this.clickPdf(selected)
73
+ });
74
+ }
47
75
  }
48
76
  this.bottomSheet.open(ExportBottomSheetComponent, {
49
77
  data: {
@@ -54,21 +82,21 @@ export class NiceFilterExportButtonsComponent {
54
82
  }
55
83
  });
56
84
  }
57
- clickXlsx() {
58
- this.service.downloadData("xlsx", this.downloadFileName);
85
+ clickXlsx(ids) {
86
+ this.service.downloadData("xlsx", this.downloadFileName, ids);
59
87
  }
60
- clickCsv() {
61
- this.service.downloadData("csv", this.downloadFileName);
88
+ clickCsv(ids) {
89
+ this.service.downloadData("csv", this.downloadFileName, ids);
62
90
  }
63
91
  clickPrint() {
64
92
  this.service.printData();
65
93
  }
66
- clickPdf() {
67
- this.service.downloadData("pdf", this.downloadFileName);
94
+ clickPdf(ids) {
95
+ this.service.downloadData("pdf", this.downloadFileName, ids);
68
96
  }
69
97
  }
70
- NiceFilterExportButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterExportButtonsComponent, deps: [{ token: FILTER_VIEW_ICONS }, { token: EXPORTS_SETTINGS }, { token: i1.NiceFilterViewQuery }, { token: i2.NiceFilterViewService }, { token: i3.MatBottomSheet }], target: i0.ɵɵFactoryTarget.Component });
71
- NiceFilterExportButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceFilterExportButtonsComponent, selector: "nice-filter-export-buttons, div[nice-filter-export-buttons]", inputs: { customExport: "customExport", downloadFileName: "downloadFileName", canPrint: "canPrint" }, ngImport: i0, template: "<button\n *ngIf=\"canPrint\"\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n</button>\n\n<button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i7.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
98
+ NiceFilterExportButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterExportButtonsComponent, deps: [{ token: FILTER_VIEW_ICONS }, { token: EXPORTS_SETTINGS }, { token: i1.NiceFilterViewQuery }, { token: i2.NiceFilterViewService }, { token: i3.NiceSelectableListService }, { token: i1.NiceFilterViewQuery }, { token: i2.NiceFilterViewService }, { token: i4.MatBottomSheet }], target: i0.ɵɵFactoryTarget.Component });
99
+ NiceFilterExportButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceFilterExportButtonsComponent, selector: "nice-filter-export-buttons, div[nice-filter-export-buttons]", inputs: { customExport: "customExport", downloadFileName: "downloadFileName", canPrint: "canPrint" }, ngImport: i0, template: "<button\n *ngIf=\"canPrint\"\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n</button>\n\n<button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
72
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterExportButtonsComponent, decorators: [{
73
101
  type: Component,
74
102
  args: [{ selector: "nice-filter-export-buttons, div[nice-filter-export-buttons]", encapsulation: ViewEncapsulation.None, template: "<button\n *ngIf=\"canPrint\"\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n</button>\n\n<button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n</button>\n" }]
@@ -78,11 +106,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
78
106
  }] }, { type: undefined, decorators: [{
79
107
  type: Inject,
80
108
  args: [EXPORTS_SETTINGS]
81
- }] }, { type: i1.NiceFilterViewQuery }, { type: i2.NiceFilterViewService }, { type: i3.MatBottomSheet }]; }, propDecorators: { customExport: [{
109
+ }] }, { type: i1.NiceFilterViewQuery }, { type: i2.NiceFilterViewService }, { type: i3.NiceSelectableListService }, { type: i1.NiceFilterViewQuery }, { type: i2.NiceFilterViewService }, { type: i4.MatBottomSheet }]; }, propDecorators: { customExport: [{
82
110
  type: Input
83
111
  }], downloadFileName: [{
84
112
  type: Input
85
113
  }], canPrint: [{
86
114
  type: Input
87
115
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25pY2UtZmlsdGVyLXZpZXcvY29tcG9uZW50cy9leHBvcnQtYnV0dG9ucy9leHBvcnQtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmljZS1maWx0ZXItdmlldy9jb21wb25lbnRzL2V4cG9ydC1idXR0b25zL2V4cG9ydC1idXR0b25zLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFHdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFRN0UsTUFBTSxPQUFPLGdDQUFnQztJQVl6QyxZQUNzQyxLQUEwQixFQUNqQixlQUErQixFQUNsRSxLQUEwQixFQUMxQixPQUE4QixFQUNyQixXQUEyQjtRQUpWLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBQ2pCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUNsRSxVQUFLLEdBQUwsS0FBSyxDQUFxQjtRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFmekMsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBR3BDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUcxQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCLGFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBUTFDLENBQUM7SUFFRyxXQUFXO1FBQ2QsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDVCxJQUFJLEVBQUUsTUFBTTtnQkFDWixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUN4QyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTthQUN2QyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTthQUN2QyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzlDLElBQUksRUFBRTtnQkFDRixnQkFBZ0IsRUFBRTtvQkFDZCxHQUFHLE9BQU87b0JBQ1YsR0FBRyxJQUFJLENBQUMsWUFBWTtpQkFDdkI7YUFDSjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs2SEFoRVEsZ0NBQWdDLGtCQWE3QixpQkFBaUIsYUFDakIsZ0JBQWdCO2lIQWRuQixnQ0FBZ0MseU1DZjdDLHNrQkFvQkE7MkZETGEsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNJLDZEQUE2RCxpQkFHeEQsaUJBQWlCLENBQUMsSUFBSTs7MEJBZWhDLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxnQkFBZ0I7K0lBWnJCLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0XCI7XG5pbXBvcnQgeyBFeHBvcnRCb3R0b21TaGVldENvbXBvbmVudCwgRXhwb3J0U3RyYXRlZ3kgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uaWNlLXVpLWtpdC52MlwiO1xuaW1wb3J0IHsgRXhwb3J0U2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1saXN0L21vZGVscy9leHBvcnQubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VCYXNlSWNvbk9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1saXN0L21vZGVscy9pY29ucy5tb2RlbFwiO1xuaW1wb3J0IHsgRVhQT1JUU19TRVRUSU5HUywgRklMVEVSX1ZJRVdfSUNPTlMgfSBmcm9tIFwiLi4vLi4vbmljZS1maWx0ZXItdmlldy5jb25zdGFudFwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdRdWVyeSB9IGZyb20gXCIuLi8uLi9zdG9yZS9uaWNlLWZpbHRlci12aWV3LnF1ZXJ5XCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyVmlld1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc3RvcmUvbmljZS1maWx0ZXItdmlldy5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtZmlsdGVyLWV4cG9ydC1idXR0b25zLCBkaXZbbmljZS1maWx0ZXItZXhwb3J0LWJ1dHRvbnNdXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiZXhwb3J0LWJ1dHRvbnMudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiZXhwb3J0LWJ1dHRvbnMuc3R5bGUuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VGaWx0ZXJFeHBvcnRCdXR0b25zQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FeHBvcnQ6IEV4cG9ydFN0cmF0ZWd5W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZU5hbWUgPSBcImRhdGFcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhblByaW50ID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsb2FkaW5nJCA9IHRoaXMucXVlcnkuc2VsZWN0TG9hZGluZygpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRklMVEVSX1ZJRVdfSUNPTlMpIHB1YmxpYyBpY29uczogTmljZUJhc2VJY29uT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChFWFBPUlRTX1NFVFRJTkdTKSBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydHNTZXR0aW5nczogRXhwb3J0U2V0dGluZ3MsXG4gICAgICAgIHByaXZhdGUgcXVlcnk6IE5pY2VGaWx0ZXJWaWV3UXVlcnksXG4gICAgICAgIHByaXZhdGUgc2VydmljZTogTmljZUZpbHRlclZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJvdHRvbVNoZWV0OiBNYXRCb3R0b21TaGVldFxuICAgICkge31cblxuICAgIHB1YmxpYyBjbGlja0V4cG9ydCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwb3J0cyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5leHBvcnRzU2V0dGluZ3MueGxzeCkge1xuICAgICAgICAgICAgZXhwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInhsc3hcIixcbiAgICAgICAgICAgICAgICBvbkNsaWNrRXhwb3J0OiAoKSA9PiB0aGlzLmNsaWNrWGxzeCgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5leHBvcnRzU2V0dGluZ3MuY3N2KSB7XG4gICAgICAgICAgICBleHBvcnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiY3N2XCIsXG4gICAgICAgICAgICAgICAgb25DbGlja0V4cG9ydDogKCkgPT4gdGhpcy5jbGlja0NzdigpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5leHBvcnRzU2V0dGluZ3MucGRmKSB7XG4gICAgICAgICAgICBleHBvcnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwicGRmXCIsXG4gICAgICAgICAgICAgICAgb25DbGlja0V4cG9ydDogKCkgPT4gdGhpcy5jbGlja1BkZigpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJvdHRvbVNoZWV0Lm9wZW4oRXhwb3J0Qm90dG9tU2hlZXRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBleHBvcnRTdHJhdGVnaWVzOiBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cG9ydHMsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY3VzdG9tRXhwb3J0XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tYbHN4KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWREYXRhKFwieGxzeFwiLCB0aGlzLmRvd25sb2FkRmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja0NzdigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkRGF0YShcImNzdlwiLCB0aGlzLmRvd25sb2FkRmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1ByaW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UucHJpbnREYXRhKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUGRmKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWREYXRhKFwicGRmXCIsIHRoaXMuZG93bmxvYWRGaWxlTmFtZSk7XG4gICAgfVxufVxuIiwiPGJ1dHRvblxuICAgICpuZ0lmPVwiY2FuUHJpbnRcIlxuICAgIChjbGljayk9XCJjbGlja1ByaW50KClcIlxuICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5wcmludCcgfCB0cmFuc2xhdGVcIlxuICAgIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiXG4gICAgbWF0LW1pbmktZmFiXG4+XG4gICAgPG1hdC1pY29uIFtzdmdJY29uXT1cImljb25zLnByaW50LnN2Z0ljb25cIj57eyBpY29ucy5wcmludC5tYXRJY29uIH19PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuXG48YnV0dG9uXG4gICAgKGNsaWNrKT1cImNsaWNrRXhwb3J0KClcIlxuICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5leHBvcnQnIHwgdHJhbnNsYXRlXCJcbiAgICBjbGFzcz1cImV4cG9ydC1idXR0b25cIlxuICAgIG1hdC1taW5pLWZhYlxuPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJpY29ucy5kb3dubG9hZC5zdmdJY29uXCI+e3sgaWNvbnMuZG93bmxvYWQubWF0SWNvbiB9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25pY2UtZmlsdGVyLXZpZXcvY29tcG9uZW50cy9leHBvcnQtYnV0dG9ucy9leHBvcnQtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmljZS1maWx0ZXItdmlldy9jb21wb25lbnRzL2V4cG9ydC1idXR0b25zL2V4cG9ydC1idXR0b25zLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFHdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUVBQXFFLENBQUM7Ozs7Ozs7Ozs7O0FBUWhILE1BQU0sT0FBTyxnQ0FBZ0M7SUFZekMsWUFDc0MsS0FBMEIsRUFDakIsZUFBK0IsRUFDbEUsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxxQkFBZ0QsRUFDaEQsS0FBMEIsRUFDMUIsT0FBOEIsRUFDckIsV0FBMkI7UUFQVixVQUFLLEdBQUws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SUFDUCxDQUFDO0lBRU0sU0FBUyxDQUFDLEdBQWU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQWU7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFlO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7NkhBbkdRLGdDQUFnQyxrQkFhN0IsaUJBQWlCLGFBQ2pCLGdCQUFnQjtpSEFkbkIsZ0NBQWdDLHlNQ2hCN0Msc2tCQW9CQTsyRkRKYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0ksNkRBQTZELGlCQUd4RCxpQkFBaUIsQ0FBQyxJQUFJOzswQkFlaEMsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs2UEFackIsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldFwiO1xuaW1wb3J0IHsgRXhwb3J0Qm90dG9tU2hlZXRDb21wb25lbnQsIEV4cG9ydFN0cmF0ZWd5IH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcbmltcG9ydCB7IEV4cG9ydFNldHRpbmdzIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbGlzdC9tb2RlbHMvZXhwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBOaWNlQmFzZUljb25PcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbGlzdC9tb2RlbHMvaWNvbnMubW9kZWxcIjtcbmltcG9ydCB7IEVYUE9SVFNfU0VUVElOR1MsIEZJTFRFUl9WSUVXX0lDT05TIH0gZnJvbSBcIi4uLy4uL25pY2UtZmlsdGVyLXZpZXcuY29uc3RhbnRcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJWaWV3UXVlcnkgfSBmcm9tIFwiLi4vLi4vc3RvcmUvbmljZS1maWx0ZXItdmlldy5xdWVyeVwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3N0b3JlL25pY2UtZmlsdGVyLXZpZXcuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZVNlbGVjdGFibGVMaXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9kaXJlY3RpdmUvc2VsZWN0YWJsZS1saXN0L3N0b3JlL3NlbGVjdGFibGUtbGlzdC5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtZmlsdGVyLWV4cG9ydC1idXR0b25zLCBkaXZbbmljZS1maWx0ZXItZXhwb3J0LWJ1dHRvbnNdXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiZXhwb3J0LWJ1dHRvbnMudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiZXhwb3J0LWJ1dHRvbnMuc3R5bGUuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VGaWx0ZXJFeHBvcnRCdXR0b25zQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FeHBvcnQ6IEV4cG9ydFN0cmF0ZWd5W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZU5hbWUgPSBcImRhdGFcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhblByaW50ID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsb2FkaW5nJCA9IHRoaXMucXVlcnkuc2VsZWN0TG9hZGluZygpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRklMVEVSX1ZJRVdfSUNPTlMpIHB1YmxpYyBpY29uczogTmljZUJhc2VJY29uT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChFWFBPUlRTX1NFVFRJTkdTKSBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydHNTZXR0aW5nczogRXhwb3J0U2V0dGluZ3MsXG4gICAgICAgIHByaXZhdGUgbmljZUZpbHRlclZpZXdRdWVyeTogTmljZUZpbHRlclZpZXdRdWVyeSxcbiAgICAgICAgcHJpdmF0ZSBuaWNlRmlsdGVyVmlld1NlcnZpY2U6IE5pY2VGaWx0ZXJWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZWxlY3RhYmxlTGlzdFNlcnZpY2U6IE5pY2VTZWxlY3RhYmxlTGlzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcXVlcnk6IE5pY2VGaWx0ZXJWaWV3UXVlcnksXG4gICAgICAgIHByaXZhdGUgc2VydmljZTogTmljZUZpbHRlclZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJvdHRvbVNoZWV0OiBNYXRCb3R0b21TaGVldFxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja0V4cG9ydCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwb3J0cyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHN1YlN0YXRlID0gdGhpcy5uaWNlRmlsdGVyVmlld1F1ZXJ5LmdldFN1YlN0YXRlPHsgc3RhdGVOYW1lOiBzdHJpbmcgfT4oXCJzZWxlY3RhYmxlXCIpO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZDogbnVtYmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3ViU3RhdGU/LnN0YXRlTmFtZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGFibGVMaXN0U2VydmljZS5xdWVyeShzdWJTdGF0ZS5zdGF0ZU5hbWUpLmdldEFsbCgpLm1hcCgoZW50aXR5KSA9PiBlbnRpdHkuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZXhwb3J0c1NldHRpbmdzLnhsc3gpIHtcbiAgICAgICAgICAgIGV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJ4bHN4XCIsXG4gICAgICAgICAgICAgICAgb25DbGlja0V4cG9ydDogKCkgPT4gdGhpcy5jbGlja1hsc3goKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNlbGVjdGVkX3hsc3hcIixcbiAgICAgICAgICAgICAgICAgICAgb25DbGlja0V4cG9ydDogKCkgPT4gdGhpcy5jbGlja1hsc3goc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZXhwb3J0c1NldHRpbmdzLmNzdikge1xuICAgICAgICAgICAgZXhwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImNzdlwiLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2tFeHBvcnQ6ICgpID0+IHRoaXMuY2xpY2tDc3YoKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNlbGVjdGVkX2NzdlwiLFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrRXhwb3J0OiAoKSA9PiB0aGlzLmNsaWNrQ3N2KHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4cG9ydHNTZXR0aW5ncy5wZGYpIHtcbiAgICAgICAgICAgIGV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJwZGZcIixcbiAgICAgICAgICAgICAgICBvbkNsaWNrRXhwb3J0OiAoKSA9PiB0aGlzLmNsaWNrUGRmKClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZWxlY3RlZF9wZGZcIixcbiAgICAgICAgICAgICAgICAgICAgb25DbGlja0V4cG9ydDogKCkgPT4gdGhpcy5jbGlja1BkZihzZWxlY3RlZClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYm90dG9tU2hlZXQub3BlbihFeHBvcnRCb3R0b21TaGVldENvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGV4cG9ydFN0cmF0ZWdpZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwb3J0cyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jdXN0b21FeHBvcnRcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1hsc3goaWRzPzogbnVtYmVyIFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5kb3dubG9hZERhdGEoXCJ4bHN4XCIsIHRoaXMuZG93bmxvYWRGaWxlTmFtZSwgaWRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tDc3YoaWRzPzogbnVtYmVyIFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5kb3dubG9hZERhdGEoXCJjc3ZcIiwgdGhpcy5kb3dubG9hZEZpbGVOYW1lLCBpZHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1ByaW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UucHJpbnREYXRhKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUGRmKGlkcz86IG51bWJlciBbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWREYXRhKFwicGRmXCIsIHRoaXMuZG93bmxvYWRGaWxlTmFtZSwgaWRzKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgKm5nSWY9XCJjYW5QcmludFwiXG4gICAgKGNsaWNrKT1cImNsaWNrUHJpbnQoKVwiXG4gICAgW2Rpc2FibGVkXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgIFttYXRUb29sdGlwXT1cIidnZW5lcmFsLnByaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCJcbiAgICBtYXQtbWluaS1mYWJcbj5cbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiaWNvbnMucHJpbnQuc3ZnSWNvblwiPnt7IGljb25zLnByaW50Lm1hdEljb24gfX08L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxidXR0b25cbiAgICAoY2xpY2spPVwiY2xpY2tFeHBvcnQoKVwiXG4gICAgW2Rpc2FibGVkXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgIFttYXRUb29sdGlwXT1cIidnZW5lcmFsLmV4cG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiXG4gICAgbWF0LW1pbmktZmFiXG4+XG4gICAgPG1hdC1pY29uIFtzdmdJY29uXT1cImljb25zLmRvd25sb2FkLnN2Z0ljb25cIj57eyBpY29ucy5kb3dubG9hZC5tYXRJY29uIH19PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19
@@ -6,6 +6,7 @@ import { NiceFilterQueryParamsDirective } from "./directives/query-params.direct
6
6
  import { NiceFilterViewComponent } from "./nice-filter-view.component";
7
7
  import { NiceFilterViewQuery } from "./store/nice-filter-view.query";
8
8
  import { NiceFilterViewService } from "./store/nice-filter-view.service";
9
+ import { NiceSelectableListDirective } from "../../directive/selectable-list/selectable-list.directive";
9
10
  import * as i0 from "@angular/core";
10
11
  export class NiceBaseFilterViewComponent {
11
12
  ngOnInit(autoLoad = true, { mode, loadConfig, configQueryParams } = {}) {
@@ -15,6 +16,10 @@ export class NiceBaseFilterViewComponent {
15
16
  this.autoLoad(autoLoad);
16
17
  this.loadConfig(loadConfig, configQueryParams);
17
18
  this.filterViewLoading$ = this.filterViewQuery.selectLoading();
19
+ this.filterViewCount$ = this.filterViewQuery.selectCount();
20
+ if (this.selectableListDirective) {
21
+ this.filterViewService.updateSubState("selectable", { stateName: this.selectableListDirective.state });
22
+ }
18
23
  }
19
24
  /**
20
25
  * Call the filter endpoint with the current filter parameters.
@@ -107,7 +112,7 @@ export class NiceBaseFilterViewComponent {
107
112
  }
108
113
  }
109
114
  NiceBaseFilterViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceBaseFilterViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
110
- NiceBaseFilterViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceBaseFilterViewComponent, selector: "ng-component", viewQueries: [{ propertyName: "filterViewService", first: true, predicate: NiceFilterViewComponent, descendants: true, read: NiceFilterViewService, static: true }, { propertyName: "filterViewQuery", first: true, predicate: NiceFilterViewComponent, descendants: true, read: NiceFilterViewQuery, static: true }, { propertyName: "queryParams", first: true, predicate: NiceFilterQueryParamsDirective, descendants: true, static: true }, { propertyName: "advancedFiltersButton", first: true, predicate: NiceAdvancedFiltersButtonComponent, descendants: true, static: true }, { propertyName: "advancedFilters", first: true, predicate: NiceAdvancedFiltersComponent, descendants: true, static: true }], ngImport: i0, template: ``, isInline: true });
115
+ NiceBaseFilterViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceBaseFilterViewComponent, selector: "ng-component", viewQueries: [{ propertyName: "filterViewService", first: true, predicate: NiceFilterViewComponent, descendants: true, read: NiceFilterViewService, static: true }, { propertyName: "filterViewQuery", first: true, predicate: NiceFilterViewComponent, descendants: true, read: NiceFilterViewQuery, static: true }, { propertyName: "queryParams", first: true, predicate: NiceFilterQueryParamsDirective, descendants: true, static: true }, { propertyName: "advancedFiltersButton", first: true, predicate: NiceAdvancedFiltersButtonComponent, descendants: true, static: true }, { propertyName: "advancedFilters", first: true, predicate: NiceAdvancedFiltersComponent, descendants: true, static: true }, { propertyName: "selectableListDirective", first: true, predicate: NiceSelectableListDirective, descendants: true, static: true }], ngImport: i0, template: ``, isInline: true });
111
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceBaseFilterViewComponent, decorators: [{
112
117
  type: Component,
113
118
  args: [{
@@ -128,5 +133,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
128
133
  }], advancedFilters: [{
129
134
  type: ViewChild,
130
135
  args: [NiceAdvancedFiltersComponent, { static: true }]
136
+ }], selectableListDirective: [{
137
+ type: ViewChild,
138
+ args: [NiceSelectableListDirective, { static: true }]
131
139
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmljZS1iYXNlLWZpbHRlci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uaWNlLWZpbHRlci12aWV3L25pY2UtYmFzZS1maWx0ZXItdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFXekUsTUFBTSxPQUFnQiwyQkFBMkI7SUFrQnRDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsS0FBb0MsRUFBRTtRQUN4RyxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUks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QkFBcUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RDtJQUNMLENBQUM7O3dIQWpJaUIsMkJBQTJCOzRHQUEzQiwyQkFBMkIsdUdBQ2xDLHVCQUF1QiwyQkFBVSxxQkFBcUIsNkVBR3RELHVCQUF1QiwyQkFBVSxtQkFBbUIseUVBR3BELDhCQUE4QixzR0FHOUIsa0NBQWtDLGdHQUdsQyw0QkFBNEIsOERBZjdCLEVBQUU7MkZBRU0sMkJBQTJCO2tCQUhoRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzhCQUdhLGlCQUFpQjtzQkFEMUIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2RSxlQUFlO3NCQUR4QixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXJFLFdBQVc7c0JBRHBCLFNBQVM7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxxQkFBcUI7c0JBRDlCLFNBQVM7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2RCxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBRdWVyeVBhcmFtcyB9IGZyb20gXCIuLi8uLi9hcGkvZmlsdGVyLmFwaVwiO1xuaW1wb3J0IHsgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwsIFJ1bGVNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2Jhc2UtbGlzdC9wcm92aWRlcnMvYmFzZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUFkdmFuY2VkRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWR2YW5jZWQtZmlsdGVycy9hZHZhbmNlZC1maWx0ZXJzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTmljZUFkdmFuY2VkRmlsdGVyc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWR2YW5jZWQtZmlsdGVycy9idXR0b24vYWR2YW5jZWQtZmlsdGVycy1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyUXVlcnlQYXJhbXNEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3F1ZXJ5LXBhcmFtcy5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4vbmljZS1maWx0ZXItdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJWaWV3UXVlcnkgfSBmcm9tIFwiLi9zdG9yZS9uaWNlLWZpbHRlci12aWV3LnF1ZXJ5XCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyVmlld1NlcnZpY2UgfSBmcm9tIFwiLi9zdG9yZS9uaWNlLWZpbHRlci12aWV3LnNlcnZpY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQmFzZUZpbHRlclZpZXdJbml0T3B0aW9ucyB7XG4gICAgbW9kZT86IFwicGFnaW5hdGVkXCIgfCBcImFjY3VtdWxhdGVkXCI7XG4gICAgbG9hZENvbmZpZz86IGJvb2xlYW47XG4gICAgY29uZmlnUXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBgXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5pY2VCYXNlRmlsdGVyVmlld0NvbXBvbmVudDxGaWx0ZXIgZXh0ZW5kcyBOaWNlRmlsdGVyU2VydmljZTxhbnk+ID0gTmljZUZpbHRlclNlcnZpY2U8YW55Pj4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoTmljZUZpbHRlclZpZXdDb21wb25lbnQsIHsgcmVhZDogTmljZUZpbHRlclZpZXdTZXJ2aWNlLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVmlld1NlcnZpY2U6IE5pY2VGaWx0ZXJWaWV3U2VydmljZTxGaWx0ZXI+O1xuXG4gICAgQFZpZXdDaGlsZChOaWNlRmlsdGVyVmlld0NvbXBvbmVudCwgeyByZWFkOiBOaWNlRmlsdGVyVmlld1F1ZXJ5LCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVmlld1F1ZXJ5OiBOaWNlRmlsdGVyVmlld1F1ZXJ5O1xuXG4gICAgQFZpZXdDaGlsZChOaWNlRmlsdGVyUXVlcnlQYXJhbXNEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIHF1ZXJ5UGFyYW1zOiBOaWNlRmlsdGVyUXVlcnlQYXJhbXNEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKE5pY2VBZHZhbmNlZEZpbHRlcnNCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGFkdmFuY2VkRmlsdGVyc0J1dHRvbjogTmljZUFkdmFuY2VkRmlsdGVyc0J1dHRvbkNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoTmljZUFkdmFuY2VkRmlsdGVyc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIGFkdmFuY2VkRmlsdGVyczogTmljZUFkdmFuY2VkRmlsdGVyc0NvbXBvbmVudDtcblxuICAgIHB1YmxpYyBmaWx0ZXJWaWV3TG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoYXV0b0xvYWQgPSB0cnVlLCB7IG1vZGUsIGxvYWRDb25maWcsIGNvbmZpZ1F1ZXJ5UGFyYW1zIH06IE5pY2VCYXNlRmlsdGVyVmlld0luaXRPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2Uuc2V0TW9kZShtb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXV0b0xvYWQoYXV0b0xvYWQpO1xuICAgICAgICB0aGlzLmxvYWRDb25maWcobG9hZENvbmZpZywgY29uZmlnUXVlcnlQYXJhbXMpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyVmlld0xvYWRpbmckID0gdGhpcy5maWx0ZXJWaWV3UXVlcnkuc2VsZWN0TG9hZGluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgdGhlIGZpbHRlciBlbmRwb2ludCB3aXRoIHRoZSBjdXJyZW50IGZpbHRlciBwYXJhbWV0ZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5maWx0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHRoZSBmaWx0ZXIgdmlldy4gVGhpcyB3aWxsIHN0b3AgY2FsbGluZyBhbnkgYXBpIHJvdXRlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHRoZSBmaWx0ZXIgdmlldy4gVGhpcyB3aWxsIHJlc3VtZSBjYWxsaW5nIGFueSBhcGkgcm91dGVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBlbmFibGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBsb2FkaW5nIHN0YXRlXG4gICAgICovXG4gICAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLnNldExvYWRpbmcobG9hZGluZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGEgc2V0IG9mIHJ1bGVzIHRoYXQgd29uJ3QgYmUgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgZmlsdGVyUGFyYW1ldGVycyBjb25maWcuXG4gICAgICogTk9URTogVGhlc2UgcnVsZXMgd2lsbCBiZSBpbmplY3RlZCBpbiBlYWNoIGZpbHRlciByZXF1ZXN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRCYXNlUnVsZXMocnVsZTogKFF1ZXJ5UnVsZU1vZGVsIHwgUXVlcnlNb2RlbClbXSwgcmVsb2FkID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLnNldEJhc2VSdWxlcyhydWxlLCByZWxvYWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IGFsbCBydWxlcyB3aXRoIGEgbmV3IHNldCBvZiBydWxlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UnVsZXMocnVsZXM6IFF1ZXJ5TW9kZWwgfCBRdWVyeU1vZGVsW10sIHJlbG9hZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5zZXRSdWxlcyhydWxlcyk7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgb3IgdXBkYXRlIGEgcnVsZS5cbiAgICAgKiBOT1RFOiBUaGlzIHdpbGwgb25seSBjaGVjayBmb3IgcnVsZXMgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJ1bGVzIGFycmF5IGluIHRoZSBjdXJyZW50IGZpbHRlclBhcmFtZXRlcnMuXG4gICAgICovXG4gICAgcHVibGljIHVwc2VydFJ1bGUoaWQ6IHN0cmluZywgbmV3UnVsZTogUnVsZU1vZGVsLCByZWxvYWQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS51cHNlcnRSdWxlKGlkLCBuZXdSdWxlKTtcbiAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZmlsdGVyKCk7XG4gICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIHJ1bGUuXG4gICAgICogTk9URTogVGhpcyB3aWxsIG9ubHkgY2hlY2sgZm9yIHJ1bGVzIGluIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBydWxlcyBhcnJheSBpbiB0aGUgY3VycmVudCBmaWx0ZXJQYXJhbWV0ZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSdWxlKGlkOiBzdHJpbmcsIHJlbG9hZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5yZW1vdmVSdWxlKGlkKTtcbiAgICAgICAgaWYgKHJlbG9hZCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5maWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXV0b0xvYWQoYXV0b0xvYWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBhdXRvTG9hZDogZGVmYXVsdEF1dG9Mb2FkIH0gPSB0aGlzLmZpbHRlclZpZXdRdWVyeS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIXRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgIGlmIChhdXRvTG9hZCAmJiBkZWZhdWx0QXV0b0xvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLmZpbHRlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLnNldEF1dG9Mb2FkKGF1dG9Mb2FkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYXV0b0xvYWQgJiYgZGVmYXVsdEF1dG9Mb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLnNldEF1dG9Mb2FkKGF1dG9Mb2FkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXMuaW5pdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWREYXRhKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZENvbmZpZyhsb2FkQ29uZmlnPzogYm9vbGVhbiwgY29uZmlnUXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcyk6IHZvaWQge1xuICAgICAgICBpZiAobG9hZENvbmZpZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5sb2FkQ29uZmlnKGNvbmZpZ1F1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2FkQ29uZmlnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWR2YW5jZWRGaWx0ZXJzQnV0dG9uIHx8IHRoaXMuYWR2YW5jZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLmxvYWRDb25maWcoY29uZmlnUXVlcnlQYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmljZS1iYXNlLWZpbHRlci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uaWNlLWZpbHRlci12aWV3L25pY2UtYmFzZS1maWx0ZXItdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7QUFXeEcsTUFBTSxPQUFnQiwyQkFBMkI7SUFzQnRDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsS0FBb0MsRUFBRTtRQUN4RyxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLGlCQUFp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QVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCx1QkFBdUI7c0JBRDlCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSBcIi4uLy4uL2FwaS9maWx0ZXIuYXBpXCI7XG5pbXBvcnQgeyBRdWVyeU1vZGVsLCBRdWVyeVJ1bGVNb2RlbCwgUnVsZU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9xdWVyeS5tb2RlbFwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vYmFzZS1saXN0L3Byb3ZpZGVycy9iYXNlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOaWNlQWR2YW5jZWRGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXJzL2FkdmFuY2VkLWZpbHRlcnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOaWNlQWR2YW5jZWRGaWx0ZXJzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXJzL2J1dHRvbi9hZHZhbmNlZC1maWx0ZXJzLWJ1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJRdWVyeVBhcmFtc0RpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvcXVlcnktcGFyYW1zLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9uaWNlLWZpbHRlci12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdRdWVyeSB9IGZyb20gXCIuL3N0b3JlL25pY2UtZmlsdGVyLXZpZXcucXVlcnlcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJWaWV3U2VydmljZSB9IGZyb20gXCIuL3N0b3JlL25pY2UtZmlsdGVyLXZpZXcuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZVNlbGVjdGFibGVMaXN0RGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZS9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5pY2VCYXNlRmlsdGVyVmlld0luaXRPcHRpb25zIHtcbiAgICBtb2RlPzogXCJwYWdpbmF0ZWRcIiB8IFwiYWNjdW11bGF0ZWRcIjtcbiAgICBsb2FkQ29uZmlnPzogYm9vbGVhbjtcbiAgICBjb25maWdRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmljZUJhc2VGaWx0ZXJWaWV3Q29tcG9uZW50PEZpbHRlciBleHRlbmRzIE5pY2VGaWx0ZXJTZXJ2aWNlPGFueT4gPSBOaWNlRmlsdGVyU2VydmljZTxhbnk+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChOaWNlRmlsdGVyVmlld0NvbXBvbmVudCwgeyByZWFkOiBOaWNlRmlsdGVyVmlld1NlcnZpY2UsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBmaWx0ZXJWaWV3U2VydmljZTogTmljZUZpbHRlclZpZXdTZXJ2aWNlPEZpbHRlcj47XG5cbiAgICBAVmlld0NoaWxkKE5pY2VGaWx0ZXJWaWV3Q29tcG9uZW50LCB7IHJlYWQ6IE5pY2VGaWx0ZXJWaWV3UXVlcnksIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBmaWx0ZXJWaWV3UXVlcnk6IE5pY2VGaWx0ZXJWaWV3UXVlcnk7XG5cbiAgICBAVmlld0NoaWxkKE5pY2VGaWx0ZXJRdWVyeVBhcmFtc0RpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgcXVlcnlQYXJhbXM6IE5pY2VGaWx0ZXJRdWVyeVBhcmFtc0RpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoTmljZUFkdmFuY2VkRmlsdGVyc0J1dHRvbkNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgYWR2YW5jZWRGaWx0ZXJzQnV0dG9uOiBOaWNlQWR2YW5jZWRGaWx0ZXJzQnV0dG9uQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChOaWNlQWR2YW5jZWRGaWx0ZXJzQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgYWR2YW5jZWRGaWx0ZXJzOiBOaWNlQWR2YW5jZWRGaWx0ZXJzQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChOaWNlU2VsZWN0YWJsZUxpc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBzZWxlY3RhYmxlTGlzdERpcmVjdGl2ZTogTmljZVNlbGVjdGFibGVMaXN0RGlyZWN0aXZlO1xuXG4gICAgcHVibGljIGZpbHRlclZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwdWJsaWMgZmlsdGVyVmlld0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gICAgcHVibGljIG5nT25Jbml0KGF1dG9Mb2FkID0gdHJ1ZSwgeyBtb2RlLCBsb2FkQ29uZmlnLCBjb25maWdRdWVyeVBhcmFtcyB9OiBOaWNlQmFzZUZpbHRlclZpZXdJbml0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLnNldE1vZGUobW9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmF1dG9Mb2FkKGF1dG9Mb2FkKTtcbiAgICAgICAgdGhpcy5sb2FkQ29uZmlnKGxvYWRDb25maWcsIGNvbmZpZ1F1ZXJ5UGFyYW1zKTtcblxuICAgICAgICB0aGlzLmZpbHRlclZpZXdMb2FkaW5nJCA9IHRoaXMuZmlsdGVyVmlld1F1ZXJ5LnNlbGVjdExvYWRpbmcoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3Q291bnQkID0gdGhpcy5maWx0ZXJWaWV3UXVlcnkuc2VsZWN0Q291bnQoKTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlTGlzdERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS51cGRhdGVTdWJTdGF0ZShcInNlbGVjdGFibGVcIiwgeyBzdGF0ZU5hbWU6IHRoaXMuc2VsZWN0YWJsZUxpc3REaXJlY3RpdmUuc3RhdGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIHRoZSBmaWx0ZXIgZW5kcG9pbnQgd2l0aCB0aGUgY3VycmVudCBmaWx0ZXIgcGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZmlsdGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZSB0aGUgZmlsdGVyIHZpZXcuIFRoaXMgd2lsbCBzdG9wIGNhbGxpbmcgYW55IGFwaSByb3V0ZXMuXG4gICAgICovXG4gICAgcHVibGljIGRpc2FibGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSB0aGUgZmlsdGVyIHZpZXcuIFRoaXMgd2lsbCByZXN1bWUgY2FsbGluZyBhbnkgYXBpIHJvdXRlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgbG9hZGluZyBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5zZXRMb2FkaW5nKGxvYWRpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhIHNldCBvZiBydWxlcyB0aGF0IHdvbid0IGJlIHNhdmVkIGluIHRoZSBjdXJyZW50IGZpbHRlclBhcmFtZXRlcnMgY29uZmlnLlxuICAgICAqIE5PVEU6IFRoZXNlIHJ1bGVzIHdpbGwgYmUgaW5qZWN0ZWQgaW4gZWFjaCBmaWx0ZXIgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0QmFzZVJ1bGVzKHJ1bGU6IChRdWVyeVJ1bGVNb2RlbCB8IFF1ZXJ5TW9kZWwpW10sIHJlbG9hZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5zZXRCYXNlUnVsZXMocnVsZSwgcmVsb2FkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBhbGwgcnVsZXMgd2l0aCBhIG5ldyBzZXQgb2YgcnVsZXMuXG4gICAgICovXG4gICAgcHVibGljIHNldFJ1bGVzKHJ1bGVzOiBRdWVyeU1vZGVsIHwgUXVlcnlNb2RlbFtdLCByZWxvYWQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2Uuc2V0UnVsZXMocnVsZXMpO1xuICAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLmZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIG9yIHVwZGF0ZSBhIHJ1bGUuXG4gICAgICogTk9URTogVGhpcyB3aWxsIG9ubHkgY2hlY2sgZm9yIHJ1bGVzIGluIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBydWxlcyBhcnJheSBpbiB0aGUgY3VycmVudCBmaWx0ZXJQYXJhbWV0ZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnRSdWxlKGlkOiBzdHJpbmcsIG5ld1J1bGU6IFJ1bGVNb2RlbCwgcmVsb2FkID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UudXBzZXJ0UnVsZShpZCwgbmV3UnVsZSk7XG4gICAgICAgaWYgKHJlbG9hZCkge1xuICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdTZXJ2aWNlLmZpbHRlcigpO1xuICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSBydWxlLlxuICAgICAqIE5PVEU6IFRoaXMgd2lsbCBvbmx5IGNoZWNrIGZvciBydWxlcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcnVsZXMgYXJyYXkgaW4gdGhlIGN1cnJlbnQgZmlsdGVyUGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUnVsZShpZDogc3RyaW5nLCByZWxvYWQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UucmVtb3ZlUnVsZShpZCk7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UuZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGF1dG9Mb2FkKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYXV0b0xvYWQ6IGRlZmF1bHRBdXRvTG9hZCB9ID0gdGhpcy5maWx0ZXJWaWV3UXVlcnkuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoYXV0b0xvYWQgJiYgZGVmYXVsdEF1dG9Mb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5maWx0ZXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5zZXRBdXRvTG9hZChhdXRvTG9hZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWF1dG9Mb2FkICYmIGRlZmF1bHRBdXRvTG9hZCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5zZXRBdXRvTG9hZChhdXRvTG9hZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmluaXQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkRGF0YSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDb25maWcobG9hZENvbmZpZz86IGJvb2xlYW4sIGNvbmZpZ1F1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGxvYWRDb25maWcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmlld1NlcnZpY2UubG9hZENvbmZpZyhjb25maWdRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9hZENvbmZpZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFkdmFuY2VkRmlsdGVyc0J1dHRvbiB8fCB0aGlzLmFkdmFuY2VkRmlsdGVycykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3U2VydmljZS5sb2FkQ29uZmlnKGNvbmZpZ1F1ZXJ5UGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,9 @@
1
+ import { __decorate, __metadata } from "tslib";
1
2
  import { Inject, Injectable } from "@angular/core";
3
+ import { transaction } from "@datorama/akita";
2
4
  import { FileUtils } from "@recursyve/nice-ui-kit.v2";
3
5
  import { firstValueFrom } from "rxjs";
6
+ import { FilterOperatorTypes } from "../../../models/query.model";
4
7
  import { NiceFilterService } from "../../base-list/providers/base-filter.service";
5
8
  import { NiceFilterViewStore } from "./nice-filter-view.store";
6
9
  import * as i0 from "@angular/core";
@@ -72,14 +75,30 @@ export class NiceFilterViewService {
72
75
  this.store.setLoading(false);
73
76
  }
74
77
  }
75
- async downloadData(type, downloadFileName) {
78
+ async downloadData(type, downloadFileName, ids) {
76
79
  const { filterParameters, disabled } = this.store.getValue();
77
80
  if (disabled) {
78
81
  return;
79
82
  }
83
+ const parameters = {
84
+ ...filterParameters,
85
+ rules: filterParameters?.rules ? [...filterParameters.rules] : []
86
+ };
87
+ if (ids?.length) {
88
+ parameters.rules.push({
89
+ condition: "and",
90
+ rules: [
91
+ {
92
+ id: "id",
93
+ operation: FilterOperatorTypes.In,
94
+ value: ids
95
+ }
96
+ ]
97
+ });
98
+ }
80
99
  try {
81
100
  this.store.setLoading(true);
82
- const result = await firstValueFrom(this.filterService.getFile(type, this.store.getParameters(filterParameters)));
101
+ const result = await firstValueFrom(this.filterService.getFile(type, this.store.getParameters(parameters)));
83
102
  FileUtils.downloadFile(`${downloadFileName}.${type}`, result);
84
103
  }
85
104
  catch (e) {
@@ -197,17 +216,27 @@ export class NiceFilterViewService {
197
216
  addValue(value, opts) {
198
217
  this.store.addValue(value, opts);
199
218
  }
219
+ addValues(value, opts) {
220
+ this.store.addValues(value, opts);
221
+ }
200
222
  upsertValue(value, key) {
201
223
  this.store.upsertValue(value, key);
202
224
  }
225
+ upsertValues(values, key) {
226
+ this.store.upsertValues(values, key);
227
+ }
203
228
  removeValue(value, key) {
204
229
  this.store.removeValue(value, key);
205
230
  }
231
+ removeValues(values, key) {
232
+ this.store.removeValues(values, key);
233
+ }
206
234
  resetResult(waitForNextFilter) {
207
235
  if (!waitForNextFilter) {
208
236
  this.store.update({
209
237
  filterResult: null
210
238
  });
239
+ this.store.set([]);
211
240
  }
212
241
  else {
213
242
  this.store.update({
@@ -218,10 +247,16 @@ export class NiceFilterViewService {
218
247
  }
219
248
  NiceFilterViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterViewService, deps: [{ token: i1.NiceFilterViewStore }, { token: NiceFilterService }], target: i0.ɵɵFactoryTarget.Injectable });
220
249
  NiceFilterViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterViewService });
250
+ __decorate([
251
+ transaction(),
252
+ __metadata("design:type", Function),
253
+ __metadata("design:paramtypes", [Boolean]),
254
+ __metadata("design:returntype", void 0)
255
+ ], NiceFilterViewService.prototype, "resetResult", null);
221
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceFilterViewService, decorators: [{
222
257
  type: Injectable
223
258
  }], ctorParameters: function () { return [{ type: i1.NiceFilterViewStore }, { type: undefined, decorators: [{
224
259
  type: Inject,
225
260
  args: [NiceFilterService]
226
- }] }]; } });
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmljZS1maWx0ZXItdmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25pY2UtZmlsdGVyLXZpZXcvc3RvcmUvbmljZS1maWx0ZXItdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFHL0QsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUNZLEtBQTBCLEVBRWxCLGFBQXFCO1FBRjdCLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBRWxCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBQ3RDLENBQUM7SUFFRyxLQUFLO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGNBQWMsQ0FBSSxJQUFZLEVBQUUsS0FBUTtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixTQUFTLEVBQUU7Z0JBQ1AsR0FBRyxLQUFLLENBQUMsU0FBUztnQkFDbEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLO2FBQ2hCO1NBQ0os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LEVBQUUsR0FBWTtRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxpQkFBMEI7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ3JCLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDZCxXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7O2tIQTVPUSxxQkFBcUIscURBR2xCLGlCQUFpQjtzSEFIcEIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUlGLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFkZEVudGl0aWVzT3B0aW9ucyB9IGZyb20gXCJAZGF0b3JhbWEvYWtpdGEvc3JjL2xpYi9hZGRFbnRpdGllc1wiO1xuaW1wb3J0IHsgRmlsZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9maWx0ZXIuYXBpXCI7XG5pbXBvcnQgeyBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwsIFJ1bGVNb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Jhc2UtbGlzdC9wcm92aWRlcnMvYmFzZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdTdG9yZSB9IGZyb20gXCIuL25pY2UtZmlsdGVyLXZpZXcuc3RvcmVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VGaWx0ZXJWaWV3U2VydmljZTxGaWx0ZXIgZXh0ZW5kcyBOaWNlRmlsdGVyU2VydmljZTxhbnk+ID0gTmljZUZpbHRlclNlcnZpY2U8YW55Pj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHN0b3JlOiBOaWNlRmlsdGVyVmlld1N0b3JlLFxuICAgICAgICBASW5qZWN0KE5pY2VGaWx0ZXJTZXJ2aWNlKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU2VydmljZTogRmlsdGVyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTdWJTdGF0ZTxUPihuYW1lOiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIHN1YlN0YXRlczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnN1YlN0YXRlcyxcbiAgICAgICAgICAgICAgICBbbmFtZV06IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5hYmxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9Mb2FkKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHsgYXV0b0xvYWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcobG9hZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1vZGUobW9kZTogXCJwYWdpbmF0ZWRcIiB8IFwiYWNjdW11bGF0ZWRcIik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7IG1vZGUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWRDb25maWcoY29uZmlnUXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRGaWx0ZXJDb25maWdMb2FkaW5nKHRydWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyQ29uZmlnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbHRlckNvbmZpZyh7IHBhcmFtczogY29uZmlnUXVlcnlQYXJhbXMgfSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlckNvbmZpZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbHRlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzLCBkaXNhYmxlZCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMuc3RvcmUuZ2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzKSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRFcnJvcihlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWREYXRhKHR5cGU6IHN0cmluZywgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycywgZGlzYWJsZWQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbGUodHlwZSwgdGhpcy5zdG9yZS5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMuZG93bmxvYWRGaWxlKGAke2Rvd25sb2FkRmlsZU5hbWV9LiR7dHlwZX1gLCByZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwcmludERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycywgZGlzYWJsZWQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldFByaW50YWJsZUh0bWwodGhpcy5zdG9yZS5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMub3BlblByaW50YWJsZVdpbmRvdyhyZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHJlbG9hZCBzaG93IG5vdCBiZSBwYXNzZWQsIGFuZCB0aGUgY2FsbGVyIHNob3VsZCBpbnN0ZWFkIGNhbGwgYGZpbHRlcigpYCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAgIHB1YmxpYyBzZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgcmVsb2FkOiBib29sZWFuKTogdm9pZDtcbiAgICBwdWJsaWMgc2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwpOiB2b2lkO1xuICAgIHB1YmxpYyBzZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgcmVsb2FkPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycyk7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHN0YXJ0OiAwXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVzZXRSZXN1bHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7IHF1ZXJ5UGFyYW1zIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRCYXNlUnVsZXMocnVsZTogKFF1ZXJ5UnVsZU1vZGVsIHwgUXVlcnlNb2RlbClbXSwgcmVsb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGJhc2VSdWxlczogcnVsZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFJ1bGVzKHJ1bGVzOiBRdWVyeU1vZGVsIHwgUXVlcnlNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShydWxlcykpIHtcbiAgICAgICAgICAgIHJ1bGVzID0gW3J1bGVzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdSdWxlczogRmlsdGVyUGFyYW1ldGVyc01vZGVsID0ge1xuICAgICAgICAgICAgb3JkZXI6IGZpbHRlclBhcmFtZXRlcnMub3JkZXIsXG4gICAgICAgICAgICBmYWxsYmFja09yZGVyOiBmaWx0ZXJQYXJhbWV0ZXJzLmZhbGxiYWNrT3JkZXIsXG4gICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgIGxlbmd0aDogZmlsdGVyUGFyYW1ldGVycy5sZW5ndGgsXG4gICAgICAgICAgICBkYXRhOiBmaWx0ZXJQYXJhbWV0ZXJzLmRhdGEsXG4gICAgICAgICAgICBydWxlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhuZXdSdWxlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwc2VydFJ1bGUoaWQ6IHN0cmluZywgbmV3UnVsZTogUnVsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50UXVlcnkgPSBmaWx0ZXJQYXJhbWV0ZXJzLnJ1bGVzPy5bMF07XG4gICAgICAgIGNvbnN0IHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsID0ge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAuLi5uZXdSdWxlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHF1ZXJ5OiBRdWVyeU1vZGVsID0geyBydWxlczogW3J1bGVdLCBjb25kaXRpb246IFwiYW5kXCIgfTtcbiAgICAgICAgaWYgKCFjdXJyZW50UXVlcnkgfHwgY3VycmVudFF1ZXJ5LnJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRSdWxlcyhxdWVyeSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvbGRSdWxlID0gY3VycmVudFF1ZXJ5LnJ1bGVzLmZpbmQoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0gaWQpIGFzIFF1ZXJ5UnVsZU1vZGVsO1xuICAgICAgICBsZXQgbmV3UnVsZXMgPSBjdXJyZW50UXVlcnkucnVsZXM7XG4gICAgICAgIGlmIChvbGRSdWxlKSB7XG4gICAgICAgICAgICBpZiAobmV3UnVsZSkge1xuICAgICAgICAgICAgICAgIC8vIEFycmF5IHJlcGxhY2VcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFF1ZXJ5LnJ1bGVzLnNsaWNlKDAsIGN1cnJlbnRRdWVyeS5ydWxlcy5pbmRleE9mKG9sZFJ1bGUpKSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFF1ZXJ5LnJ1bGVzLnNsaWNlKGN1cnJlbnRRdWVyeS5ydWxlcy5pbmRleE9mKG9sZFJ1bGUpICsgMSwgY3VycmVudFF1ZXJ5LnJ1bGVzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UnVsZXMgPSBbLi4ubmV3UnVsZXMsIHJ1bGVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UnVsZXMoe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBjdXJyZW50UXVlcnkuY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXM6IG5ld1J1bGVzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVSdWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRRdWVyeSA9IGZpbHRlclBhcmFtZXRlcnMucnVsZXM/LlswXTtcbiAgICAgICAgY29uc3Qgb2xkUnVsZSA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maW5kKChyKSA9PiAociBhcyBRdWVyeVJ1bGVNb2RlbCkuaWQgPT09IGlkKSBhcyBRdWVyeVJ1bGVNb2RlbDtcbiAgICAgICAgaWYgKCFvbGRSdWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdSdWxlcyA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICB0aGlzLnNldFJ1bGVzKHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY3VycmVudFF1ZXJ5LmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzOiBuZXdSdWxlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVmFsdWUodmFsdWU6IGFueSwgb3B0cz86IEFkZEVudGl0aWVzT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLmFkZFZhbHVlKHZhbHVlLCBvcHRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBzZXJ0VmFsdWUodmFsdWU6IGFueSwga2V5Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBzZXJ0VmFsdWUodmFsdWUsIGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVZhbHVlKHZhbHVlOiBhbnksIGtleT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnJlbW92ZVZhbHVlKHZhbHVlLCBrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldFJlc3VsdCh3YWl0Rm9yTmV4dEZpbHRlcjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXdhaXRGb3JOZXh0RmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgZmlsdGVyUmVzdWx0OiBudWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgICAgICByZXNldFJlc3VsdDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
261
+ }] }]; }, propDecorators: { resetResult: [] } });
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmljZS1maWx0ZXItdmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25pY2UtZmlsdGVyLXZpZXcvc3RvcmUvbmljZS1maWx0ZXItdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLG1CQUFtQixFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFHL0QsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUNZLEtBQTBCLEVBRWxCLGFBQXFCO1FBRjdCLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBRWxCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBRXpDLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGNBQWMsQ0FBSSxJQUFZLEVBQUUsS0FBUTtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMs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QUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsWUFBWSxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEI7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNkLFdBQVcsRUFBRSxJQUFJO2FBQ3BCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7a0hBOVFRLHFCQUFxQixxREFHbEIsaUJBQWlCO3NIQUhwQixxQkFBcUI7QUFrUTlCO0lBQUMsV0FBVyxFQUFFOzs7O3dEQVliOzJGQTlRUSxxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUlGLE1BQU07MkJBQUMsaUJBQWlCOzRDQWdRdEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0cmFuc2FjdGlvbiB9IGZyb20gXCJAZGF0b3JhbWEvYWtpdGFcIjtcbmltcG9ydCB7IEFkZEVudGl0aWVzT3B0aW9ucyB9IGZyb20gXCJAZGF0b3JhbWEvYWtpdGEvc3JjL2xpYi9hZGRFbnRpdGllc1wiO1xuaW1wb3J0IHsgRmlsZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9maWx0ZXIuYXBpXCI7XG5pbXBvcnQgeyBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3BlcmF0b3JUeXBlcywgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwsIFJ1bGVNb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Jhc2UtbGlzdC9wcm92aWRlcnMvYmFzZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUZpbHRlclZpZXdTdG9yZSB9IGZyb20gXCIuL25pY2UtZmlsdGVyLXZpZXcuc3RvcmVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VGaWx0ZXJWaWV3U2VydmljZTxGaWx0ZXIgZXh0ZW5kcyBOaWNlRmlsdGVyU2VydmljZTxhbnk+ID0gTmljZUZpbHRlclNlcnZpY2U8YW55Pj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHN0b3JlOiBOaWNlRmlsdGVyVmlld1N0b3JlLFxuICAgICAgICBASW5qZWN0KE5pY2VGaWx0ZXJTZXJ2aWNlKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU2VydmljZTogRmlsdGVyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTdWJTdGF0ZTxUPihuYW1lOiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIHN1YlN0YXRlczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnN1YlN0YXRlcyxcbiAgICAgICAgICAgICAgICBbbmFtZV06IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5hYmxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9Mb2FkKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHsgYXV0b0xvYWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcobG9hZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1vZGUobW9kZTogXCJwYWdpbmF0ZWRcIiB8IFwiYWNjdW11bGF0ZWRcIik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7IG1vZGUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWRDb25maWcoY29uZmlnUXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRGaWx0ZXJDb25maWdMb2FkaW5nKHRydWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyQ29uZmlnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbHRlckNvbmZpZyh7IHBhcmFtczogY29uZmlnUXVlcnlQYXJhbXMgfSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlckNvbmZpZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbHRlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzLCBkaXNhYmxlZCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMuc3RvcmUuZ2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzKSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRFcnJvcihlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWREYXRhKHR5cGU6IHN0cmluZywgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nLCBpZHM/OiBudW1iZXJbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMsIGRpc2FibGVkIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBydWxlczogZmlsdGVyUGFyYW1ldGVycz8ucnVsZXMgPyBbLi4uZmlsdGVyUGFyYW1ldGVycy5ydWxlc10gOiBbXVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcGFyYW1ldGVycy5ydWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBGaWx0ZXJPcGVyYXRvclR5cGVzLkluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbGUodHlwZSwgdGhpcy5zdG9yZS5nZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMuZG93bmxvYWRGaWxlKGAke2Rvd25sb2FkRmlsZU5hbWV9LiR7dHlwZX1gLCByZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwcmludERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycywgZGlzYWJsZWQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldFByaW50YWJsZUh0bWwodGhpcy5zdG9yZS5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMub3BlblByaW50YWJsZVdpbmRvdyhyZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHJlbG9hZCBzaG93IG5vdCBiZSBwYXNzZWQsIGFuZCB0aGUgY2FsbGVyIHNob3VsZCBpbnN0ZWFkIGNhbGwgYGZpbHRlcigpYCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAgIHB1YmxpYyBzZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgcmVsb2FkOiBib29sZWFuKTogdm9pZDtcbiAgICBwdWJsaWMgc2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwpOiB2b2lkO1xuICAgIHB1YmxpYyBzZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgcmVsb2FkPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycyk7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHN0YXJ0OiAwXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVzZXRSZXN1bHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7IHF1ZXJ5UGFyYW1zIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRCYXNlUnVsZXMocnVsZTogKFF1ZXJ5UnVsZU1vZGVsIHwgUXVlcnlNb2RlbClbXSwgcmVsb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGJhc2VSdWxlczogcnVsZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFJ1bGVzKHJ1bGVzOiBRdWVyeU1vZGVsIHwgUXVlcnlNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShydWxlcykpIHtcbiAgICAgICAgICAgIHJ1bGVzID0gW3J1bGVzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdSdWxlczogRmlsdGVyUGFyYW1ldGVyc01vZGVsID0ge1xuICAgICAgICAgICAgb3JkZXI6IGZpbHRlclBhcmFtZXRlcnMub3JkZXIsXG4gICAgICAgICAgICBmYWxsYmFja09yZGVyOiBmaWx0ZXJQYXJhbWV0ZXJzLmZhbGxiYWNrT3JkZXIsXG4gICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgIGxlbmd0aDogZmlsdGVyUGFyYW1ldGVycy5sZW5ndGgsXG4gICAgICAgICAgICBkYXRhOiBmaWx0ZXJQYXJhbWV0ZXJzLmRhdGEsXG4gICAgICAgICAgICBydWxlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhuZXdSdWxlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwc2VydFJ1bGUoaWQ6IHN0cmluZywgbmV3UnVsZTogUnVsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50UXVlcnkgPSBmaWx0ZXJQYXJhbWV0ZXJzLnJ1bGVzPy5bMF07XG4gICAgICAgIGNvbnN0IHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsID0ge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAuLi5uZXdSdWxlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHF1ZXJ5OiBRdWVyeU1vZGVsID0geyBydWxlczogW3J1bGVdLCBjb25kaXRpb246IFwiYW5kXCIgfTtcbiAgICAgICAgaWYgKCFjdXJyZW50UXVlcnkgfHwgY3VycmVudFF1ZXJ5LnJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRSdWxlcyhxdWVyeSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvbGRSdWxlID0gY3VycmVudFF1ZXJ5LnJ1bGVzLmZpbmQoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0gaWQpIGFzIFF1ZXJ5UnVsZU1vZGVsO1xuICAgICAgICBsZXQgbmV3UnVsZXMgPSBjdXJyZW50UXVlcnkucnVsZXM7XG4gICAgICAgIGlmIChvbGRSdWxlKSB7XG4gICAgICAgICAgICBpZiAobmV3UnVsZSkge1xuICAgICAgICAgICAgICAgIC8vIEFycmF5IHJlcGxhY2VcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFF1ZXJ5LnJ1bGVzLnNsaWNlKDAsIGN1cnJlbnRRdWVyeS5ydWxlcy5pbmRleE9mKG9sZFJ1bGUpKSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFF1ZXJ5LnJ1bGVzLnNsaWNlKGN1cnJlbnRRdWVyeS5ydWxlcy5pbmRleE9mKG9sZFJ1bGUpICsgMSwgY3VycmVudFF1ZXJ5LnJ1bGVzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UnVsZXMgPSBbLi4ubmV3UnVsZXMsIHJ1bGVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UnVsZXMoe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBjdXJyZW50UXVlcnkuY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXM6IG5ld1J1bGVzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVSdWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRRdWVyeSA9IGZpbHRlclBhcmFtZXRlcnMucnVsZXM/LlswXTtcbiAgICAgICAgY29uc3Qgb2xkUnVsZSA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maW5kKChyKSA9PiAociBhcyBRdWVyeVJ1bGVNb2RlbCkuaWQgPT09IGlkKSBhcyBRdWVyeVJ1bGVNb2RlbDtcbiAgICAgICAgaWYgKCFvbGRSdWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdSdWxlcyA9IGN1cnJlbnRRdWVyeS5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICB0aGlzLnNldFJ1bGVzKHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY3VycmVudFF1ZXJ5LmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzOiBuZXdSdWxlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVmFsdWUodmFsdWU6IGFueSwgb3B0cz86IEFkZEVudGl0aWVzT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLmFkZFZhbHVlKHZhbHVlLCBvcHRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVmFsdWVzKHZhbHVlOiBhbnlbXSwgb3B0cz86IEFkZEVudGl0aWVzT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLmFkZFZhbHVlcyh2YWx1ZSwgb3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwc2VydFZhbHVlKHZhbHVlOiBhbnksIGtleT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwc2VydFZhbHVlKHZhbHVlLCBrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cHNlcnRWYWx1ZXModmFsdWVzOiBhbnlbXSwga2V5Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBzZXJ0VmFsdWVzKHZhbHVlcywga2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsdWUodmFsdWU6IGFueVtdLCBrZXk/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5yZW1vdmVWYWx1ZSh2YWx1ZSwga2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsdWVzKHZhbHVlczogYW55W10sIGtleT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnJlbW92ZVZhbHVlcyh2YWx1ZXMsIGtleSk7XG4gICAgfVxuXG4gICAgQHRyYW5zYWN0aW9uKClcbiAgICBwdWJsaWMgcmVzZXRSZXN1bHQod2FpdEZvck5leHRGaWx0ZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF3YWl0Rm9yTmV4dEZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlclJlc3VsdDogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldChbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgcmVzZXRSZXN1bHQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19