@rangertechnologies/ngnxt 2.1.68 → 2.1.70
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/lib/components/custom-dropdown/custom-dropdown.component.mjs +95 -72
- package/esm2022/lib/interfaces/apimeta.mjs +1 -1
- package/fesm2022/rangertechnologies-ngnxt.mjs +94 -71
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +2 -0
- package/lib/interfaces/apimeta.d.ts +1 -0
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.70.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.68.tgz +0 -0
|
@@ -39,94 +39,117 @@ export class CustomDropdownComponent {
|
|
|
39
39
|
valueField;
|
|
40
40
|
subscription;
|
|
41
41
|
apiObj;
|
|
42
|
+
uniqueKey;
|
|
42
43
|
ngOnInit() {
|
|
44
|
+
}
|
|
45
|
+
getOptions() {
|
|
46
|
+
console.log('test click');
|
|
43
47
|
// console.log('inside oninit of custom-dropdown of ' + this.id);
|
|
44
48
|
// console.log(this.apiMeta);
|
|
45
49
|
//VD 07Aug24 - isDependentField change
|
|
50
|
+
// VD 25Oct24 - changes
|
|
46
51
|
this.placeholder = this.placeholder ? this.placeholder : '---Select option---';
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (this.apiObj.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
//
|
|
62
|
-
let
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// VD 19JAN24 - added one more param for authentication
|
|
76
|
-
this.dataService.apiResponse(fullEndPoint)?.subscribe((apiResponse) => {
|
|
77
|
-
// HA 18-JAN-24 Assigned apiresponse directly if we have the response in array also
|
|
78
|
-
// VD 19JAN24 - if response has key with value(which is array)
|
|
79
|
-
let responses;
|
|
80
|
-
if (this.apiObj.variable) {
|
|
81
|
-
// VD 21May24 - handling multiple child objects
|
|
82
|
-
// VD 22May24 - used common service file
|
|
83
|
-
responses = this.dataService.getValue(apiResponse, this.apiObj.variable);
|
|
84
|
-
let results = [];
|
|
85
|
-
// HA 19JAN24 To avoid undefined error in console
|
|
86
|
-
for (let i = 0; i < responses?.length; i++) {
|
|
87
|
-
var resp = responses[i];
|
|
88
|
-
results.push(resp);
|
|
89
|
-
}
|
|
90
|
-
this.options = results;
|
|
52
|
+
const cachedOptions = localStorage.getItem(this.uniqueKey);
|
|
53
|
+
if (cachedOptions) {
|
|
54
|
+
this.options = JSON.parse(cachedOptions);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (this.apiMeta !== undefined) {
|
|
58
|
+
this.apiObj = JSON.parse(this.apiMeta);
|
|
59
|
+
if (!this.apiObj.isDependentField) {
|
|
60
|
+
this.options = [];
|
|
61
|
+
this.labelField = this.apiObj.field;
|
|
62
|
+
// VD 09Sep24- setup the query param for api call
|
|
63
|
+
let fullEndPoint;
|
|
64
|
+
if (this.apiObj.endpoint) {
|
|
65
|
+
if (this.apiObj.queryValueReference && this.apiObj.queryField) {
|
|
66
|
+
// process the end point with query param
|
|
67
|
+
let queryReferences = this.apiObj.queryValueReference.split(',');
|
|
68
|
+
let queryParams = [];
|
|
69
|
+
// Iterate over queryReferences and find the corresponding element in referenceData
|
|
70
|
+
queryReferences.forEach(reference => {
|
|
71
|
+
// Find the element in referenceData that matches the current reference
|
|
72
|
+
let matchingElement = this.question?.referenceQueryData.find(element => element.Reference_Field__c === reference);
|
|
73
|
+
// If a matching element is found, get its input value and create a query parameter
|
|
74
|
+
if (matchingElement) {
|
|
75
|
+
queryParams.push(`${reference}=${matchingElement.input}`);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
fullEndPoint = this.apiObj.endpoint + '?' + queryParams.join('&');
|
|
79
|
+
console.log(fullEndPoint);
|
|
91
80
|
}
|
|
92
|
-
else {
|
|
93
|
-
|
|
94
|
-
|
|
81
|
+
else {
|
|
82
|
+
// if no query param get the actual endPoint
|
|
83
|
+
fullEndPoint = this.apiObj.endpoint;
|
|
95
84
|
}
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
let sourceId = this.apiObj.sourceQuestionId;
|
|
103
|
-
if (sourceId && this.apiObj.variable || this.apiObj.valueField) {
|
|
104
|
-
// Subscribe for the changes
|
|
105
|
-
this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
|
|
106
|
-
if (changeValue != undefined) {
|
|
107
|
-
// console.log('inside subscription for the change');
|
|
108
|
-
if (changeValue.valueObj != undefined && changeValue.fromQuestionId == this.apiObj.sourceQuestionId) {
|
|
109
|
-
// this.selectedValue = changeValue.valueObj[this.apiObj.valueField];
|
|
110
|
-
// let value ={};
|
|
111
|
-
// value['name'] = this.selectedValue;
|
|
85
|
+
// VD 19JAN24 - added one more param for authentication
|
|
86
|
+
this.dataService.apiResponse(fullEndPoint)?.subscribe((apiResponse) => {
|
|
87
|
+
// HA 18-JAN-24 Assigned apiresponse directly if we have the response in array also
|
|
88
|
+
// VD 19JAN24 - if response has key with value(which is array)
|
|
89
|
+
// VD 25Oct24 changes
|
|
90
|
+
this.uniqueKey = this.dataService.getValue(apiResponse, this.apiObj.uniqueKey);
|
|
112
91
|
let responses;
|
|
113
92
|
if (this.apiObj.variable) {
|
|
114
|
-
|
|
93
|
+
// VD 21May24 - handling multiple child objects
|
|
94
|
+
// VD 22May24 - used common service file
|
|
95
|
+
responses = this.dataService.getValue(apiResponse, this.apiObj.variable);
|
|
115
96
|
let results = [];
|
|
97
|
+
// HA 19JAN24 To avoid undefined error in console
|
|
116
98
|
for (let i = 0; i < responses?.length; i++) {
|
|
117
99
|
var resp = responses[i];
|
|
118
100
|
results.push(resp);
|
|
119
101
|
}
|
|
120
102
|
this.options = results;
|
|
121
103
|
}
|
|
122
|
-
else {
|
|
123
|
-
responses =
|
|
104
|
+
else { // VD 19JAN24 - if response has value(which is array) only
|
|
105
|
+
responses = apiResponse;
|
|
124
106
|
this.options = responses;
|
|
125
107
|
}
|
|
126
|
-
|
|
127
|
-
|
|
108
|
+
// VD 25Oct24 - Store fetched options in local storage
|
|
109
|
+
if (this.uniqueKey) {
|
|
110
|
+
localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));
|
|
111
|
+
}
|
|
112
|
+
// Reference https://www.npmjs.com/package/@ng-select/ng-select
|
|
113
|
+
});
|
|
128
114
|
}
|
|
129
|
-
}
|
|
115
|
+
}
|
|
116
|
+
// VD NOV23 - handle the dependent update for dropdown
|
|
117
|
+
// // VD 09Sep24- push the dependent field values for dropdown
|
|
118
|
+
let sourceId = this.apiObj.sourceQuestionId;
|
|
119
|
+
if (sourceId && this.apiObj.variable || this.apiObj.valueField) {
|
|
120
|
+
// Subscribe for the changes
|
|
121
|
+
this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
|
|
122
|
+
if (changeValue != undefined) {
|
|
123
|
+
// console.log('inside subscription for the change');
|
|
124
|
+
if (changeValue.valueObj != undefined && changeValue.fromQuestionId == this.apiObj.sourceQuestionId) {
|
|
125
|
+
// this.selectedValue = changeValue.valueObj[this.apiObj.valueField];
|
|
126
|
+
// let value ={};
|
|
127
|
+
// value['name'] = this.selectedValue;
|
|
128
|
+
// VD 25Oct24 changes
|
|
129
|
+
this.uniqueKey = this.dataService.getValue(changeValue.valueObj, this.apiObj.uniqueKey);
|
|
130
|
+
let responses;
|
|
131
|
+
if (this.apiObj.variable) {
|
|
132
|
+
responses = this.dataService.getValue(changeValue.valueObj, this.apiObj.variable);
|
|
133
|
+
let results = [];
|
|
134
|
+
for (let i = 0; i < responses?.length; i++) {
|
|
135
|
+
var resp = responses[i];
|
|
136
|
+
results.push(resp);
|
|
137
|
+
}
|
|
138
|
+
this.options = results;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
responses = changeValue.valueObj;
|
|
142
|
+
this.options = responses;
|
|
143
|
+
}
|
|
144
|
+
// VD 25Oct24 - Store fetched options in local storage
|
|
145
|
+
if (this.uniqueKey) {
|
|
146
|
+
localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
this.changeService.confirmChange(this.apiObj.sourceQuestionId);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
130
153
|
}
|
|
131
154
|
}
|
|
132
155
|
}
|
|
@@ -146,11 +169,11 @@ export class CustomDropdownComponent {
|
|
|
146
169
|
}
|
|
147
170
|
}
|
|
148
171
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, deps: [{ token: i1.ChangeService }, { token: i2.DataService }, { token: i3.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }] });
|
|
172
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click) = \"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }] });
|
|
150
173
|
}
|
|
151
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, decorators: [{
|
|
152
175
|
type: Component,
|
|
153
|
-
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
176
|
+
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click) = \"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
154
177
|
}], ctorParameters: function () { return [{ type: i1.ChangeService }, { type: i2.DataService }, { type: i3.I18nService }]; }, propDecorators: { options: [{
|
|
155
178
|
type: Input
|
|
156
179
|
}], placeholder: [{
|
|
@@ -180,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
180
203
|
}], valueChange: [{
|
|
181
204
|
type: Output
|
|
182
205
|
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFZMUQsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNEO0lBbEJBLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFTO0lBQ2hCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQVU7SUFDckIsRUFBRSxDQUFRO0lBQ1YsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLCtCQUErQjtJQUNqRCxZQUFZLENBQVM7SUFDckIsS0FBSyxDQUFLO0lBQ1YsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixRQUFRLENBQUs7SUFDYixjQUFjLENBQVE7SUFDdEIsS0FBSyxDQUFRLENBQUksc0NBQXNDO0lBQ3RELFdBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDdkYsZUFBZSxHQUFZLEVBQUUsQ0FBQztJQUM5QixZQUNVLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFh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QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIseURBQXlEO1FBQ3pELElBQUcsS0FBSyxFQUFDO1lBQ1AsSUFBSSxDQUFDLGVBQWUsR0FBRSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO3dHQXpJVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrYUNmcEMsbWtEQTJCQTs7NEZEWmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjt3SkFLdEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2NoYW5nZVdyYXBwZXInO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xuLy8gVkQgMjNKQU4yNCB1c2VkIHNlcnZpY2UgZmlsZSBmb3IgY2FsbG91dFxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvcHRpb25zOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgYXBpTWV0YTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb2dyZXNzQmFyOiBib29sZWFuO1xuICBASW5wdXQoKSBpZDpzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7IC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2VcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yOmFueTtcbiAgQElucHV0KCkgZnJvbVNoZW5nZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcXVlc3Rpb246YW55O1xuICBASW5wdXQoKSByZWZlcmVuY2VGaWVsZDpzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZzsgICAgLy8gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXRcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+KCk7XG4gIGludmFsaWRGaWVsZElkczpzdHJpbmdbXSA9IFtdO1xuICBjb25zdHJ1Y3RvciggXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLFxuICAgICAgICApIHsgXG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLnN1Ym1pdFZhbGlkYXRlJC5zdWJzY3JpYmUoKGRhdGEpPT57XG4gICAgICAvLyB0byBnZXQgdGhlIGVycm9yIG1lc3NhZ2UncyBmaWVsZCBpZCdzXG4gICAgICB0aGlzLmludmFsaWRGaWVsZElkcy5wdXNoKGRhdGEpO1xuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgbGFiZWxGaWVsZDogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGFwaU9iajpBUElNZXRhO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgb25pbml0IG9mIGN1c3RvbS1kcm9wZG93biBvZiAnICsgdGhpcy5pZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5hcGlNZXRhKTtcbiAgICAvL1ZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyID8gdGhpcy5wbGFjZWhvbGRlciA6ICctLS1TZWxlY3Qgb3B0aW9uLS0tJztcbiAgICBpZih0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hcGlPYmogPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICBpZighdGhpcy5hcGlPYmouaXNEZXBlbmRlbnRGaWVsZCl7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMubGFiZWxGaWVsZCA9IHRoaXMuYXBpT2JqLmZpZWxkO1xuICAgICAgLy8gVkQgMDlTZXAyNC0gc2V0dXAgdGhlIHF1ZXJ5IHBhcmFtIGZvciBhcGkgY2FsbFxuICAgICAgbGV0IGZ1bGxFbmRQb2ludCA7XG4gICAgICBpZih0aGlzLmFwaU9iai5lbmRwb2ludCl7XG4gICAgICAgIGlmKHRoaXMuYXBpT2JqLnF1ZXJ5VmFsdWVSZWZlcmVuY2UgJiYgdGhpcy5hcGlPYmoucXVlcnlGaWVsZCl7XG4gICAgICAgICAgLy8gcHJvY2VzcyB0aGUgZW5kIHBvaW50IHdpdGggcXVlcnkgcGFyYW1cbiAgICAgICAgICBsZXQgcXVlcnlSZWZlcmVuY2VzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpO1xuICAgICAgICAgIGxldCBxdWVyeVBhcmFtcyA9IFtdO1xuICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBxdWVyeVJlZmVyZW5jZXMgYW5kIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhXG4gICAgICAgICAgcXVlcnlSZWZlcmVuY2VzLmZvckVhY2gocmVmZXJlbmNlID0+IHtcbiAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgbGV0IG1hdGNoaW5nRWxlbWVudCA9IHRoaXMucXVlc3Rpb24/LnJlZmVyZW5jZVF1ZXJ5RGF0YS5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2MgPT09IHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgIC8vIElmIGEgbWF0Y2hpbmcgZWxlbWVudCBpcyBmb3VuZCwgZ2V0IGl0cyBpbnB1dCB2YWx1ZSBhbmQgY3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAgICAgICAgICAgIGlmIChtYXRjaGluZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7cmVmZXJlbmNlfT0ke21hdGNoaW5nRWxlbWVudC5pbnB1dH1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIGZ1bGxFbmRQb2ludCA9IHRoaXMuYXBpT2JqLmVuZHBvaW50ICsgJz8nICsgcXVlcnlQYXJhbXMuam9pbignJicpO1xuICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZ1bGxFbmRQb2ludCk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgLy8gaWYgbm8gcXVlcnkgcGFyYW0gZ2V0IHRoZSBhY3R1YWwgZW5kUG9pbnRcbiAgICAgICAgICAgICBmdWxsRW5kUG9pbnQgPSB0aGlzLmFwaU9iai5lbmRwb2ludDtcbiAgICAgICAgfVxuICAgICAgICAvLyBWRCAxOUpBTjI0IC0gYWRkZWQgb25lIG1vcmUgcGFyYW0gZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoZnVsbEVuZFBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIEhBIDE4LUpBTi0yNCBBc3NpZ25lZCBhcGlyZXNwb25zZSBkaXJlY3RseSBpZiB3ZSBoYXZlIHRoZSByZXNwb25zZSBpbiBhcnJheSBhbHNvXG4gICAgICAgICAgLy8gVkQgMTlKQU4yNCAtIGlmIHJlc3BvbnNlIGhhcyBrZXkgd2l0aCB2YWx1ZSh3aGljaCBpcyBhcnJheSlcbiAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgIGlmKHRoaXMuYXBpT2JqLnZhcmlhYmxlKXtcbiAgICAgICAgICAgIC8vIFZEIDIxTWF5MjQgLSBoYW5kbGluZyBtdWx0aXBsZSBjaGlsZCBvYmplY3RzXG4gICAgICAgICAgICAvLyBWRCAyMk1heTI0IC0gdXNlZCBjb21tb24gc2VydmljZSBmaWxlXG4gICAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLHRoaXMuYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgICAgICAvLyBIQSAxOUpBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvciBpbiBjb25zb2xlXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3AgPSByZXNwb25zZXNbaV07XG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdHM7XG4gICAgICAgICAgfWVsc2V7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICByZXNwb25zZXMgPSBhcGlSZXNwb25zZTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gUmVmZXJlbmNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BuZy1zZWxlY3Qvbmctc2VsZWN0XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICAvLyAvLyBWRCAwOVNlcDI0LSBwdXNoIHRoZSBkZXBlbmRlbnQgZmllbGQgdmFsdWVzIGZvciBkcm9wZG93blxuICAgICAgbGV0IHNvdXJjZUlkID0gdGhpcy5hcGlPYmouc291cmNlUXVlc3Rpb25JZDtcbiAgICAgIGlmKHNvdXJjZUlkICYmIHRoaXMuYXBpT2JqLnZhcmlhYmxlIHx8IHRoaXMuYXBpT2JqLnZhbHVlRmllbGQpe1xuICAgICAgICAvLyBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmNoYW5nZUFubm91bmNlZCQuc3Vic2NyaWJlKFxuICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgc3Vic2NyaXB0aW9uIGZvciB0aGUgY2hhbmdlJyk7XG4gICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSB0aGlzLmFwaU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgLy8gIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW3RoaXMuYXBpT2JqLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIC8vICBsZXQgdmFsdWUgPXt9O1xuICAgICAgICAgICAgICAgIC8vICB2YWx1ZVsnbmFtZSddID0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgICAgICAgICBpZih0aGlzLmFwaU9iai52YXJpYWJsZSl7XG4gICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShjaGFuZ2VWYWx1ZS52YWx1ZU9iaix0aGlzLmFwaU9iai52YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwID0gcmVzcG9uc2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3ApO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbi8vIFZEIDIyTWF5MjQgLSB1c2VkIGNvbW1vbiBzZXJ2aWNlIGZpbGVcblxuICBzZWxlY3RDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBzZWxlY3RDaGFuZ2UgZnJvbSAnICsgdGhpcy5pZCk7XG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpOyAvLyBDaGFuZ2VXcmFwcGVyID0gSlNPTi5wYXJzZSgne30nKTtcbiAgICBjaGFuZ2UuZnJvbVF1ZXN0aW9uSWQgPSB0aGlzLmlkO1xuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50ID8gZXZlbnQgOiAnJztcbiAgICBjaGFuZ2UucmVmZXJlbmNlRmllbGQgPSB0aGlzLnJlZmVyZW5jZUZpZWxkO1xuICAgIGNoYW5nZS5zZWxlY3RlZE9iaiA9IGV2ZW50ID8gZXZlbnRbdGhpcy5sYWJlbEZpZWxkXSA6ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2UpO1xuICAgIC8vIG9uY2UgZ290IHZhbHVlIGluIGRyb3Bkb3duIHJlbW92ZSB0aGUgZXJyb3IgdmFsaWRhdGlvblxuICAgIGlmKGV2ZW50KXtcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzID1bXTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gSEEgMTgtSkFOLTI0IENvbW1lbnRpbmcgdGhlc2UgbGluZXMgYXMgd2UgZG9uJ3QgaGF2ZSB0byB1c2Ugc2hlbmdlbCBoZXJlIC0tPlxuPCEtLSA8c2VsZWN0XG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZHQtbGluZSBkcERvd24gZG93biBteXQtZHJvcGJveCBteXQtYm9yZGVyLXIgbXl0LWZvbnQxJzogcHJvZ3Jlc3NCYXIsXG4gICAgJ2N1c3RvbS1zZWxlY3QnOiAhcHJvZ3Jlc3NCYXJcbiAgfVwiIGNsYXNzPVwiY3VzdG9tLXNlbGVjdCBtci1zbS0yIGRkLWhlaWdodFwiIFxuICBbaWRdPVwiaWRcIiBcbiAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSk7XCIgXG4gIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJyM4NTg1ODUnXCJcbiAgW3N0eWxlLmNvbG9yXT1cImVycm9yID8gJ3JlZCcgOiAnJ1wiPlxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cInRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRpdGxlIDogb3B0aW9uLlZhbHVlX19jXCIgY2xhc3M9XCJvcHRpb25cIj57eyB0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50aXRsZSA6IG9wdGlvbi5WYWx1ZV9fYyB9fTwvb3B0aW9uPlxuICAgIDxvcHRpb24gKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj57eyBlcnJvck1lc3NhZ2UgfX08L29wdGlvbj5cbjwvc2VsZWN0PiAtLT5cbjwhLS0gLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZS0tPlxuPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbjwhLS0gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlLS0+XG48bmctc2VsZWN0XG4gICAgICAgICAgICBbY2xhc3NdPVwiaW52YWxpZEZpZWxkSWRzLmluY2x1ZGVzKGlkKSB8fCBlcnJvciA/ICdzaGVuZ2VsLWN1c3RvbS1zZWxlY3QgaW52YWxpZCcgOiAnc2hlbmdlbC1jdXN0b20tc2VsZWN0J1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIiBcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRcIj5cbiAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwiYXBpT2JqICE9PSB1bmRlZmluZWQgJiYgIWFwaU9iai5pc0RlcGVuZGVudEZpZWxkID8gb3B0aW9uIDogb3B0aW9uLlZhbHVlX19jXCI+e3sgYXBpT2JqICE9PSB1bmRlZmluZWQgJiYgIWFwaU9iai5pc0RlcGVuZGVudEZpZWxkID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uLlZhbHVlX19jICB9fTwvbmctb3B0aW9uPiBcbjwvbmctc2VsZWN0PlxuPHNwYW4gKm5nSWY9XCJlcnJvciB8fCBpbnZhbGlkRmllbGRJZHMuaW5jbHVkZXMoaWQpXCIgY2xhc3M9XCJlcnJvci1tc2dcIj57e2Vycm9yTWVzc2FnZX19PC9zcGFuPlxuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFZMUQsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNEO0lBbEJBLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFTO0lBQ2hCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQVU7SUFDckIsRUFBRSxDQUFRO0lBQ1YsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLCtCQUErQjtJQUNqRCxZQUFZLENBQVM7SUFDckIsS0FBSyxDQUFLO0lBQ1YsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixRQUFRLENBQUs7SUFDYixjQUFjLENBQVE7SUFDdEIsS0FBSyxDQUFRLENBQUksc0NBQXNDO0lBQ3RELFdBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDdkYsZUFBZSxHQUFZLEVBQUUsQ0FBQztJQUM5QixZQUNVLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFh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QUMsQ0FBQztRQUM5Qix5REFBeUQ7UUFDekQsSUFBRyxLQUFLLEVBQUM7WUFDUCxJQUFJLENBQUMsZUFBZSxHQUFFLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7d0dBaEtVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGthQ2ZwQyx5b0RBNkJBOzs0RkRkYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3dKQUt0QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YSc7XG5pbXBvcnQgeyBDaGFuZ2VXcmFwcGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvY2hhbmdlV3JhcHBlcic7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG4vLyBWRCAyM0pBTjI0IHVzZWQgc2VydmljZSBmaWxlIGZvciBjYWxsb3V0XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Ecm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgcHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlkOnN0cmluZztcbiAgQElucHV0KCkgcmVhZE9ubHkgPSBmYWxzZTsgLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZVxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3I6YW55O1xuICBASW5wdXQoKSBmcm9tU2hlbmdlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBxdWVzdGlvbjphbnk7XG4gIEBJbnB1dCgpIHJlZmVyZW5jZUZpZWxkOnN0cmluZztcbiAgQElucHV0KCkgdG9rZW46c3RyaW5nOyAgICAvLyBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dFxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4oKTtcbiAgaW52YWxpZEZpZWxkSWRzOnN0cmluZ1tdID0gW107XG4gIGNvbnN0cnVjdG9yKCBcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgICAgICkgeyBcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0VmFsaWRhdGUkLnN1YnNjcmliZSgoZGF0YSk9PntcbiAgICAgIC8vIHRvIGdldCB0aGUgZXJyb3IgbWVzc2FnZSdzIGZpZWxkIGlkJ3NcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzLnB1c2goZGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBsYWJlbEZpZWxkOiBzdHJpbmc7XG4gIHB1YmxpYyB2YWx1ZUZpZWxkOiBzdHJpbmc7XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgYXBpT2JqOkFQSU1ldGE7XG4gIHB1YmxpYyB1bmlxdWVLZXk6c3RyaW5nO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuICB9XG4gIGdldE9wdGlvbnMoKXtcbiAgICBjb25zb2xlLmxvZygndGVzdCBjbGljaycpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgb25pbml0IG9mIGN1c3RvbS1kcm9wZG93biBvZiAnICsgdGhpcy5pZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5hcGlNZXRhKTtcbiAgICAvL1ZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgIC8vIFZEIDI1T2N0MjQgLSBjaGFuZ2VzXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgPyB0aGlzLnBsYWNlaG9sZGVyIDogJy0tLVNlbGVjdCBvcHRpb24tLS0nO1xuICAgIGNvbnN0IGNhY2hlZE9wdGlvbnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnVuaXF1ZUtleSk7XG4gICAgaWYgKGNhY2hlZE9wdGlvbnMpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IEpTT04ucGFyc2UoY2FjaGVkT3B0aW9ucyk7XG4gICAgfWVsc2Uge1xuICAgICAgaWYodGhpcy5hcGlNZXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hcGlPYmogPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICAgIGlmKCF0aGlzLmFwaU9iai5pc0RlcGVuZGVudEZpZWxkKXtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgIHRoaXMubGFiZWxGaWVsZCA9IHRoaXMuYXBpT2JqLmZpZWxkO1xuICAgICAgICAvLyBWRCAwOVNlcDI0LSBzZXR1cCB0aGUgcXVlcnkgcGFyYW0gZm9yIGFwaSBjYWxsXG4gICAgICAgIGxldCBmdWxsRW5kUG9pbnQgO1xuICAgICAgICBpZih0aGlzLmFwaU9iai5lbmRwb2ludCl7XG4gICAgICAgICAgaWYodGhpcy5hcGlPYmoucXVlcnlWYWx1ZVJlZmVyZW5jZSAmJiB0aGlzLmFwaU9iai5xdWVyeUZpZWxkKXtcbiAgICAgICAgICAgIC8vIHByb2Nlc3MgdGhlIGVuZCBwb2ludCB3aXRoIHF1ZXJ5IHBhcmFtXG4gICAgICAgICAgICBsZXQgcXVlcnlSZWZlcmVuY2VzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zID0gW107XG4gICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgcXVlcnlSZWZlcmVuY2VzIGFuZCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gcmVmZXJlbmNlRGF0YVxuICAgICAgICAgICAgcXVlcnlSZWZlcmVuY2VzLmZvckVhY2gocmVmZXJlbmNlID0+IHtcbiAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbGVtZW50IGluIHJlZmVyZW5jZURhdGEgdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ0VsZW1lbnQgPSB0aGlzLnF1ZXN0aW9uPy5yZWZlcmVuY2VRdWVyeURhdGEuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jID09PSByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgIC8vIElmIGEgbWF0Y2hpbmcgZWxlbWVudCBpcyBmb3VuZCwgZ2V0IGl0cyBpbnB1dCB2YWx1ZSBhbmQgY3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcy5wdXNoKGAke3JlZmVyZW5jZX09JHttYXRjaGluZ0VsZW1lbnQuaW5wdXR9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICBmdWxsRW5kUG9pbnQgPSB0aGlzLmFwaU9iai5lbmRwb2ludCArICc/JyArIHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKTtcbiAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZ1bGxFbmRQb2ludCk7XG4gICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgIC8vIGlmIG5vIHF1ZXJ5IHBhcmFtIGdldCB0aGUgYWN0dWFsIGVuZFBvaW50XG4gICAgICAgICAgICAgICBmdWxsRW5kUG9pbnQgPSB0aGlzLmFwaU9iai5lbmRwb2ludDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVkQgMTlKQU4yNCAtIGFkZGVkIG9uZSBtb3JlIHBhcmFtIGZvciBhdXRoZW50aWNhdGlvblxuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoZnVsbEVuZFBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgLy8gSEEgMTgtSkFOLTI0IEFzc2lnbmVkIGFwaXJlc3BvbnNlIGRpcmVjdGx5IGlmIHdlIGhhdmUgdGhlIHJlc3BvbnNlIGluIGFycmF5IGFsc29cbiAgICAgICAgICAgIC8vIFZEIDE5SkFOMjQgLSBpZiByZXNwb25zZSBoYXMga2V5IHdpdGggdmFsdWUod2hpY2ggaXMgYXJyYXkpXG4gICAgICAgICAgICAvLyBWRCAyNU9jdDI0IGNoYW5nZXNcbiAgICAgICAgICAgIHRoaXMudW5pcXVlS2V5ID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSx0aGlzLmFwaU9iai51bmlxdWVLZXkpO1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgIGlmKHRoaXMuYXBpT2JqLnZhcmlhYmxlKXtcbiAgICAgICAgICAgICAgLy8gVkQgMjFNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgLy8gVkQgMjJNYXkyNCAtIHVzZWQgY29tbW9uIHNlcnZpY2UgZmlsZVxuICAgICAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLHRoaXMuYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgLy8gSEEgMTlKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3IgaW4gY29uc29sZVxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzcCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgIH1lbHNleyAgLy8gVkQgMTlKQU4yNCAtIGlmIHJlc3BvbnNlIGhhcyB2YWx1ZSh3aGljaCBpcyBhcnJheSkgb25seVxuICAgICAgICAgICAgICByZXNwb25zZXMgPSBhcGlSZXNwb25zZTtcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVkQgMjVPY3QyNCAtIFN0b3JlIGZldGNoZWQgb3B0aW9ucyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICBpZih0aGlzLnVuaXF1ZUtleSl7XG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMudW5pcXVlS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Abmctc2VsZWN0L25nLXNlbGVjdFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICAgIC8vIC8vIFZEIDA5U2VwMjQtIHB1c2ggdGhlIGRlcGVuZGVudCBmaWVsZCB2YWx1ZXMgZm9yIGRyb3Bkb3duXG4gICAgICAgIGxldCBzb3VyY2VJZCA9IHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQ7XG4gICAgICAgIGlmKHNvdXJjZUlkICYmIHRoaXMuYXBpT2JqLnZhcmlhYmxlIHx8IHRoaXMuYXBpT2JqLnZhbHVlRmllbGQpe1xuICAgICAgICAgIC8vIFN1YnNjcmliZSBmb3IgdGhlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSB0aGlzLmFwaU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAvLyAgdGhpcy5zZWxlY3RlZFZhbHVlID0gY2hhbmdlVmFsdWUudmFsdWVPYmpbdGhpcy5hcGlPYmoudmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgICAvLyAgbGV0IHZhbHVlID17fTtcbiAgICAgICAgICAgICAgICAgIC8vICB2YWx1ZVsnbmFtZSddID0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgLy8gVkQgMjVPY3QyNCBjaGFuZ2VzXG4gICAgICAgICAgICAgICAgICB0aGlzLnVuaXF1ZUtleSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoY2hhbmdlVmFsdWUudmFsdWVPYmosdGhpcy5hcGlPYmoudW5pcXVlS2V5KTtcbiAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYXBpT2JqLnZhcmlhYmxlKXtcbiAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcyA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoY2hhbmdlVmFsdWUudmFsdWVPYmosdGhpcy5hcGlPYmoudmFyaWFibGUpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2VzPy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3ApO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcyA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqO1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vIFZEIDI1T2N0MjQgLSBTdG9yZSBmZXRjaGVkIG9wdGlvbnMgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgaWYodGhpcy51bmlxdWVLZXkpe1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnVuaXF1ZUtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNvbmZpcm1DaGFuZ2UodGhpcy5hcGlPYmouc291cmNlUXVlc3Rpb25JZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4vLyBWRCAyMk1heTI0IC0gdXNlZCBjb21tb24gc2VydmljZSBmaWxlXG5cbiAgc2VsZWN0Q2hhbmdlKGV2ZW50OmFueSkge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgc2VsZWN0Q2hhbmdlIGZyb20gJyArIHRoaXMuaWQpO1xuICAgIC8vIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICBsZXQgY2hhbmdlID0gbmV3IENoYW5nZVdyYXBwZXIoKTsgLy8gQ2hhbmdlV3JhcHBlciA9IEpTT04ucGFyc2UoJ3t9Jyk7XG4gICAgY2hhbmdlLmZyb21RdWVzdGlvbklkID0gdGhpcy5pZDtcbiAgICBjaGFuZ2UudmFsdWVPYmogPSBldmVudCA/IGV2ZW50IDogJyc7XG4gICAgY2hhbmdlLnJlZmVyZW5jZUZpZWxkID0gdGhpcy5yZWZlcmVuY2VGaWVsZDtcbiAgICBjaGFuZ2Uuc2VsZWN0ZWRPYmogPSBldmVudCA/IGV2ZW50W3RoaXMubGFiZWxGaWVsZF0gOiAnJztcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2hhbmdlKTtcbiAgICAvLyBvbmNlIGdvdCB2YWx1ZSBpbiBkcm9wZG93biByZW1vdmUgdGhlIGVycm9yIHZhbGlkYXRpb25cbiAgICBpZihldmVudCl7XG4gICAgICB0aGlzLmludmFsaWRGaWVsZElkcyA9W107XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIEhBIDE4LUpBTi0yNCBDb21tZW50aW5nIHRoZXNlIGxpbmVzIGFzIHdlIGRvbid0IGhhdmUgdG8gdXNlIHNoZW5nZWwgaGVyZSAtLT5cbjwhLS0gPHNlbGVjdFxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2R0LWxpbmUgZHBEb3duIGRvd24gbXl0LWRyb3Bib3ggbXl0LWJvcmRlci1yIG15dC1mb250MSc6IHByb2dyZXNzQmFyLFxuICAgICdjdXN0b20tc2VsZWN0JzogIXByb2dyZXNzQmFyXG4gIH1cIiBjbGFzcz1cImN1c3RvbS1zZWxlY3QgbXItc20tMiBkZC1oZWlnaHRcIiBcbiAgW2lkXT1cImlkXCIgXG4gIFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZVwiXG4gIChjaGFuZ2UpPVwic2VsZWN0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpO1wiIFxuICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZXJyb3IgPyAncmVkJyA6ICcjODU4NTg1J1wiXG4gIFtzdHlsZS5jb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJydcIj5cbiAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJ0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50aXRsZSA6IG9wdGlvbi5WYWx1ZV9fY1wiIGNsYXNzPVwib3B0aW9uXCI+e3sgdGhpcy5hcGlNZXRhICE9PSB1bmRlZmluZWQgPyBvcHRpb24udGl0bGUgOiBvcHRpb24uVmFsdWVfX2MgfX08L29wdGlvbj5cbiAgICA8b3B0aW9uICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgdmFsdWU9XCJcIiBkaXNhYmxlZCBoaWRkZW4+e3sgZXJyb3JNZXNzYWdlIH19PC9vcHRpb24+XG48L3NlbGVjdD4gLS0+XG48IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbjwhLS0gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlLS0+XG48IS0tIFZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZS0tPlxuPCEtLSBWRCAyNU9jdDI0IC0gY2hhbmdlcy0tPlxuPG5nLXNlbGVjdFxuICAgICAgICAgICAgW2NsYXNzXT1cImludmFsaWRGaWVsZElkcy5pbmNsdWRlcyhpZCkgfHwgZXJyb3IgPyAnc2hlbmdlbC1jdXN0b20tc2VsZWN0IGludmFsaWQnIDogJ3NoZW5nZWwtY3VzdG9tLXNlbGVjdCdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCIgXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIChjbGljaykgPSBcImdldE9wdGlvbnMoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiPlxuICA8bmctb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJhcGlPYmogIT09IHVuZGVmaW5lZCAmJiAhYXBpT2JqLmlzRGVwZW5kZW50RmllbGQgPyBvcHRpb24gOiBvcHRpb24uVmFsdWVfX2NcIj57eyBhcGlPYmogIT09IHVuZGVmaW5lZCAmJiAhYXBpT2JqLmlzRGVwZW5kZW50RmllbGQgPyBvcHRpb25bbGFiZWxGaWVsZF0gOiBvcHRpb24uVmFsdWVfX2MgIH19PC9uZy1vcHRpb24+IFxuPC9uZy1zZWxlY3Q+XG48c3BhbiAqbmdJZj1cImVycm9yIHx8IGludmFsaWRGaWVsZElkcy5pbmNsdWRlcyhpZClcIiBjbGFzcz1cImVycm9yLW1zZ1wiPnt7ZXJyb3JNZXNzYWdlfX08L3NwYW4+XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpbWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9pbnRlcmZhY2VzL2FwaW1ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVBJTWV0YSB7XG4gICAgLy8gVkQgTk92MjMgLSBhZGRlZCB2YXJpYWJsZXMgZm9yIGRlcGVuZGVudCB1cGRhdGVcbiAgICBzb3VyY2VRdWVzdGlvbklkOnN0cmluZztcbiAgICB2YWx1ZUZpZWxkOnN0cmluZztcbiAgICBsYWJlbEZpZWxkOnN0cmluZztcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIHZhcmlhYmxlOiBzdHJpbmc7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICAvL1ZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgIGlzRGVwZW5kZW50RmllbGQ6Ym9vbGVhbjtcbiAgICBkZXBlbmRlbnRWYWx1ZTpzdHJpbmc7XG4gICAgLy8gVkQgMDlTZXAyNCAtIHF1ZXJ5UGFyYW0gY2hhbmdlcyBmb3IgYXBpIGRhdGEgXG4gICAgcXVlcnlGaWVsZDpzdHJpbmc7XG4gICAgcXVlcnlWYWx1ZVJlZmVyZW5jZTpzdHJpbmc7XG4gICAgLy9WRCAyNW9jdC0yNCAtIGNoYW5nZXMobmVlZCB0byBkb2N1bWVudClcbiAgICB1bmlxdWVLZXk6IHN0cmluZztcblxufVxuIl19
|
|
@@ -1821,94 +1821,117 @@ class CustomDropdownComponent {
|
|
|
1821
1821
|
valueField;
|
|
1822
1822
|
subscription;
|
|
1823
1823
|
apiObj;
|
|
1824
|
+
uniqueKey;
|
|
1824
1825
|
ngOnInit() {
|
|
1826
|
+
}
|
|
1827
|
+
getOptions() {
|
|
1828
|
+
console.log('test click');
|
|
1825
1829
|
// console.log('inside oninit of custom-dropdown of ' + this.id);
|
|
1826
1830
|
// console.log(this.apiMeta);
|
|
1827
1831
|
//VD 07Aug24 - isDependentField change
|
|
1832
|
+
// VD 25Oct24 - changes
|
|
1828
1833
|
this.placeholder = this.placeholder ? this.placeholder : '---Select option---';
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
if (this.apiObj.
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
//
|
|
1844
|
-
let
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
// VD 19JAN24 - added one more param for authentication
|
|
1858
|
-
this.dataService.apiResponse(fullEndPoint)?.subscribe((apiResponse) => {
|
|
1859
|
-
// HA 18-JAN-24 Assigned apiresponse directly if we have the response in array also
|
|
1860
|
-
// VD 19JAN24 - if response has key with value(which is array)
|
|
1861
|
-
let responses;
|
|
1862
|
-
if (this.apiObj.variable) {
|
|
1863
|
-
// VD 21May24 - handling multiple child objects
|
|
1864
|
-
// VD 22May24 - used common service file
|
|
1865
|
-
responses = this.dataService.getValue(apiResponse, this.apiObj.variable);
|
|
1866
|
-
let results = [];
|
|
1867
|
-
// HA 19JAN24 To avoid undefined error in console
|
|
1868
|
-
for (let i = 0; i < responses?.length; i++) {
|
|
1869
|
-
var resp = responses[i];
|
|
1870
|
-
results.push(resp);
|
|
1871
|
-
}
|
|
1872
|
-
this.options = results;
|
|
1834
|
+
const cachedOptions = localStorage.getItem(this.uniqueKey);
|
|
1835
|
+
if (cachedOptions) {
|
|
1836
|
+
this.options = JSON.parse(cachedOptions);
|
|
1837
|
+
}
|
|
1838
|
+
else {
|
|
1839
|
+
if (this.apiMeta !== undefined) {
|
|
1840
|
+
this.apiObj = JSON.parse(this.apiMeta);
|
|
1841
|
+
if (!this.apiObj.isDependentField) {
|
|
1842
|
+
this.options = [];
|
|
1843
|
+
this.labelField = this.apiObj.field;
|
|
1844
|
+
// VD 09Sep24- setup the query param for api call
|
|
1845
|
+
let fullEndPoint;
|
|
1846
|
+
if (this.apiObj.endpoint) {
|
|
1847
|
+
if (this.apiObj.queryValueReference && this.apiObj.queryField) {
|
|
1848
|
+
// process the end point with query param
|
|
1849
|
+
let queryReferences = this.apiObj.queryValueReference.split(',');
|
|
1850
|
+
let queryParams = [];
|
|
1851
|
+
// Iterate over queryReferences and find the corresponding element in referenceData
|
|
1852
|
+
queryReferences.forEach(reference => {
|
|
1853
|
+
// Find the element in referenceData that matches the current reference
|
|
1854
|
+
let matchingElement = this.question?.referenceQueryData.find(element => element.Reference_Field__c === reference);
|
|
1855
|
+
// If a matching element is found, get its input value and create a query parameter
|
|
1856
|
+
if (matchingElement) {
|
|
1857
|
+
queryParams.push(`${reference}=${matchingElement.input}`);
|
|
1858
|
+
}
|
|
1859
|
+
});
|
|
1860
|
+
fullEndPoint = this.apiObj.endpoint + '?' + queryParams.join('&');
|
|
1861
|
+
console.log(fullEndPoint);
|
|
1873
1862
|
}
|
|
1874
|
-
else {
|
|
1875
|
-
|
|
1876
|
-
|
|
1863
|
+
else {
|
|
1864
|
+
// if no query param get the actual endPoint
|
|
1865
|
+
fullEndPoint = this.apiObj.endpoint;
|
|
1877
1866
|
}
|
|
1878
|
-
//
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
let sourceId = this.apiObj.sourceQuestionId;
|
|
1885
|
-
if (sourceId && this.apiObj.variable || this.apiObj.valueField) {
|
|
1886
|
-
// Subscribe for the changes
|
|
1887
|
-
this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
|
|
1888
|
-
if (changeValue != undefined) {
|
|
1889
|
-
// console.log('inside subscription for the change');
|
|
1890
|
-
if (changeValue.valueObj != undefined && changeValue.fromQuestionId == this.apiObj.sourceQuestionId) {
|
|
1891
|
-
// this.selectedValue = changeValue.valueObj[this.apiObj.valueField];
|
|
1892
|
-
// let value ={};
|
|
1893
|
-
// value['name'] = this.selectedValue;
|
|
1867
|
+
// VD 19JAN24 - added one more param for authentication
|
|
1868
|
+
this.dataService.apiResponse(fullEndPoint)?.subscribe((apiResponse) => {
|
|
1869
|
+
// HA 18-JAN-24 Assigned apiresponse directly if we have the response in array also
|
|
1870
|
+
// VD 19JAN24 - if response has key with value(which is array)
|
|
1871
|
+
// VD 25Oct24 changes
|
|
1872
|
+
this.uniqueKey = this.dataService.getValue(apiResponse, this.apiObj.uniqueKey);
|
|
1894
1873
|
let responses;
|
|
1895
1874
|
if (this.apiObj.variable) {
|
|
1896
|
-
|
|
1875
|
+
// VD 21May24 - handling multiple child objects
|
|
1876
|
+
// VD 22May24 - used common service file
|
|
1877
|
+
responses = this.dataService.getValue(apiResponse, this.apiObj.variable);
|
|
1897
1878
|
let results = [];
|
|
1879
|
+
// HA 19JAN24 To avoid undefined error in console
|
|
1898
1880
|
for (let i = 0; i < responses?.length; i++) {
|
|
1899
1881
|
var resp = responses[i];
|
|
1900
1882
|
results.push(resp);
|
|
1901
1883
|
}
|
|
1902
1884
|
this.options = results;
|
|
1903
1885
|
}
|
|
1904
|
-
else {
|
|
1905
|
-
responses =
|
|
1886
|
+
else { // VD 19JAN24 - if response has value(which is array) only
|
|
1887
|
+
responses = apiResponse;
|
|
1906
1888
|
this.options = responses;
|
|
1907
1889
|
}
|
|
1908
|
-
|
|
1909
|
-
|
|
1890
|
+
// VD 25Oct24 - Store fetched options in local storage
|
|
1891
|
+
if (this.uniqueKey) {
|
|
1892
|
+
localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));
|
|
1893
|
+
}
|
|
1894
|
+
// Reference https://www.npmjs.com/package/@ng-select/ng-select
|
|
1895
|
+
});
|
|
1910
1896
|
}
|
|
1911
|
-
}
|
|
1897
|
+
}
|
|
1898
|
+
// VD NOV23 - handle the dependent update for dropdown
|
|
1899
|
+
// // VD 09Sep24- push the dependent field values for dropdown
|
|
1900
|
+
let sourceId = this.apiObj.sourceQuestionId;
|
|
1901
|
+
if (sourceId && this.apiObj.variable || this.apiObj.valueField) {
|
|
1902
|
+
// Subscribe for the changes
|
|
1903
|
+
this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
|
|
1904
|
+
if (changeValue != undefined) {
|
|
1905
|
+
// console.log('inside subscription for the change');
|
|
1906
|
+
if (changeValue.valueObj != undefined && changeValue.fromQuestionId == this.apiObj.sourceQuestionId) {
|
|
1907
|
+
// this.selectedValue = changeValue.valueObj[this.apiObj.valueField];
|
|
1908
|
+
// let value ={};
|
|
1909
|
+
// value['name'] = this.selectedValue;
|
|
1910
|
+
// VD 25Oct24 changes
|
|
1911
|
+
this.uniqueKey = this.dataService.getValue(changeValue.valueObj, this.apiObj.uniqueKey);
|
|
1912
|
+
let responses;
|
|
1913
|
+
if (this.apiObj.variable) {
|
|
1914
|
+
responses = this.dataService.getValue(changeValue.valueObj, this.apiObj.variable);
|
|
1915
|
+
let results = [];
|
|
1916
|
+
for (let i = 0; i < responses?.length; i++) {
|
|
1917
|
+
var resp = responses[i];
|
|
1918
|
+
results.push(resp);
|
|
1919
|
+
}
|
|
1920
|
+
this.options = results;
|
|
1921
|
+
}
|
|
1922
|
+
else {
|
|
1923
|
+
responses = changeValue.valueObj;
|
|
1924
|
+
this.options = responses;
|
|
1925
|
+
}
|
|
1926
|
+
// VD 25Oct24 - Store fetched options in local storage
|
|
1927
|
+
if (this.uniqueKey) {
|
|
1928
|
+
localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
this.changeService.confirmChange(this.apiObj.sourceQuestionId);
|
|
1932
|
+
}
|
|
1933
|
+
});
|
|
1934
|
+
}
|
|
1912
1935
|
}
|
|
1913
1936
|
}
|
|
1914
1937
|
}
|
|
@@ -1928,11 +1951,11 @@ class CustomDropdownComponent {
|
|
|
1928
1951
|
}
|
|
1929
1952
|
}
|
|
1930
1953
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, deps: [{ token: ChangeService }, { token: DataService }, { token: I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1931
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }] });
|
|
1954
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click) = \"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }] });
|
|
1932
1955
|
}
|
|
1933
1956
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, decorators: [{
|
|
1934
1957
|
type: Component,
|
|
1935
|
-
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
1958
|
+
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.Value__c\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.Value__c }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click) = \"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option *ngFor=\"let option of options\" [value]=\"apiObj !== undefined && !apiObj.isDependentField ? option : option.Value__c\">{{ apiObj !== undefined && !apiObj.isDependentField ? option[labelField] : option.Value__c }}</ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
1936
1959
|
}], ctorParameters: function () { return [{ type: ChangeService }, { type: DataService }, { type: I18nService }]; }, propDecorators: { options: [{
|
|
1937
1960
|
type: Input
|
|
1938
1961
|
}], placeholder: [{
|