@updevs/components 1.0.0-alpha.96 → 1.0.0-alpha.97
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/esm2022/table/components/filter-row/filter-row.component.mjs +12 -19
- package/esm2022/table/components/search-section/search-section.component.mjs +16 -28
- package/esm2022/table/services/current-search-request.service.mjs +254 -0
- package/esm2022/table/table.component.mjs +25 -34
- package/esm2022/table/tools/filters.tools.mjs +3 -3
- package/fesm2022/updevs-components-table.mjs +297 -77
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/package.json +19 -19
- package/table/components/filter-row/filter-row.component.d.ts +2 -2
- package/table/components/search-section/search-section.component.d.ts +4 -8
- package/table/services/current-search-request.service.d.ts +164 -0
- package/table/table.component.d.ts +4 -9
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, signal, inject, input,
|
|
1
|
+
import { Component, signal, inject, input, HostBinding, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { TextService } from '@updevs/sdk';
|
|
3
3
|
import { FilterTypeEnum } from '@updevs/sdk/stores';
|
|
4
4
|
import { BaseComponent } from '@updevs/sdk/layout';
|
|
5
5
|
import { UpdTableConfigService } from '../../services/upd-table-config.service';
|
|
6
6
|
import { FiltersOperandsService } from '../../abstractions/filters-operands.service';
|
|
7
|
+
import { CurrentSearchRequestService } from '../../services/current-search-request.service';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@updevs/components/button";
|
|
9
10
|
import * as i2 from "@updevs/components/form-controls/input";
|
|
@@ -14,7 +15,6 @@ export class FilterRowComponent extends BaseComponent {
|
|
|
14
15
|
this.wrapperClasses = 'd-flex gap-2';
|
|
15
16
|
this.removed = new EventEmitter();
|
|
16
17
|
this.FilterTypeEnum = FilterTypeEnum;
|
|
17
|
-
this.activeFilters = model.required();
|
|
18
18
|
this.rowIndex = input.required();
|
|
19
19
|
this.columns = input.required();
|
|
20
20
|
this.isDisabled = input.required();
|
|
@@ -31,6 +31,7 @@ export class FilterRowComponent extends BaseComponent {
|
|
|
31
31
|
this.configService = inject(UpdTableConfigService);
|
|
32
32
|
this.filtersOperandsService = inject(FiltersOperandsService);
|
|
33
33
|
this.textService = inject(TextService);
|
|
34
|
+
this.currentSearchRequestService = inject(CurrentSearchRequestService);
|
|
34
35
|
}
|
|
35
36
|
get fieldType() {
|
|
36
37
|
return this.currentField()?.objectData || FilterTypeEnum.Text;
|
|
@@ -96,38 +97,30 @@ export class FilterRowComponent extends BaseComponent {
|
|
|
96
97
|
else {
|
|
97
98
|
this.comparisonOperatorOptions.set([]);
|
|
98
99
|
}
|
|
99
|
-
this.
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), {
|
|
101
|
+
column: this.currentField()?.value,
|
|
102
|
+
type: this.fieldType,
|
|
103
|
+
dataType: dataType
|
|
102
104
|
});
|
|
103
105
|
}
|
|
104
106
|
onSelectOperand(item) {
|
|
105
107
|
this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));
|
|
106
108
|
this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);
|
|
107
|
-
this.
|
|
108
|
-
curr[this.rowIndex()].operandConfig = this.currentOperand();
|
|
109
|
-
return [...curr];
|
|
110
|
-
});
|
|
109
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), { operand: this.currentOperand()?.operand });
|
|
111
110
|
if (this.fieldType === FilterTypeEnum.Select) {
|
|
112
111
|
const values = this.filterFields()?.find(f => f.name === this.currentField()?.value)?.allowedValues || [];
|
|
113
112
|
this.fieldAllowedValues.set(values.map(v => ({ value: v.key, text: v.value })));
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
115
|
updateValue(value) {
|
|
117
|
-
this.
|
|
118
|
-
curr[this.rowIndex()].value = value;
|
|
119
|
-
return [...curr];
|
|
120
|
-
});
|
|
116
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), { value });
|
|
121
117
|
}
|
|
122
118
|
removeFilterItem() {
|
|
123
|
-
this.
|
|
124
|
-
curr.splice(this.rowIndex(), 1);
|
|
125
|
-
return [...curr];
|
|
126
|
-
});
|
|
119
|
+
this.currentSearchRequestService.removeFilterByIndex(this.rowIndex());
|
|
127
120
|
this.removed.emit();
|
|
128
121
|
}
|
|
129
122
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: {
|
|
123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: { rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, filterFields: { classPropertyName: "filterFields", publicName: "filterFields", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField?.value\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\"\n (selectedItem)=\"onSelectOperand($event)\" [value]=\"selectedOperand?.value\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (FilterTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (FilterTypeEnum.Date) {\n\n }\n @case (FilterTypeEnum.Select) {\n <upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldAllowedValues()\"\n (selectedItem)=\"updateValue($event?.value)\" [value]=\"selectedValue\">\n </upd-select>\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "value"], outputs: ["valueChange", "selectedItem"] }] }); }
|
|
131
124
|
}
|
|
132
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, decorators: [{
|
|
133
126
|
type: Component,
|
|
@@ -138,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
138
131
|
}], removed: [{
|
|
139
132
|
type: Output
|
|
140
133
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXJvdy9maWx0ZXItcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9maWx0ZXItcm93L2ZpbHRlci1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFXckYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFMckQ7O1FBTTBCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRW5DLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRSxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUVoQyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDcEQsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUIsQ0FBQztRQUM5QyxlQUFVLEdBQUcsS0FBSyxD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QztZQUNwQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0EzSVEsa0JBQWtCO2tHQUFsQixrQkFBa0IsaW9DQ25CL0Isc2hEQWlDK0U7OzJGRGRsRSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksZ0JBQWdCOzhCQUtKLGNBQWM7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTztnQkFFRCxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwsIGluamVjdCwgT25Jbml0LCBpbnB1dCwgbW9kZWwsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFNlcnZpY2UgfSBmcm9tICdAdXBkZXZzL3Nkayc7XG5pbXBvcnQgeyBCYXNlU2VhcmNoU3RvcmUsIEZpbHRlclR5cGVFbnVtIH0gZnJvbSAnQHVwZGV2cy9zZGsvc3RvcmVzJztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvZm9ybS1jb250cm9scy9zZWxlY3QnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5cbmltcG9ydCB7IFVwZFRhYmxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VwZC10YWJsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2ZpbHRlcnMtb3BlcmFuZHMuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgQmFzZUNvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2Jhc2UtY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlck9wZXJhbmRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLW9wZXJhbmQuY29uZmlnJztcbmltcG9ydCB7IEZpbHRlckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1maWVsZC5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1maWx0ZXItcm93JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2ZpbHRlci1yb3cuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclJvd0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSB3cmFwcGVyQ2xhc3NlcyA9ICdkLWZsZXggZ2FwLTInO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEZpbHRlclR5cGVFbnVtID0gRmlsdGVyVHlwZUVudW07XG5cbiAgICBhY3RpdmVGaWx0ZXJzID0gbW9kZWwucmVxdWlyZWQ8RmlsdGVySXRlbU1vZGVsW10+KCk7XG4gICAgcm93SW5kZXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIGlzRGlzYWJsZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHN0b3JlID0gaW5wdXQ8QmFzZVNlYXJjaFN0b3JlPigpO1xuICAgIGZpbHRlckZpZWxkcyA9IGlucHV0PEZpbHRlckZpZWxkQ29uZmlnW10+KCk7XG4gICAgY3VycmVudEZpbHRlciA9IGlucHV0PEZpbHRlckl0ZW1Nb2RlbD4oKTtcbiAgICBjdXJyZW50RmllbGQgPSBzaWduYWw8T3B0aW9uYWxUeXBlPFNlbGVjdEl0ZW0+Pih1bmRlZmluZWQpO1xuICAgIGN1cnJlbnRPcGVyYW5kID0gc2lnbmFsPE9wdGlvbmFsVHlwZTxGaWx0ZXJPcGVyYW5kQ29uZmlnPj4odW5kZWZpbmVkKTtcbiAgICBmaWVsZHNPcHRpb25zID0gc2lnbmFsPFNlbGVjdEl0ZW1bXT4oW10pO1xuICAgIGNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMgPSBzaWduYWw8U2VsZWN0SXRlbVtdPihbXSk7XG4gICAgZmllbGRBbGxvd2VkVmFsdWVzID0gc2lnbmFsPFNlbGVjdEl0ZW1bXT4oW10pO1xuICAgIGlzVmFsdWVTZWN0aW9uRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICAgIGdldCBmaWVsZFR5cGUoKTogRmlsdGVyVHlwZUVudW0ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmllbGQoKT8ub2JqZWN0RGF0YSB8fCBGaWx0ZXJUeXBlRW51bS5UZXh0O1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWRGaWVsZCgpOiBPcHRpb25hbFR5cGU8U2VsZWN0SXRlbT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyKCk7XG4gICAgICAgIHJldHVybiAhIWN1cnJlbnRGaWx0ZXI/Lm5hbWVcbiAgICAgICAgICAgID8gdGhpcy5maWVsZHNPcHRpb25zKCkuZmluZChmID0+IGYudmFsdWUgPT09IGN1cnJlbnRGaWx0ZXIubmFtZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWRPcGVyYW5kKCk6IE9wdGlvbmFsVHlwZTxTZWxlY3RJdGVtPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLmN1cnJlbnRGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuICEhY3VycmVudEZpbHRlcj8ubmFtZVxuICAgICAgICAgICAgPyB0aGlzLmNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMoKS5maW5kKGNvID0+IGNvLnZhbHVlID09PSBjdXJyZW50RmlsdGVyLm9wZXJhbmRDb25maWc/Lm9wZXJhbmQpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0IHNlbGVjdGVkVmFsdWUoKTogT3B0aW9uYWxUeXBlPGFueT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyKCk7XG4gICAgICAgIHJldHVybiAhIWN1cnJlbnRGaWx0ZXI/Lm5hbWUgPyBjdXJyZW50RmlsdGVyLnZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3VycmVudE9wZXJhbmRzOiBGaWx0ZXJPcGVyYW5kQ29uZmlnW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoVXBkVGFibGVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gUHJpb3JpdHkgMTogVXNlci1kZWZpbmVkIGZpbHRlciBmaWVsZHNcbiAgICAgICAgaWYgKCEhdGhpcy5maWx0ZXJGaWVsZHMoKSAmJiB0aGlzLmZpbHRlckZpZWxkcygpIS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkc09wdGlvbnMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRmllbGRzKCkhLm1hcChmID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dChmLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0RGF0YTogZi50eXBlXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByaW9yaXR5IDI6IFNlcnZlci1sb2FkZWQgZmllbGRzXG4gICAgICAgIGVsc2UgaWYgKCEhdGhpcy5zdG9yZSgpICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc2hvdWxkTG9hZEZpZWxkc0Zyb21TZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUoKSEuZ2V0RmlsdGVyYWJsZUZpZWxkcygpLnN1YnNjcmliZShmaWVsZHMgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkc09wdGlvbnMuc2V0KGZpZWxkcy5tYXAoZiA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZi5uYW1lISxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZi5kZXNjcmlwdGlvbiEsXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdERhdGE6IGYudHlwZVxuICAgICAgICAgICAgICAgIH0pKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJpb3JpdHkgMzogRmFsbGJhY2sgdG8gY29sdW1uc1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzT3B0aW9ucy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zKCkuZmlsdGVyKGMgPT4gISFjLnRpdGxlKS5tYXAoYyA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dChjLnRpdGxlKSxcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0RGF0YTogYy5kYXRhVHlwZVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMuc2VsZWN0ZWRGaWVsZCkge1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEZpZWxkKHRoaXMuc2VsZWN0ZWRGaWVsZCk7XG5cbiAgICAgICAgICAgIGlmICghIXRoaXMuc2VsZWN0ZWRPcGVyYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdE9wZXJhbmQodGhpcy5zZWxlY3RlZE9wZXJhbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISF0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEZpZWxkKGl0ZW0/OiBTZWxlY3RJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudEZpZWxkLnNldChpdGVtKTtcblxuICAgICAgICBjb25zdCBkYXRhVHlwZSA9IGl0ZW0/Lm9iamVjdERhdGE7XG5cbiAgICAgICAgaWYgKCEhZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE9wZXJhbmRzID0gdGhpcy5maWx0ZXJzT3BlcmFuZHNTZXJ2aWNlLmdldE9wZXJhbmRzKGRhdGFUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3BlcmFuZHMubWFwKG8gPT4gKHsgdmFsdWU6IG8ub3BlcmFuZCwgdGV4dDogdGhpcy50ZXh0U2VydmljZS5nZXRUZXh0KG8udGV4dCksIGxpc3RJdGVtOiB7IGljb246IG8uaWNvbiB9IH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucy5zZXQoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnVwZGF0ZShjdXJyID0+IHtcbiAgICAgICAgICAgIGN1cnJbdGhpcy5yb3dJbmRleCgpXS5uYW1lID0gdGhpcy5jdXJyZW50RmllbGQoKT8udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE9wZXJhbmQoaXRlbT86IFNlbGVjdEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3BlcmFuZC5zZXQodGhpcy5jdXJyZW50T3BlcmFuZHMuZmluZChjbyA9PiBjby5vcGVyYW5kID09PSBpdGVtPy52YWx1ZSkpO1xuICAgICAgICB0aGlzLmlzVmFsdWVTZWN0aW9uRW5hYmxlZC5zZXQoISF0aGlzLmN1cnJlbnRPcGVyYW5kKCk/LnJlcXVpcmVzVmFsdWUpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyclt0aGlzLnJvd0luZGV4KCldLm9wZXJhbmRDb25maWcgPSB0aGlzLmN1cnJlbnRPcGVyYW5kKCk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJdO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IEZpbHRlclR5cGVFbnVtLlNlbGVjdCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5maWx0ZXJGaWVsZHMoKT8uZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5jdXJyZW50RmllbGQoKT8udmFsdWUpPy5hbGxvd2VkVmFsdWVzIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5maWVsZEFsbG93ZWRWYWx1ZXMuc2V0KHZhbHVlcy5tYXAodiA9PiAoeyB2YWx1ZTogdi5rZXksIHRleHQ6IHYudmFsdWUgfSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyW3RoaXMucm93SW5kZXgoKV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbHRlckl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyLnNwbGljZSh0aGlzLnJvd0luZGV4KCksIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jdXJyXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KCk7XG4gICAgfVxufVxuIiwiPHVwZC1zZWxlY3QgY2xhc3M9XCJ3LTEwMFwiIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiIFtpdGVtc109XCJmaWVsZHNPcHRpb25zKClcIiAoc2VsZWN0ZWRJdGVtKT1cIm9uU2VsZWN0RmllbGQoJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkRmllbGQ/LnZhbHVlXCI+XG48L3VwZC1zZWxlY3Q+XG48dXBkLXNlbGVjdCBjbGFzcz1cInctMTAwXCIgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgW2l0ZW1zXT1cImNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMoKVwiXG4gICAgKHNlbGVjdGVkSXRlbSk9XCJvblNlbGVjdE9wZXJhbmQoJGV2ZW50KVwiIFt2YWx1ZV09XCJzZWxlY3RlZE9wZXJhbmQ/LnZhbHVlXCI+XG48L3VwZC1zZWxlY3Q+XG5cbkBpZiAoaXNWYWx1ZVNlY3Rpb25FbmFibGVkKCkpIHtcbiAgICBAc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICAgICAgQGNhc2UgKEZpbHRlclR5cGVFbnVtLk51bWJlcikge1xuICAgICAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgdHlwZT1cIm51bWJlclwiICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiPjwvdXBkLWlucHV0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoRmlsdGVyVHlwZUVudW0uU2VsZWN0KSB7XG4gICAgICAgICAgICA8dXBkLXNlbGVjdCBjbGFzcz1cInctMTAwXCIgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgW2l0ZW1zXT1cImZpZWxkQWxsb3dlZFZhbHVlcygpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKT1cInVwZGF0ZVZhbHVlKCRldmVudD8udmFsdWUpXCIgW3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIj5cbiAgICAgICAgICAgIDwvdXBkLXNlbGVjdD5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIiB0eXBlPVwidGV4dFwiICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiPjwvdXBkLWlucHV0PlxuICAgICAgICB9XG4gICAgfVxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGgtMTAwXCIgZGlzYWJsZWQ+XG4gICAgPC9kaXY+XG59XG5cbjx1cGQtYnV0dG9uIGNsYXNzPVwiZmxleC1zaHJpbmstMVwiIGNvbG9yU3R5bGU9XCJkYW5nZXJcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbaXNPdXRsaW5lXT1cInRydWVcIiBbaXNJY29uXT1cInRydWVcIlxuICAgIFtpY29uTW9kZWxdPVwie3RhYmxlckljb246J3gnfVwiIChjbGlja2VkKT1cInJlbW92ZUZpbHRlckl0ZW0oKVwiPjwvdXBkLWJ1dHRvbj4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXJvdy9maWx0ZXItcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9maWx0ZXItcm93L2ZpbHRlci1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBUyxXQUFXLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBbUIsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBS3JGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQU81RixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQUxyRDs7UUFNMEIsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFFbkMsWUFBTyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBFLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRWhDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDcEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDOUMsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFR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LFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQW5JUSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0OEJDcEIvQixzaERBaUMrRTs7MkZEYmxFLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxnQkFBZ0I7OEJBS0osY0FBYztzQkFBbkMsV0FBVzt1QkFBQyxPQUFPO2dCQUVELE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHNpZ25hbCwgaW5qZWN0LCBPbkluaXQsIGlucHV0LCBtb2RlbCwgSG9zdEJpbmRpbmcsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IEJhc2VTZWFyY2hTdG9yZSwgRmlsdGVyVHlwZUVudW0gfSBmcm9tICdAdXBkZXZzL3Nkay9zdG9yZXMnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL3NlbGVjdCc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgVXBkVGFibGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXBkLXRhYmxlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvZmlsdGVycy1vcGVyYW5kcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyT3BlcmFuZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItb3BlcmFuZC5jb25maWcnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWZpZWxkLmNvbmZpZyc7XG5pbXBvcnQgeyBDdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jdXJyZW50LXNlYXJjaC1yZXF1ZXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1maWx0ZXItcm93JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2ZpbHRlci1yb3cuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclJvd0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSB3cmFwcGVyQ2xhc3NlcyA9ICdkLWZsZXggZ2FwLTInO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEZpbHRlclR5cGVFbnVtID0gRmlsdGVyVHlwZUVudW07XG5cbiAgICByb3dJbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgICBjb2x1bW5zID0gaW5wdXQucmVxdWlyZWQ8QmFzZUNvbHVtbk1vZGVsW10+KCk7XG4gICAgaXNEaXNhYmxlZCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgc3RvcmUgPSBpbnB1dDxCYXNlU2VhcmNoU3RvcmU+KCk7XG4gICAgZmlsdGVyRmllbGRzID0gaW5wdXQ8RmlsdGVyRmllbGRDb25maWdbXT4oKTtcbiAgICBjdXJyZW50RmlsdGVyID0gaW5wdXQ8RmlsdGVySXRlbU1vZGVsPigpO1xuICAgIGN1cnJlbnRGaWVsZCA9IHNpZ25hbDxPcHRpb25hbFR5cGU8U2VsZWN0SXRlbT4+KHVuZGVmaW5lZCk7XG4gICAgY3VycmVudE9wZXJhbmQgPSBzaWduYWw8T3B0aW9uYWxUeXBlPEZpbHRlck9wZXJhbmRDb25maWc+Pih1bmRlZmluZWQpO1xuICAgIGZpZWxkc09wdGlvbnMgPSBzaWduYWw8U2VsZWN0SXRlbVtdPihbXSk7XG4gICAgY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucyA9IHNpZ25hbDxTZWxlY3RJdGVtW10+KFtdKTtcbiAgICBmaWVsZEFsbG93ZWRWYWx1ZXMgPSBzaWduYWw8U2VsZWN0SXRlbVtdPihbXSk7XG4gICAgaXNWYWx1ZVNlY3Rpb25FbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gICAgZ2V0IGZpZWxkVHlwZSgpOiBGaWx0ZXJUeXBlRW51bSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWVsZCgpPy5vYmplY3REYXRhIHx8IEZpbHRlclR5cGVFbnVtLlRleHQ7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZEZpZWxkKCk6IE9wdGlvbmFsVHlwZTxTZWxlY3RJdGVtPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLmN1cnJlbnRGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuICEhY3VycmVudEZpbHRlcj8ubmFtZVxuICAgICAgICAgICAgPyB0aGlzLmZpZWxkc09wdGlvbnMoKS5maW5kKGYgPT4gZi52YWx1ZSA9PT0gY3VycmVudEZpbHRlci5uYW1lKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZE9wZXJhbmQoKTogT3B0aW9uYWxUeXBlPFNlbGVjdEl0ZW0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuY3VycmVudEZpbHRlcigpO1xuICAgICAgICByZXR1cm4gISFjdXJyZW50RmlsdGVyPy5uYW1lXG4gICAgICAgICAgICA/IHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucygpLmZpbmQoY28gPT4gY28udmFsdWUgPT09IGN1cnJlbnRGaWx0ZXIub3BlcmFuZENvbmZpZz8ub3BlcmFuZClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWRWYWx1ZSgpOiBPcHRpb25hbFR5cGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLmN1cnJlbnRGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuICEhY3VycmVudEZpbHRlcj8ubmFtZSA/IGN1cnJlbnRGaWx0ZXIudmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjdXJyZW50T3BlcmFuZHM6IEZpbHRlck9wZXJhbmRDb25maWdbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZSA9IGluamVjdChVcGRUYWJsZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyc09wZXJhbmRzU2VydmljZSA9IGluamVjdChGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRTZXJ2aWNlID0gaW5qZWN0KFRleHRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRTZWFyY2hSZXF1ZXN0U2VydmljZSA9IGluamVjdChDdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFByaW9yaXR5IDE6IFVzZXItZGVmaW5lZCBmaWx0ZXIgZmllbGRzXG4gICAgICAgIGlmICghIXRoaXMuZmlsdGVyRmllbGRzKCkgJiYgdGhpcy5maWx0ZXJGaWVsZHMoKSEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNPcHRpb25zLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckZpZWxkcygpIS5tYXAoZiA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQoZi5sYWJlbCksXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdERhdGE6IGYudHlwZVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmlvcml0eSAyOiBTZXJ2ZXItbG9hZGVkIGZpZWxkc1xuICAgICAgICBlbHNlIGlmICghIXRoaXMuc3RvcmUoKSAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnNob3VsZExvYWRGaWVsZHNGcm9tU2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlKCkhLmdldEZpbHRlcmFibGVGaWVsZHMoKS5zdWJzY3JpYmUoZmllbGRzID0+XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZHNPcHRpb25zLnNldChmaWVsZHMubWFwKGYgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGYubmFtZSEsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGYuZGVzY3JpcHRpb24hLFxuICAgICAgICAgICAgICAgICAgICBvYmplY3REYXRhOiBmLnR5cGVcbiAgICAgICAgICAgICAgICB9KSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByaW9yaXR5IDM6IEZhbGxiYWNrIHRvIGNvbHVtbnNcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkc09wdGlvbnMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucygpLmZpbHRlcihjID0+ICEhYy50aXRsZSkubWFwKGMgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQoYy50aXRsZSksXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdERhdGE6IGMuZGF0YVR5cGVcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISF0aGlzLnNlbGVjdGVkRmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3RGaWVsZCh0aGlzLnNlbGVjdGVkRmllbGQpO1xuXG4gICAgICAgICAgICBpZiAoISF0aGlzLnNlbGVjdGVkT3BlcmFuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RPcGVyYW5kKHRoaXMuc2VsZWN0ZWRPcGVyYW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RGaWVsZChpdGVtPzogU2VsZWN0SXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWVsZC5zZXQoaXRlbSk7XG5cbiAgICAgICAgY29uc3QgZGF0YVR5cGUgPSBpdGVtPy5vYmplY3REYXRhO1xuXG4gICAgICAgIGlmICghIWRhdGFUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPcGVyYW5kcyA9IHRoaXMuZmlsdGVyc09wZXJhbmRzU2VydmljZS5nZXRPcGVyYW5kcyhkYXRhVHlwZSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE9wZXJhbmRzLm1hcChvID0+ICh7IHZhbHVlOiBvLm9wZXJhbmQsIHRleHQ6IHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dChvLnRleHQpLCBsaXN0SXRlbTogeyBpY29uOiBvLmljb24gfSB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMuc2V0KFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnVwZGF0ZUZpbHRlckJ5SW5kZXgodGhpcy5yb3dJbmRleCgpLCB7XG4gICAgICAgICAgICBjb2x1bW46IHRoaXMuY3VycmVudEZpZWxkKCk/LnZhbHVlLFxuICAgICAgICAgICAgdHlwZTogdGhpcy5maWVsZFR5cGUsXG4gICAgICAgICAgICBkYXRhVHlwZTogZGF0YVR5cGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RPcGVyYW5kKGl0ZW0/OiBTZWxlY3RJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudE9wZXJhbmQuc2V0KHRoaXMuY3VycmVudE9wZXJhbmRzLmZpbmQoY28gPT4gY28ub3BlcmFuZCA9PT0gaXRlbT8udmFsdWUpKTtcbiAgICAgICAgdGhpcy5pc1ZhbHVlU2VjdGlvbkVuYWJsZWQuc2V0KCEhdGhpcy5jdXJyZW50T3BlcmFuZCgpPy5yZXF1aXJlc1ZhbHVlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UudXBkYXRlRmlsdGVyQnlJbmRleCh0aGlzLnJvd0luZGV4KCksIHsgb3BlcmFuZDogdGhpcy5jdXJyZW50T3BlcmFuZCgpPy5vcGVyYW5kIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU2VsZWN0KSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZpbHRlckZpZWxkcygpPy5maW5kKGYgPT4gZi5uYW1lID09PSB0aGlzLmN1cnJlbnRGaWVsZCgpPy52YWx1ZSk/LmFsbG93ZWRWYWx1ZXMgfHwgW107XG4gICAgICAgICAgICB0aGlzLmZpZWxkQWxsb3dlZFZhbHVlcy5zZXQodmFsdWVzLm1hcCh2ID0+ICh7IHZhbHVlOiB2LmtleSwgdGV4dDogdi52YWx1ZSB9KSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsdWUodmFsdWU/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UudXBkYXRlRmlsdGVyQnlJbmRleCh0aGlzLnJvd0luZGV4KCksIHsgdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsdGVySXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UucmVtb3ZlRmlsdGVyQnlJbmRleCh0aGlzLnJvd0luZGV4KCkpO1xuICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjx1cGQtc2VsZWN0IGNsYXNzPVwidy0xMDBcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbaXRlbXNdPVwiZmllbGRzT3B0aW9ucygpXCIgKHNlbGVjdGVkSXRlbSk9XCJvblNlbGVjdEZpZWxkKCRldmVudClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RlZEZpZWxkPy52YWx1ZVwiPlxuPC91cGQtc2VsZWN0PlxuPHVwZC1zZWxlY3QgY2xhc3M9XCJ3LTEwMFwiIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiIFtpdGVtc109XCJjb21wYXJpc29uT3BlcmF0b3JPcHRpb25zKClcIlxuICAgIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3RPcGVyYW5kKCRldmVudClcIiBbdmFsdWVdPVwic2VsZWN0ZWRPcGVyYW5kPy52YWx1ZVwiPlxuPC91cGQtc2VsZWN0PlxuXG5AaWYgKGlzVmFsdWVTZWN0aW9uRW5hYmxlZCgpKSB7XG4gICAgQHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIEBjYXNlIChGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgICAgIDx1cGQtaW5wdXQgd3JhcHBlckNsYXNzZXM9XCJ3LTEwMFwiIGN1c3RvbUNsYXNzZXM9XCJoLTEwMFwiIHR5cGU9XCJudW1iZXJcIiAodmFsdWVDaGFuZ2UpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIj48L3VwZC1pbnB1dD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuXG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKEZpbHRlclR5cGVFbnVtLlNlbGVjdCkge1xuICAgICAgICAgICAgPHVwZC1zZWxlY3QgY2xhc3M9XCJ3LTEwMFwiIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiIFtpdGVtc109XCJmaWVsZEFsbG93ZWRWYWx1ZXMoKVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQ/LnZhbHVlKVwiIFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCI+XG4gICAgICAgICAgICA8L3VwZC1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgdHlwZT1cInRleHRcIiAodmFsdWVDaGFuZ2UpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIj48L3VwZC1pbnB1dD5cbiAgICAgICAgfVxuICAgIH1cbn0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBoLTEwMFwiIGRpc2FibGVkPlxuICAgIDwvZGl2PlxufVxuXG48dXBkLWJ1dHRvbiBjbGFzcz1cImZsZXgtc2hyaW5rLTFcIiBjb2xvclN0eWxlPVwiZGFuZ2VyXCIgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgW2lzT3V0bGluZV09XCJ0cnVlXCIgW2lzSWNvbl09XCJ0cnVlXCJcbiAgICBbaWNvbk1vZGVsXT1cInt0YWJsZXJJY29uOid4J31cIiAoY2xpY2tlZCk9XCJyZW1vdmVGaWx0ZXJJdGVtKClcIj48L3VwZC1idXR0b24+Il19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Component, input, HostBinding, signal, computed,
|
|
1
|
+
import { Component, input, HostBinding, signal, computed, effect, inject } from '@angular/core';
|
|
2
2
|
import { BaseComponent } from '@updevs/sdk/layout';
|
|
3
3
|
import { Subject, distinctUntilChanged, debounceTime } from 'rxjs';
|
|
4
4
|
import { FilterTools } from '../../tools/filters.tools';
|
|
5
5
|
import { FiltersOperandsService } from '../../abstractions/filters-operands.service';
|
|
6
|
+
import { CurrentSearchRequestService } from '../../services/current-search-request.service';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common";
|
|
8
9
|
import * as i2 from "@jsverse/transloco";
|
|
@@ -14,36 +15,29 @@ export class SearchSectionComponent extends BaseComponent {
|
|
|
14
15
|
constructor() {
|
|
15
16
|
super();
|
|
16
17
|
this.wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';
|
|
17
|
-
this.searchRequest = model.required();
|
|
18
|
-
this.hasChanges = model.required();
|
|
19
18
|
this.columns = input.required();
|
|
20
|
-
this.isSearching = input.required();
|
|
21
|
-
this.searchRequestSubject = input.required();
|
|
22
19
|
this.config = input.required();
|
|
23
20
|
this.actionsTpl = input();
|
|
24
|
-
this.activeFilters =
|
|
21
|
+
this.activeFilters = computed(() => FilterTools.convertToFilterItem(this.currentSearchRequestService.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands()));
|
|
25
22
|
this.isFilterSectionOpen = signal(false);
|
|
26
23
|
this.canApplyFilters = computed(() => this.activeFilters().length > 0
|
|
27
24
|
&& this.activeFilters().every(af => !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)));
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
30
|
-
this.badgeConfig = computed(() => this.visibleFiltersCount() > 0
|
|
25
|
+
this.canPerformActions = computed(() => this.canApplyFilters() && !this.currentSearchRequestService.isSearching());
|
|
26
|
+
this.badgeConfig = computed(() => this.currentSearchRequestService.visibleFilterCount() > 0
|
|
31
27
|
? ({
|
|
32
28
|
isNotification: true,
|
|
33
29
|
isPill: true,
|
|
34
30
|
bgColor: 'primary-lt',
|
|
35
|
-
text: { text: this.
|
|
31
|
+
text: { text: this.currentSearchRequestService.visibleFilterCount().toString(), isTranslated: true }
|
|
36
32
|
})
|
|
37
33
|
: undefined);
|
|
38
34
|
this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined);
|
|
39
35
|
this.searchSubject = new Subject();
|
|
40
36
|
this.filtersOperandsService = inject(FiltersOperandsService);
|
|
37
|
+
this.currentSearchRequestService = inject(CurrentSearchRequestService);
|
|
41
38
|
effect(() => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.activeFilters.set([]);
|
|
39
|
+
// Auto-close filter section when all filters are removed
|
|
40
|
+
if (this.currentSearchRequestService.visibleFilterCount() === 0 && this.isFilterSectionOpen()) {
|
|
47
41
|
this.isFilterSectionOpen.set(false);
|
|
48
42
|
}
|
|
49
43
|
}, { allowSignalWrites: true });
|
|
@@ -51,17 +45,14 @@ export class SearchSectionComponent extends BaseComponent {
|
|
|
51
45
|
ngOnInit() {
|
|
52
46
|
const searchSub = this.searchSubject
|
|
53
47
|
.pipe(distinctUntilChanged(), debounceTime(this.config().searchInputDebounceTime))
|
|
54
|
-
.subscribe(term => this.
|
|
55
|
-
...this.searchRequest(),
|
|
56
|
-
description: term
|
|
57
|
-
}));
|
|
48
|
+
.subscribe(term => this.currentSearchRequestService.setDescription(term));
|
|
58
49
|
this.addSubscriptions(searchSub);
|
|
59
50
|
}
|
|
60
51
|
search() {
|
|
61
|
-
this.
|
|
62
|
-
...this.searchRequest(),
|
|
52
|
+
this.currentSearchRequestService.patchSearchRequest({
|
|
63
53
|
filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().filterFields, this.config().columns)
|
|
64
54
|
});
|
|
55
|
+
this.currentSearchRequestService.triggerSearch();
|
|
65
56
|
}
|
|
66
57
|
toggleFilterSection() {
|
|
67
58
|
if (this.activeFilters().length === 0) {
|
|
@@ -76,19 +67,16 @@ export class SearchSectionComponent extends BaseComponent {
|
|
|
76
67
|
this.search();
|
|
77
68
|
}
|
|
78
69
|
addEmptyFilterRow() {
|
|
79
|
-
this.
|
|
80
|
-
curr.push({});
|
|
81
|
-
return [...curr];
|
|
82
|
-
});
|
|
70
|
+
this.currentSearchRequestService.addFilter({});
|
|
83
71
|
}
|
|
84
72
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SearchSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SearchSectionComponent, selector: "upd-search-section", inputs: {
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SearchSectionComponent, selector: "upd-search-section", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, actionsTpl: { classPropertyName: "actionsTpl", publicName: "actionsTpl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.wrapperClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"\n [isAppendButton]=\"true\" (valueChange)=\"searchSubject.next($event)\"\n [value]=\"currentSearchRequestService.searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\"\n [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row.name; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [columns]=\"columns()\" [rowIndex]=\"i\"\n (removed)=\"onRowRemoved()\" [isDisabled]=\"currentSearchRequestService.isSearching()\"\n [filterFields]=\"config().filterFields\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\"\n (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "directive", type: i5.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "component", type: i6.FilterRowComponent, selector: "upd-filter-row", inputs: ["rowIndex", "columns", "isDisabled", "store", "filterFields", "currentFilter"], outputs: ["removed"] }] }); }
|
|
86
74
|
}
|
|
87
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SearchSectionComponent, decorators: [{
|
|
88
76
|
type: Component,
|
|
89
|
-
args: [{ selector: 'upd-search-section', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"\n [isAppendButton]=\"true\" (valueChange)=\"searchSubject.next($event)\"
|
|
77
|
+
args: [{ selector: 'upd-search-section', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"\n [isAppendButton]=\"true\" (valueChange)=\"searchSubject.next($event)\"\n [value]=\"currentSearchRequestService.searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\"\n [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row.name; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [columns]=\"columns()\" [rowIndex]=\"i\"\n (removed)=\"onRowRemoved()\" [isDisabled]=\"currentSearchRequestService.isSearching()\"\n [filterFields]=\"config().filterFields\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\"\n (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>" }]
|
|
90
78
|
}], ctorParameters: () => [], propDecorators: { wrapperClass: [{
|
|
91
79
|
type: HostBinding,
|
|
92
80
|
args: ['class']
|
|
93
81
|
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7OztBQU9yRixNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBYTtJQWtDeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxDVSxpQkFBWSxHQUFHLHVEQUF1RCxDQUFDO1FBRXBGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBc0IsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUss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LEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E3RlEsc0JBQXNCO2tHQUF0QixzQkFBc0Isd3FDQ2xCbkMsMG1FQXVDZTs7MkZEckJGLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxvQkFBb0I7d0RBS1IsWUFBWTtzQkFBakMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgVGVtcGxhdGVSZWYsIEhvc3RCaW5kaW5nLCBzaWduYWwsIGNvbXB1dGVkLCBtb2RlbCwgT25Jbml0LCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoUmVxdWVzdE1vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvc3RvcmVzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlLCBCZ0NvbG9yU3R5bGVUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgQmFkZ2VDb25maWcgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGaWx0ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVDb25maWdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyVG9vbHMgfSBmcm9tICcuLi8uLi90b29scy9maWx0ZXJzLnRvb2xzJztcbmltcG9ydCB7IEJhc2VDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9iYXNlLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2ZpbHRlcnMtb3BlcmFuZHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLXNlYXJjaC1zZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VjdGlvbkNvbXBvbmVudDxUPiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSB3cmFwcGVyQ2xhc3MgPSAnY2FyZC1ib2R5IGJvcmRlci1ib3R0b20gcHktMyBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTInO1xuXG4gICAgcmVhZG9ubHkgc2VhcmNoUmVxdWVzdCA9IG1vZGVsLnJlcXVpcmVkPFNlYXJjaFJlcXVlc3RNb2RlbD4oKTtcbiAgICByZWFkb25seSBoYXNDaGFuZ2VzID0gbW9kZWwucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICByZWFkb25seSBjb2x1bW5zID0gaW5wdXQucmVxdWlyZWQ8QmFzZUNvbHVtbk1vZGVsW10+KCk7XG4gICAgcmVhZG9ubHkgaXNTZWFyY2hpbmcgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHJlYWRvbmx5IHNlYXJjaFJlcXVlc3RTdWJqZWN0ID0gaW5wdXQucmVxdWlyZWQ8U3ViamVjdDxTZWFyY2hSZXF1ZXN0TW9kZWw+PigpO1xuICAgIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPFRhYmxlQ29uZmlnTW9kZWw8VD4+KCk7XG4gICAgcmVhZG9ubHkgYWN0aW9uc1RwbCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gICAgcmVhZG9ubHkgYWN0aXZlRmlsdGVycyA9IHNpZ25hbDxGaWx0ZXJJdGVtTW9kZWxbXT4oW10pO1xuICAgIHJlYWRvbmx5IGlzRmlsdGVyU2VjdGlvbk9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICAgIHJlYWRvbmx5IGNhbkFwcGx5RmlsdGVycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA+IDBcbiAgICAgICAgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzKCkuZXZlcnkoYWYgPT5cbiAgICAgICAgICAgICFhZi5pc0hpZGRlbiAmJiAhIWFmLm5hbWUgJiYgISFhZi5vcGVyYW5kQ29uZmlnPy5vcGVyYW5kICYmICghYWYub3BlcmFuZENvbmZpZz8ucmVxdWlyZXNWYWx1ZSB8fCAhIWFmLnZhbHVlKVxuICAgICAgICApXG4gICAgKTtcbiAgICByZWFkb25seSB2aXNpYmxlRmlsdGVyc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycz8uZmlsdGVyKGFmID0+ICFhZi5pc0hpZGRlbikubGVuZ3RoIHx8IDApO1xuICAgIHJlYWRvbmx5IGNhblBlcmZvcm1BY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jYW5BcHBseUZpbHRlcnMoKSAmJiAhdGhpcy5pc1NlYXJjaGluZygpKTtcbiAgICByZWFkb25seSBiYWRnZUNvbmZpZyA9IGNvbXB1dGVkPE9wdGlvbmFsVHlwZTxCYWRnZUNvbmZpZz4+KCgpID0+XG4gICAgICAgIHRoaXMudmlzaWJsZUZpbHRlcnNDb3VudCgpID4gMFxuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgIGlzTm90aWZpY2F0aW9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGlzUGlsbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBiZ0NvbG9yOiAncHJpbWFyeS1sdCcsXG4gICAgICAgICAgICAgICAgdGV4dDogeyB0ZXh0OiB0aGlzLnZpc2libGVGaWx0ZXJzQ291bnQoKS50b1N0cmluZygpLCBpc1RyYW5zbGF0ZWQ6IHRydWUgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICByZWFkb25seSBmaWx0ZXJTZWN0aW9uQnRuQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4oKSA/IDxCZ0NvbG9yU3R5bGVUeXBlPidwcmltYXJ5JyA6IHVuZGVmaW5lZCk7XG4gICAgcmVhZG9ubHkgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyc09wZXJhbmRzU2VydmljZSA9IGluamVjdChGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlRmlsdGVyc0NvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgWy4uLkZpbHRlclRvb2xzLmNvbnZlcnRUb0ZpbHRlckl0ZW0odGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycz8uZmlsdGVyKGFmID0+ICFhZi5pc0hpZGRlbikgfHwgW10sIHRoaXMuZmlsdGVyc09wZXJhbmRzU2VydmljZS5nZXRBbGxPcGVyYW5kcygpKV1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMuc2V0KFtdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoU3ViID0gdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmNvbmZpZygpLnNlYXJjaElucHV0RGVib3VuY2VUaW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0ZXJtID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0U3ViamVjdCgpLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnNlYXJjaFJlcXVlc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRlcm1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFkZFN1YnNjcmlwdGlvbnMoc2VhcmNoU3ViKTtcbiAgICB9XG5cbiAgICBzZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdFN1YmplY3QoKS5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuc2VhcmNoUmVxdWVzdCgpLFxuICAgICAgICAgICAgZmlsdGVyczogRmlsdGVyVG9vbHMuY29udmVydFRvUmVxdWVzdEZpbHRlcih0aGlzLmFjdGl2ZUZpbHRlcnMoKSwgdGhpcy5jb25maWcoKS5maWx0ZXJGaWVsZHMsIHRoaXMuY29uZmlnKCkuY29sdW1ucylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRmlsdGVyU2VjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUZpbHRlclJvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnVwZGF0ZShpc09wZW4gPT4gIWlzT3Blbik7XG4gICAgfVxuXG4gICAgb25Sb3dSZW1vdmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgYWRkRW1wdHlGaWx0ZXJSb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyLnB1c2goe30pO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jdXJyXTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHByZWZpeDogJ1VwRGV2cy5UYWJsZSdcIj5cbiAgICBAaWYgKCEhYWN0aW9uc1RwbCgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVHBsKCkhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBbcGxhY2Vob2xkZXJdPVwie3RleHQ6J1VwRGV2cy5UYWJsZS5TZWFyY2gnLCBpc1RyYW5zbGF0ZWQ6ZmFsc2V9XCJcbiAgICAgICAgICAgIFtpc0FwcGVuZEJ1dHRvbl09XCJ0cnVlXCIgKHZhbHVlQ2hhbmdlKT1cInNlYXJjaFN1YmplY3QubmV4dCgkZXZlbnQpXCIgW3ZhbHVlXT1cInNlYXJjaFJlcXVlc3QoKS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIFtpc0ljb25dPVwidHJ1ZVwiIFtjb2xvclN0eWxlXT1cImZpbHRlclNlY3Rpb25CdG5Db2xvcigpXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyU2VjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhZGdlQ29uZmlnXT1cImJhZGdlQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1pY29uIFt0YWJsZXJJY29uXT1cImlzRmlsdGVyU2VjdGlvbk9wZW4oKSA/ICdmaWx0ZXItdXAnIDogJ2ZpbHRlci1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0ZpbHRlclNlY3Rpb25PcGVuKCkpIHtcbiAgICAgICAgQGZvciAocm93IG9mIGFjdGl2ZUZpbHRlcnMoKTsgdHJhY2sgcm93OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHVwZC1maWx0ZXItcm93IFtzdG9yZV09XCJjb25maWcoKS5zdG9yZVwiIFtjdXJyZW50RmlsdGVyXT1cInJvd1wiIFsoYWN0aXZlRmlsdGVycyldPVwiYWN0aXZlRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucygpXCIgW3Jvd0luZGV4XT1cImlcIiAocmVtb3ZlZCk9XCJvblJvd1JlbW92ZWQoKVwiIFtpc0Rpc2FibGVkXT1cImlzU2VhcmNoaW5nKClcIlxuICAgICAgICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiY29uZmlnKCkuZmlsdGVyRmllbGRzXCI+XG4gICAgICAgICAgICA8L3VwZC1maWx0ZXItcm93PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwiZ2FwLTJcIiBjb2xvclN0eWxlPVwicHJpbWFyeVwiIFtpc091dGxpbmVdPVwidHJ1ZVwiIChjbGlja2VkKT1cImFkZEVtcHR5RmlsdGVyUm93KClcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIiFjYW5QZXJmb3JtQWN0aW9ucygpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1pY29uIHRhYmxlckljb249XCJwbHVzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FkZE5ld0ZpbHRlcicpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwiZ2FwLTJcIiBjb2xvclN0eWxlPVwic3VjY2Vzc1wiIFtpc0Rpc2FibGVkXT1cIiFjYW5QZXJmb3JtQWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzZWFyY2goKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hlY2tzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FwcGx5RmlsdGVycycpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUluRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7O0FBTzVGLE1BQU0sT0FBTyxzQkFBMEIsU0FBUSxhQUFhO0lBbUN4RDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBbkNVLGlCQUFZLEdBQUcsdURBQXVELENBQUM7UUFFcEYsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDOUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDL0MsZUFBVSxHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLFFBQVEsQ0FBb0IsR0FBRyxFQUFFLENB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Q0FBQyxrQkFBa0IsQ0FBQztZQUNoRCxPQUFPLEVBQUUsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDdkgsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQXBGUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixtaEJDbEJuQyxncEVBd0NlOzsyRkR0QkYsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNJLG9CQUFvQjt3REFLUixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBUZW1wbGF0ZVJlZiwgSG9zdEJpbmRpbmcsIHNpZ25hbCwgY29tcHV0ZWQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlLCBCZ0NvbG9yU3R5bGVUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgQmFkZ2VDb25maWcgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGaWx0ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVDb25maWdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyVG9vbHMgfSBmcm9tICcuLi8uLi90b29scy9maWx0ZXJzLnRvb2xzJztcbmltcG9ydCB7IEJhc2VDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9iYXNlLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2ZpbHRlcnMtb3BlcmFuZHMuc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jdXJyZW50LXNlYXJjaC1yZXF1ZXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zZWFyY2gtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlY3Rpb25Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzID0gJ2NhcmQtYm9keSBib3JkZXItYm90dG9tIHB5LTMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yJztcblxuICAgIHJlYWRvbmx5IGNvbHVtbnMgPSBpbnB1dC5yZXF1aXJlZDxCYXNlQ29sdW1uTW9kZWxbXT4oKTtcbiAgICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUNvbmZpZ01vZGVsPFQ+PigpO1xuICAgIHJlYWRvbmx5IGFjdGlvbnNUcGwgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIHJlYWRvbmx5IGFjdGl2ZUZpbHRlcnMgPSBjb21wdXRlZDxGaWx0ZXJJdGVtTW9kZWxbXT4oKCkgPT5cbiAgICAgICAgRmlsdGVyVG9vbHMuY29udmVydFRvRmlsdGVySXRlbShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnNlYXJjaFJlcXVlc3QoKS5maWx0ZXJzPy5maWx0ZXIoYWYgPT4gIWFmLmlzSGlkZGVuKSB8fCBbXSxcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc09wZXJhbmRzU2VydmljZS5nZXRBbGxPcGVyYW5kcygpXG4gICAgICAgIClcbiAgICApO1xuICAgIHJlYWRvbmx5IGlzRmlsdGVyU2VjdGlvbk9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICAgIHJlYWRvbmx5IGNhbkFwcGx5RmlsdGVycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA+IDBcbiAgICAgICAgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzKCkuZXZlcnkoYWYgPT5cbiAgICAgICAgICAgICFhZi5pc0hpZGRlbiAmJiAhIWFmLm5hbWUgJiYgISFhZi5vcGVyYW5kQ29uZmlnPy5vcGVyYW5kICYmICghYWYub3BlcmFuZENvbmZpZz8ucmVxdWlyZXNWYWx1ZSB8fCAhIWFmLnZhbHVlKVxuICAgICAgICApXG4gICAgKTtcbiAgICByZWFkb25seSBjYW5QZXJmb3JtQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FuQXBwbHlGaWx0ZXJzKCkgJiYgIXRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLmlzU2VhcmNoaW5nKCkpO1xuICAgIHJlYWRvbmx5IGJhZGdlQ29uZmlnID0gY29tcHV0ZWQ8T3B0aW9uYWxUeXBlPEJhZGdlQ29uZmlnPj4oKCkgPT5cbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UudmlzaWJsZUZpbHRlckNvdW50KCkgPiAwXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgaXNOb3RpZmljYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgaXNQaWxsOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJnQ29sb3I6ICdwcmltYXJ5LWx0JyxcbiAgICAgICAgICAgICAgICB0ZXh0OiB7IHRleHQ6IHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnZpc2libGVGaWx0ZXJDb3VudCgpLnRvU3RyaW5nKCksIGlzVHJhbnNsYXRlZDogdHJ1ZSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHJlYWRvbmx5IGZpbHRlclNlY3Rpb25CdG5Db2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3BlbigpID8gPEJnQ29sb3JTdHlsZVR5cGU+J3ByaW1hcnknIDogdW5kZWZpbmVkKTtcbiAgICByZWFkb25seSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNPcGVyYW5kc1NlcnZpY2UpO1xuICAgIHJlYWRvbmx5IGN1cnJlbnRTZWFyY2hSZXF1ZXN0U2VydmljZSA9IGluamVjdChDdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIEF1dG8tY2xvc2UgZmlsdGVyIHNlY3Rpb24gd2hlbiBhbGwgZmlsdGVycyBhcmUgcmVtb3ZlZFxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnZpc2libGVGaWx0ZXJDb3VudCgpID09PSAwICYmIHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3BlbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFN1YiA9IHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5jb25maWcoKS5zZWFyY2hJbnB1dERlYm91bmNlVGltZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGVybSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnNldERlc2NyaXB0aW9uKHRlcm0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhzZWFyY2hTdWIpO1xuICAgIH1cblxuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoUmVxdWVzdFNlcnZpY2UucGF0Y2hTZWFyY2hSZXF1ZXN0KHtcbiAgICAgICAgICAgIGZpbHRlcnM6IEZpbHRlclRvb2xzLmNvbnZlcnRUb1JlcXVlc3RGaWx0ZXIodGhpcy5hY3RpdmVGaWx0ZXJzKCksIHRoaXMuY29uZmlnKCkuZmlsdGVyRmllbGRzLCB0aGlzLmNvbmZpZygpLmNvbHVtbnMpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZWFyY2hSZXF1ZXN0U2VydmljZS50cmlnZ2VyU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRmlsdGVyU2VjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUZpbHRlclJvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnVwZGF0ZShpc09wZW4gPT4gIWlzT3Blbik7XG4gICAgfVxuXG4gICAgb25Sb3dSZW1vdmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgYWRkRW1wdHlGaWx0ZXJSb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLmFkZEZpbHRlcih7fSBhcyBhbnkpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuVGFibGUnXCI+XG4gICAgQGlmICghIWFjdGlvbnNUcGwoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uc1RwbCgpIVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgW3BsYWNlaG9sZGVyXT1cInt0ZXh0OidVcERldnMuVGFibGUuU2VhcmNoJywgaXNUcmFuc2xhdGVkOmZhbHNlfVwiXG4gICAgICAgICAgICBbaXNBcHBlbmRCdXR0b25dPVwidHJ1ZVwiICh2YWx1ZUNoYW5nZSk9XCJzZWFyY2hTdWJqZWN0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLnNlYXJjaFJlcXVlc3QoKS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIFtpc0ljb25dPVwidHJ1ZVwiIFtjb2xvclN0eWxlXT1cImZpbHRlclNlY3Rpb25CdG5Db2xvcigpXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyU2VjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhZGdlQ29uZmlnXT1cImJhZGdlQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1pY29uIFt0YWJsZXJJY29uXT1cImlzRmlsdGVyU2VjdGlvbk9wZW4oKSA/ICdmaWx0ZXItdXAnIDogJ2ZpbHRlci1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0ZpbHRlclNlY3Rpb25PcGVuKCkpIHtcbiAgICAgICAgQGZvciAocm93IG9mIGFjdGl2ZUZpbHRlcnMoKTsgdHJhY2sgcm93Lm5hbWU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dXBkLWZpbHRlci1yb3cgW3N0b3JlXT1cImNvbmZpZygpLnN0b3JlXCIgW2N1cnJlbnRGaWx0ZXJdPVwicm93XCIgW2NvbHVtbnNdPVwiY29sdW1ucygpXCIgW3Jvd0luZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cIm9uUm93UmVtb3ZlZCgpXCIgW2lzRGlzYWJsZWRdPVwiY3VycmVudFNlYXJjaFJlcXVlc3RTZXJ2aWNlLmlzU2VhcmNoaW5nKClcIlxuICAgICAgICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiY29uZmlnKCkuZmlsdGVyRmllbGRzXCI+XG4gICAgICAgICAgICA8L3VwZC1maWx0ZXItcm93PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwiZ2FwLTJcIiBjb2xvclN0eWxlPVwicHJpbWFyeVwiIFtpc091dGxpbmVdPVwidHJ1ZVwiIChjbGlja2VkKT1cImFkZEVtcHR5RmlsdGVyUm93KClcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIiFjYW5QZXJmb3JtQWN0aW9ucygpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1pY29uIHRhYmxlckljb249XCJwbHVzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FkZE5ld0ZpbHRlcicpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwiZ2FwLTJcIiBjb2xvclN0eWxlPVwic3VjY2Vzc1wiIFtpc0Rpc2FibGVkXT1cIiFjYW5QZXJmb3JtQWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzZWFyY2goKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hlY2tzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FwcGx5RmlsdGVycycpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPiJdfQ==
|