@guajiritos/general-autocomplete 0.0.6 → 0.0.8
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/esm2020/guajiritos-general-autocomplete.mjs +4 -4
- package/esm2020/lib/guachos-general-autocomplete.component.mjs +327 -309
- package/esm2020/lib/guachos-general-autocomplete.module.mjs +108 -108
- package/esm2020/public-api.mjs +7 -7
- package/esm2020/utils/constants/contacts.mjs +9 -9
- package/esm2020/utils/interfaces/interfaces.mjs +11 -11
- package/esm2020/utils/pipes/duration.pipe.mjs +17 -17
- package/esm2020/utils/pipes/humanize-duration.pipe.mjs +16 -16
- package/esm2020/utils/pipes/i18n-field.pipe.mjs +27 -27
- package/esm2020/utils/pipes/ida-return.pipe.mjs +22 -22
- package/esm2020/utils/pipes/resolve-property-path.pipe.mjs +79 -79
- package/esm2020/utils/pipes/show-roles.pipe.mjs +23 -23
- package/esm2020/utils/pipes/show-segments.pipe.mjs +23 -23
- package/esm2020/utils/pipes/show-transport-types.pipe.mjs +23 -23
- package/esm2020/utils/services/autocomplete.service.mjs +161 -161
- package/esm2020/utils/services/utils.service.mjs +47 -47
- package/fesm2015/guajiritos-general-autocomplete.mjs +802 -784
- package/fesm2015/guajiritos-general-autocomplete.mjs.map +1 -1
- package/fesm2020/guajiritos-general-autocomplete.mjs +798 -780
- package/fesm2020/guajiritos-general-autocomplete.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/guachos-general-autocomplete.component.d.ts +72 -72
- package/lib/guachos-general-autocomplete.module.d.ts +24 -24
- package/package.json +3 -2
- package/public-api.d.ts +4 -4
- package/utils/constants/contacts.d.ts +2 -2
- package/utils/interfaces/interfaces.d.ts +33 -33
- package/utils/pipes/duration.pipe.d.ts +8 -8
- package/utils/pipes/humanize-duration.pipe.d.ts +7 -7
- package/utils/pipes/i18n-field.pipe.d.ts +7 -7
- package/utils/pipes/ida-return.pipe.d.ts +8 -8
- package/utils/pipes/resolve-property-path.pipe.d.ts +24 -24
- package/utils/pipes/show-roles.pipe.d.ts +8 -8
- package/utils/pipes/show-segments.pipe.d.ts +8 -8
- package/utils/pipes/show-transport-types.pipe.d.ts +8 -8
- package/utils/services/autocomplete.service.d.ts +15 -15
- package/utils/services/utils.service.d.ts +25 -25
@@ -1,309 +1,327 @@
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
2
|
-
import {
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
4
|
-
import { debounceTime, Subject, takeUntil } from 'rxjs';
|
5
|
-
import { GENERAL_DISPLAY_OPTIONS } from '../utils/constants/contacts';
|
6
|
-
import { AutocompleteService } from '../utils/services/autocomplete.service';
|
7
|
-
import { UtilsService } from '../utils/services/utils.service';
|
8
|
-
import * as i0 from "@angular/core";
|
9
|
-
import * as i1 from "../utils/services/autocomplete.service";
|
10
|
-
import * as i2 from "@ngx-translate/core";
|
11
|
-
import * as i3 from "@angular/common";
|
12
|
-
import * as i4 from "@angular/forms";
|
13
|
-
import * as i5 from "@angular/material/form-field";
|
14
|
-
import * as i6 from "@angular/material/icon";
|
15
|
-
import * as i7 from "@angular/material/progress-spinner";
|
16
|
-
import * as i8 from "@angular/material/button";
|
17
|
-
import * as i9 from "@angular/material/input";
|
18
|
-
import * as i10 from "@angular/material/autocomplete";
|
19
|
-
import * as i11 from "@angular/material/core";
|
20
|
-
import * as i12 from "../utils/pipes/i18n-field.pipe";
|
21
|
-
import * as i13 from "../utils/pipes/resolve-property-path.pipe";
|
22
|
-
export class GuajiritosGeneralAutocompleteComponent {
|
23
|
-
constructor(_autocompleteService, _cdRef, translateService) {
|
24
|
-
this._autocompleteService = _autocompleteService;
|
25
|
-
this._cdRef = _cdRef;
|
26
|
-
this.
|
27
|
-
this.
|
28
|
-
this.
|
29
|
-
this.
|
30
|
-
this.
|
31
|
-
this.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
this.
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
this.
|
41
|
-
this.
|
42
|
-
this.
|
43
|
-
this.
|
44
|
-
this.
|
45
|
-
this.
|
46
|
-
this.
|
47
|
-
this.
|
48
|
-
this.
|
49
|
-
this.order = null;
|
50
|
-
this.removeProperties = [];
|
51
|
-
this.SelectElement = new EventEmitter();
|
52
|
-
this.onChanged = () => {
|
53
|
-
};
|
54
|
-
this.onTouched = () => {
|
55
|
-
};
|
56
|
-
this.displayFn = (value) => {
|
57
|
-
if (value) {
|
58
|
-
if (typeof value === 'string') {
|
59
|
-
return value;
|
60
|
-
}
|
61
|
-
let displayText = '';
|
62
|
-
if (!this.displayOptions) {
|
63
|
-
this.displayOptions = GENERAL_DISPLAY_OPTIONS;
|
64
|
-
}
|
65
|
-
this.displayOptions?.firthLabel?.forEach((field) => {
|
66
|
-
if (field?.type === 'path') {
|
67
|
-
displayText += UtilsService.resolvePropertyByPath(value, field?.path);
|
68
|
-
}
|
69
|
-
else {
|
70
|
-
displayText += field?.divider;
|
71
|
-
}
|
72
|
-
});
|
73
|
-
return displayText;
|
74
|
-
}
|
75
|
-
};
|
76
|
-
}
|
77
|
-
set
|
78
|
-
|
79
|
-
|
80
|
-
this.
|
81
|
-
}
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
this.
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
this.
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
}
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
}
|
182
|
-
|
183
|
-
this.
|
184
|
-
|
185
|
-
this.
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
this.
|
232
|
-
this._cdRef.detectChanges();
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
}
|
241
|
-
|
242
|
-
this.
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
{
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
type:
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
}],
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
}],
|
285
|
-
type: Input
|
286
|
-
}],
|
287
|
-
type: Input
|
288
|
-
}],
|
289
|
-
type: Input
|
290
|
-
}],
|
291
|
-
type: Input
|
292
|
-
}],
|
293
|
-
type: Input
|
294
|
-
}],
|
295
|
-
type:
|
296
|
-
}],
|
297
|
-
type: Input
|
298
|
-
}],
|
299
|
-
type: Input
|
300
|
-
}],
|
301
|
-
type: Input
|
302
|
-
}],
|
303
|
-
type: Input
|
304
|
-
}],
|
305
|
-
type: Input
|
306
|
-
}],
|
307
|
-
type: Input
|
308
|
-
}]
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxZQUFZLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTJCN0QsTUFBTSxPQUFPLHNDQUFzQztJQUUvQyxZQUNZLG9CQUF5QyxFQUN6QyxNQUF5QixFQUMxQixnQkFBa0M7UUFGakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxXQUFNLEdBQU4sTUFBTSxDQUFt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SixnSkNwREwsZzBFQXdDQTsyRkRjYSxzQ0FBc0M7a0JBYmxELFNBQVM7K0JBQ0ksaUNBQWlDLG1CQUcxQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVDQUF1QyxDQUFDOzRCQUNyRSxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjt5S0E0QnVDLFNBQVM7c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVNLEdBQUc7c0JBQWYsS0FBSztnQkFRTyxTQUFTO3NCQUFyQixLQUFLO2dCQWVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFRTyxVQUFVO3NCQUF0QixLQUFLO2dCQWdCTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1Db250cm9sLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtGbG9hdExhYmVsVHlwZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7R0VORVJBTF9ESVNQTEFZX09QVElPTlN9IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cy9jb250YWN0cyc7XG5pbXBvcnQge0F1dG9jb21wbGV0ZVNlcnZpY2V9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2VzL2F1dG9jb21wbGV0ZS5zZXJ2aWNlJztcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7QXBpRm9ybURhdGEsIERpc3BsYXlPcHRpb24sIFJlc3RyaWN0aW9uRmlsdGVyfSBmcm9tIFwiLi4vdXRpbHMvaW50ZXJmYWNlcy9pbnRlcmZhY2VzXCI7XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFBheWxvYWRSZXNwb25zZSB7XG4gICAgZGF0YTogYW55O1xuICAgIG1ldGE6IGFueTtcbn1cblxuZGVjbGFyZSBpbnRlcmZhY2UgR2VuZXJpY1Jlc3BvbnNlIHtcbiAgICBwYXlsb2FkOiBQYXlsb2FkUmVzcG9uc2U7XG4gICAgZXJyb3I6IGFueTtcbiAgICByZXF1ZXN0SWQ6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9hdXRvY29tcGxldGVTZXJ2aWNlOiBBdXRvY29tcGxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICkge1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXN0cmljdGlvbnNGaWx0ZXJzOiBSZXN0cmljdGlvbkZpbHRlcltdID0gW107XG4gICAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnQ6IGFueTtcbiAgICBwcml2YXRlIGRvRm9jdXNTdWJqZWN0OiBTdWJqZWN0PGFueT47XG4gICAgcHJpdmF0ZSBjbGVhckRhdGEkOiBTdWJqZWN0PGFueT47XG4gICAgcHJpdmF0ZSBfdXJsOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBjb21wb25lbnQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dFRleHQnLCB7c3RhdGljOiB0cnVlfSkgaW5wdXRUZXh0OiBFbGVtZW50UmVmO1xuICAgIC8qKlxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyAnbmV2ZXInLCAnYXV0bycgb3IgJ2Fsd2F5cydcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBib2R5UmVxdWVzdDogQXBpRm9ybURhdGE7XG4gICAgQElucHV0KCkgZGVib3VuY2VUaW1lVmFsdWU6IG51bWJlciA9IDI1MDtcbiAgICBASW5wdXQoKSBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdTZWxlY2Npb25lJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjY2lvbmUgdW4gZWxlbWVudG8nO1xuICAgIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmdbXSA9IFsnbmFtZSddO1xuICAgIEBJbnB1dCgpIGZpbHRlclN0cmluZzogc3RyaW5nID0gJ2ZpbHRlclskYW5kXVtuYW1lXVskbGlrZV0nO1xuICAgIEBJbnB1dCgpIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9uID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XG4gICAgQElucHV0KCkgd2l0aG91dFBhZGRpbmdCb3R0b206IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHZhbHVlSWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgb3JkZXI6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgcmVtb3ZlUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgICBAT3V0cHV0KCkgU2VsZWN0RWxlbWVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpIHNldCB1cmwoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl91cmwgPSBkYXRhO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUNvbXBvbmVudENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjbGVhckRhdGEodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNsZWFyRGF0YSQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuY2xlYXJEYXRhJCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRhdGEkXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RFbGVtZW50LmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VkKG51bGwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmVzdHJpY3Rpb25zKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RyaWN0aW9uc0ZpbHRlcnMgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGlzUmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHdWFqaXJpdG9zR2VuZXJhbEF1dG9jb21wbGV0ZUNvbXBvbmVudC5WYWxpZGF0ZUF1dG9jb21wbGV0ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgZ2V0IGRvRm9jdXMoKTogU3ViamVjdDxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9Gb2N1c1N1YmplY3Q7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRvRm9jdXModmFsdWU6IFN1YmplY3Q8YW55Pikge1xuICAgICAgICB0aGlzLmRvRm9jdXNTdWJqZWN0ID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRvRm9jdXNTdWJqZWN0XG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0VGV4dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBWYWxpZGF0ZUF1dG9jb21wbGV0ZShjb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgICAgICBpZiAoY29udHJvbD8udmFsdWU/LmNvbnN0cnVjdG9yICE9PSBPYmplY3QgfHwgIWNvbnRyb2w/LnZhbHVlPy5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtpbnZhbGlkU2VsZWN0aW9uOiB0cnVlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlQ29tcG9uZW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQ/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgPy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZVZhbHVlKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgICAgICAgID8uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmlyc3RDYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0aGlzLmdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdENhbGwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEF1dG9jb21wbGV0ZUJ5VGV4dEhhbmRsZXIodGV4dD86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0KHRoaXMuX3VybCwgdGV4dCwgdGhpcy5maWx0ZXJTdHJpbmcsIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycyxcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVByb3BlcnRpZXMsIHRoaXMub3JkZXIsIHRoaXMuYm9keVJlcXVlc3QpXG4gICAgICAgICAgICAudGhlbigocmVzcDogT2JzZXJ2YWJsZTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcD8uc3Vic2NyaWJlKChyZXN1bHQ6IEdlbmVyaWNSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHJlc3VsdD8ucGF5bG9hZD8uZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnQ/LnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50LnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFZhbHVlID0gdGhpcy5jb21wb25lbnQ/LnZhbHVlW3RoaXMuZmllbGRbMF1dXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmc6IHN0cmluZyA9ICdlcyc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5nID0gdGhpcy5maWVsZFsxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRleHQgPSBjb21wb25lbnRWYWx1ZVtsYW5nXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudD8udmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IHRoaXMuY29tcG9uZW50LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VkOiBhbnkgPSAoKSA9PiB7XG4gICAgfTtcblxuICAgIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge1xuICAgIH07XG5cbiAgICBwdWJsaWMgY2xlYXIodHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZChudWxsKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0aGlzLmdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0RWxlbWVudChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBpdGVtO1xuICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChpdGVtKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW07XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVJZCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZWQoaXRlbT8uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZWQoaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGRpc3BsYXlUZXh0ID0gJyc7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzcGxheU9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlPcHRpb25zPy5maXJ0aExhYmVsPy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkPy50eXBlID09PSAncGF0aCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRleHQgKz0gVXRpbHNTZXJ2aWNlLnJlc29sdmVQcm9wZXJ0eUJ5UGF0aCh2YWx1ZSwgZmllbGQ/LnBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUZXh0ICs9IGZpZWxkPy5kaXZpZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlUZXh0O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5pZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VkID0gZm47XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbbmdDbGFzc109XCJ7J3dpdGhvdXQtcGFkZGluZy1ib3R0b20nOiB3aXRob3V0UGFkZGluZ0JvdHRvbX1cIlxyXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuXHJcbiAgICA8bWF0LWxhYmVsPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0ICNpbnB1dFRleHQgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCIgKGJsdXIpPVwib25Ub3VjaGVkKClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVcIlxyXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb21wb25lbnRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgYXJpYS1sYWJlbD1cIk51bWJlclwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcih0cmlnZ2VyKVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgY29tcG9uZW50Py52YWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlXCIgYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cclxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwibG9hZGluZ1wiIGFyaWEtbGFiZWw9XCJDbGVhclwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyIFt2YWx1ZV09XCI5MFwiIGNvbG9yPVwiYWNjZW50XCIgZGlhbWV0ZXI9XCIyNVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3RFbGVtZW50KG9wdGlvbilcIj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzcGxheU9wdGlvbnMgJiYgIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uPy5uYW1lIHwgaTE4bkZpZWxkOiB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIH19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwieydsaW5lLWhlaWdodCc6IGRpc3BsYXlPcHRpb25zPy5zZWNvbmRMYWJlbCA/ICcxNnB4JyA6ICcnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uIHwgcmVzb2x2ZVByb3BlcnR5UGF0aDpkaXNwbGF5T3B0aW9ucz8uZmlydGhMYWJlbCB8IGkxOG5GaWVsZDogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ319XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRpc3BsYXlPcHRpb25zPy5zZWNvbmRMYWJlbFwiIGNsYXNzPVwibWF0LWNhcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e29wdGlvbiB8IHJlc29sdmVQcm9wZXJ0eVBhdGg6IGRpc3BsYXlPcHRpb25zPy5zZWNvbmRMYWJlbCB8IGkxOG5GaWVsZDogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ319XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0OiBvcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, TemplateRef, ViewChild } from '@angular/core';
|
2
|
+
import { NG_VALUE_ACCESSOR, UntypedFormControl, Validators } from '@angular/forms';
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
4
|
+
import { debounceTime, Subject, takeUntil } from 'rxjs';
|
5
|
+
import { GENERAL_DISPLAY_OPTIONS } from '../utils/constants/contacts';
|
6
|
+
import { AutocompleteService } from '../utils/services/autocomplete.service';
|
7
|
+
import { UtilsService } from '../utils/services/utils.service';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "../utils/services/autocomplete.service";
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
11
|
+
import * as i3 from "@angular/common";
|
12
|
+
import * as i4 from "@angular/forms";
|
13
|
+
import * as i5 from "@angular/material/form-field";
|
14
|
+
import * as i6 from "@angular/material/icon";
|
15
|
+
import * as i7 from "@angular/material/progress-spinner";
|
16
|
+
import * as i8 from "@angular/material/button";
|
17
|
+
import * as i9 from "@angular/material/input";
|
18
|
+
import * as i10 from "@angular/material/autocomplete";
|
19
|
+
import * as i11 from "@angular/material/core";
|
20
|
+
import * as i12 from "../utils/pipes/i18n-field.pipe";
|
21
|
+
import * as i13 from "../utils/pipes/resolve-property-path.pipe";
|
22
|
+
export class GuajiritosGeneralAutocompleteComponent {
|
23
|
+
constructor(_autocompleteService, _cdRef, _zone, translateService) {
|
24
|
+
this._autocompleteService = _autocompleteService;
|
25
|
+
this._cdRef = _cdRef;
|
26
|
+
this._zone = _zone;
|
27
|
+
this.translateService = translateService;
|
28
|
+
this.unsubscribeAll$ = new Subject();
|
29
|
+
this.firstCall = true;
|
30
|
+
this.restrictionsFilters = [];
|
31
|
+
this.required = true;
|
32
|
+
this.component = new UntypedFormControl({
|
33
|
+
value: null, disabled: false
|
34
|
+
});
|
35
|
+
this.disabledButton = false;
|
36
|
+
this.loading = false;
|
37
|
+
/**
|
38
|
+
* Possible values 'never', 'auto' or 'always'
|
39
|
+
*/
|
40
|
+
this.floatLabel = 'auto';
|
41
|
+
this.debounceTimeValue = 250;
|
42
|
+
this.label = 'Seleccione';
|
43
|
+
this.placeholder = 'Seleccione un elemento';
|
44
|
+
this.field = ['name'];
|
45
|
+
this.filterString = 'filter[$and][name][$like]';
|
46
|
+
this.displayOptions = GENERAL_DISPLAY_OPTIONS;
|
47
|
+
this.withoutPaddingBottom = true;
|
48
|
+
this.valueId = false;
|
49
|
+
this.order = null;
|
50
|
+
this.removeProperties = [];
|
51
|
+
this.SelectElement = new EventEmitter();
|
52
|
+
this.onChanged = () => {
|
53
|
+
};
|
54
|
+
this.onTouched = () => {
|
55
|
+
};
|
56
|
+
this.displayFn = (value) => {
|
57
|
+
if (value) {
|
58
|
+
if (typeof value === 'string') {
|
59
|
+
return value;
|
60
|
+
}
|
61
|
+
let displayText = '';
|
62
|
+
if (!this.displayOptions) {
|
63
|
+
this.displayOptions = GENERAL_DISPLAY_OPTIONS;
|
64
|
+
}
|
65
|
+
this.displayOptions?.firthLabel?.forEach((field) => {
|
66
|
+
if (field?.type === 'path') {
|
67
|
+
displayText += UtilsService.resolvePropertyByPath(value, field?.path);
|
68
|
+
}
|
69
|
+
else {
|
70
|
+
displayText += field?.divider;
|
71
|
+
}
|
72
|
+
});
|
73
|
+
return displayText;
|
74
|
+
}
|
75
|
+
};
|
76
|
+
}
|
77
|
+
set disable(flag) {
|
78
|
+
this.disabledButton = flag;
|
79
|
+
if (flag) {
|
80
|
+
this.component.disable();
|
81
|
+
}
|
82
|
+
else {
|
83
|
+
this.component.enable();
|
84
|
+
}
|
85
|
+
this._cdRef.detectChanges();
|
86
|
+
}
|
87
|
+
set url(data) {
|
88
|
+
if (data) {
|
89
|
+
this._url = data;
|
90
|
+
this.subscribeComponentChanges();
|
91
|
+
}
|
92
|
+
}
|
93
|
+
set clearData(value) {
|
94
|
+
this.clearData$ = value;
|
95
|
+
if (this.clearData$) {
|
96
|
+
this.clearData$
|
97
|
+
.pipe(takeUntil(this.unsubscribeAll$))
|
98
|
+
.subscribe({
|
99
|
+
next: () => {
|
100
|
+
this.component.setValue(null);
|
101
|
+
this.selectedElement = null;
|
102
|
+
this.SelectElement.emit(null);
|
103
|
+
this.filteredOptions = [];
|
104
|
+
this.onChanged(null);
|
105
|
+
}
|
106
|
+
});
|
107
|
+
}
|
108
|
+
}
|
109
|
+
set initialValue(value) {
|
110
|
+
this.component.setValue(value);
|
111
|
+
}
|
112
|
+
set restrictions(value) {
|
113
|
+
if (value) {
|
114
|
+
this.restrictionsFilters = value;
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
this.restrictionsFilters = [];
|
118
|
+
}
|
119
|
+
}
|
120
|
+
set isRequired(value) {
|
121
|
+
this.required = value;
|
122
|
+
if (this.required) {
|
123
|
+
this.component.setValidators([Validators.required, GuajiritosGeneralAutocompleteComponent.ValidateAutocomplete]);
|
124
|
+
}
|
125
|
+
else {
|
126
|
+
this.component.clearValidators();
|
127
|
+
}
|
128
|
+
this.component.updateValueAndValidity();
|
129
|
+
}
|
130
|
+
get doFocus() {
|
131
|
+
return this.doFocusSubject$;
|
132
|
+
}
|
133
|
+
set doFocus(value) {
|
134
|
+
this.doFocusSubject$ = value;
|
135
|
+
if (value) {
|
136
|
+
this.doFocusSubject$
|
137
|
+
.pipe(takeUntil(this.unsubscribeAll$))
|
138
|
+
.subscribe({
|
139
|
+
next: () => {
|
140
|
+
this._zone.run(() => {
|
141
|
+
setTimeout(() => {
|
142
|
+
this.inputText.nativeElement.focus();
|
143
|
+
}, 500);
|
144
|
+
});
|
145
|
+
}
|
146
|
+
});
|
147
|
+
}
|
148
|
+
}
|
149
|
+
static ValidateAutocomplete(control) {
|
150
|
+
if (control?.value?.constructor !== Object || !control?.value?.id) {
|
151
|
+
return { invalidSelection: true };
|
152
|
+
}
|
153
|
+
return null;
|
154
|
+
}
|
155
|
+
subscribeComponentChanges() {
|
156
|
+
this.component?.valueChanges
|
157
|
+
?.pipe(debounceTime(this.debounceTimeValue), takeUntil(this.unsubscribeAll$))
|
158
|
+
?.subscribe({
|
159
|
+
next: () => {
|
160
|
+
if (!this.firstCall) {
|
161
|
+
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
162
|
+
}
|
163
|
+
else {
|
164
|
+
this.firstCall = false;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
});
|
168
|
+
}
|
169
|
+
getAutocompleteByTextHandler(text) {
|
170
|
+
this._autocompleteService
|
171
|
+
.getAutocompleteByText(this._url, text, this.filterString, this.restrictionsFilters, this.removeProperties, this.order, this.bodyRequest)
|
172
|
+
.then((resp) => {
|
173
|
+
resp?.subscribe({
|
174
|
+
next: (result) => {
|
175
|
+
this.filteredOptions = result?.payload?.data || result?.data;
|
176
|
+
this.loading = false;
|
177
|
+
this._cdRef.detectChanges();
|
178
|
+
}
|
179
|
+
});
|
180
|
+
});
|
181
|
+
}
|
182
|
+
getAutocompleteSearchText() {
|
183
|
+
this.loading = true;
|
184
|
+
let text = null;
|
185
|
+
if (this.component?.value) {
|
186
|
+
if (typeof this.component.value === 'object') {
|
187
|
+
const componentValue = this.component?.value[this.field[0]];
|
188
|
+
if (typeof componentValue === 'object') {
|
189
|
+
let lang = 'es';
|
190
|
+
if (this.field[1]) {
|
191
|
+
lang = this.field[1];
|
192
|
+
}
|
193
|
+
text = componentValue[lang];
|
194
|
+
}
|
195
|
+
}
|
196
|
+
else if (typeof this.component?.value === 'string') {
|
197
|
+
text = this.component.value;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
return text;
|
201
|
+
}
|
202
|
+
writeValue(value) {
|
203
|
+
if (value) {
|
204
|
+
if (typeof value === 'number') {
|
205
|
+
this.value = value;
|
206
|
+
}
|
207
|
+
else if (typeof value === 'object') {
|
208
|
+
this.component.setValue(value);
|
209
|
+
this.value = value.id;
|
210
|
+
}
|
211
|
+
else {
|
212
|
+
this.value = value;
|
213
|
+
}
|
214
|
+
}
|
215
|
+
else {
|
216
|
+
this.value = null;
|
217
|
+
}
|
218
|
+
this._cdRef.detectChanges();
|
219
|
+
}
|
220
|
+
registerOnChange(fn) {
|
221
|
+
this.onChanged = fn;
|
222
|
+
this._cdRef.detectChanges();
|
223
|
+
}
|
224
|
+
registerOnTouched(fn) {
|
225
|
+
this.onTouched = fn;
|
226
|
+
this._cdRef.detectChanges();
|
227
|
+
}
|
228
|
+
clear(trigger) {
|
229
|
+
this.component.setValue(null);
|
230
|
+
this.selectedElement = null;
|
231
|
+
this.SelectElement.emit(null);
|
232
|
+
this._cdRef.detectChanges();
|
233
|
+
this.onChanged(null);
|
234
|
+
this._zone.run(() => {
|
235
|
+
setTimeout(() => {
|
236
|
+
trigger.openPanel();
|
237
|
+
this._cdRef.detectChanges();
|
238
|
+
}, 200);
|
239
|
+
});
|
240
|
+
}
|
241
|
+
onFocus() {
|
242
|
+
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
243
|
+
}
|
244
|
+
onSelectElement(item) {
|
245
|
+
this.selectedElement = item;
|
246
|
+
this.SelectElement.emit(item);
|
247
|
+
this.value = item;
|
248
|
+
if (this.valueId) {
|
249
|
+
this.onChanged(item?.id);
|
250
|
+
}
|
251
|
+
else {
|
252
|
+
this.onChanged(item);
|
253
|
+
}
|
254
|
+
this._cdRef.detectChanges();
|
255
|
+
}
|
256
|
+
ngOnInit() {
|
257
|
+
this.component.markAllAsTouched();
|
258
|
+
}
|
259
|
+
ngOnDestroy() {
|
260
|
+
this.unsubscribeAll$.next();
|
261
|
+
this.unsubscribeAll$.complete();
|
262
|
+
}
|
263
|
+
}
|
264
|
+
GuajiritosGeneralAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GuajiritosGeneralAutocompleteComponent, deps: [{ token: i1.AutocompleteService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
265
|
+
GuajiritosGeneralAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: GuajiritosGeneralAutocompleteComponent, selector: "guajiritos-general-autocomplete", inputs: { floatLabel: "floatLabel", bodyRequest: "bodyRequest", debounceTimeValue: "debounceTimeValue", detailsTemplate: "detailsTemplate", label: "label", placeholder: "placeholder", field: "field", filterString: "filterString", displayOptions: "displayOptions", withoutPaddingBottom: "withoutPaddingBottom", valueId: "valueId", order: "order", removeProperties: "removeProperties", disable: "disable", url: "url", clearData: "clearData", initialValue: "initialValue", restrictions: "restrictions", isRequired: "isRequired", doFocus: "doFocus" }, outputs: { SelectElement: "SelectElement" }, providers: [
|
266
|
+
{
|
267
|
+
provide: NG_VALUE_ACCESSOR,
|
268
|
+
useExisting: forwardRef(() => GuajiritosGeneralAutocompleteComponent),
|
269
|
+
multi: true
|
270
|
+
}
|
271
|
+
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\"\r\n appearance=\"outline\" class=\"w-100\" color=\"accent\">\r\n\r\n <mat-label>{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (blur)=\"onTouched()\" (focus)=\"onFocus()\"\r\n [formControl]=\"component\" [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\"\r\n aria-label=\"Number\" autocomplete=\"off\" matInput type=\"text\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading && component?.value\" [disabled]=\"disabledButton\" aria-label=\"Clear\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading\" aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\"\r\n (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions?.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions?.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: ["::ng-deep .without-padding-bottom .mat-form-field-wrapper{padding-bottom:0!important}.w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.I18nFieldPipe, name: "i18nField" }, { kind: "pipe", type: i13.ResolvePropertyPath, name: "resolvePropertyPath" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: GuajiritosGeneralAutocompleteComponent, decorators: [{
|
273
|
+
type: Component,
|
274
|
+
args: [{ selector: 'guajiritos-general-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
275
|
+
{
|
276
|
+
provide: NG_VALUE_ACCESSOR,
|
277
|
+
useExisting: forwardRef(() => GuajiritosGeneralAutocompleteComponent),
|
278
|
+
multi: true
|
279
|
+
}
|
280
|
+
], template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\"\r\n appearance=\"outline\" class=\"w-100\" color=\"accent\">\r\n\r\n <mat-label>{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (blur)=\"onTouched()\" (focus)=\"onFocus()\"\r\n [formControl]=\"component\" [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\"\r\n aria-label=\"Number\" autocomplete=\"off\" matInput type=\"text\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading && component?.value\" [disabled]=\"disabledButton\" aria-label=\"Clear\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading\" aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\"\r\n (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions?.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions?.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: ["::ng-deep .without-padding-bottom .mat-form-field-wrapper{padding-bottom:0!important}.w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"] }]
|
281
|
+
}], ctorParameters: function () { return [{ type: i1.AutocompleteService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.TranslateService }]; }, propDecorators: { inputText: [{
|
282
|
+
type: ViewChild,
|
283
|
+
args: ['inputText', { static: true }]
|
284
|
+
}], floatLabel: [{
|
285
|
+
type: Input
|
286
|
+
}], bodyRequest: [{
|
287
|
+
type: Input
|
288
|
+
}], debounceTimeValue: [{
|
289
|
+
type: Input
|
290
|
+
}], detailsTemplate: [{
|
291
|
+
type: Input
|
292
|
+
}], label: [{
|
293
|
+
type: Input
|
294
|
+
}], placeholder: [{
|
295
|
+
type: Input
|
296
|
+
}], field: [{
|
297
|
+
type: Input
|
298
|
+
}], filterString: [{
|
299
|
+
type: Input
|
300
|
+
}], displayOptions: [{
|
301
|
+
type: Input
|
302
|
+
}], withoutPaddingBottom: [{
|
303
|
+
type: Input
|
304
|
+
}], valueId: [{
|
305
|
+
type: Input
|
306
|
+
}], order: [{
|
307
|
+
type: Input
|
308
|
+
}], removeProperties: [{
|
309
|
+
type: Input
|
310
|
+
}], SelectElement: [{
|
311
|
+
type: Output
|
312
|
+
}], disable: [{
|
313
|
+
type: Input
|
314
|
+
}], url: [{
|
315
|
+
type: Input
|
316
|
+
}], clearData: [{
|
317
|
+
type: Input
|
318
|
+
}], initialValue: [{
|
319
|
+
type: Input
|
320
|
+
}], restrictions: [{
|
321
|
+
type: Input
|
322
|
+
}], isRequired: [{
|
323
|
+
type: Input
|
324
|
+
}], doFocus: [{
|
325
|
+
type: Input
|
326
|
+
}] } });
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3ZHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxZQUFZLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWdCN0QsTUFBTSxPQUFPLHNDQUFzQztJQUVqRCxZQUNVLG9CQUF5QyxFQUN6QyxNQUF5QixFQUN6QixLQUFhLEVBQ2QsZ0JBQWtDO1FBSGpDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFD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LEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVNLE9BQU87c0JBQW5CLEtBQUs7Z0JBVU8sR0FBRztzQkFBZixLQUFLO2dCQVFPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBaUJPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFRTyxVQUFVO3NCQUF0QixLQUFLO2dCQWdCTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0dFTkVSQUxfRElTUExBWV9PUFRJT05TfSBmcm9tICcuLi91dGlscy9jb25zdGFudHMvY29udGFjdHMnO1xuaW1wb3J0IHtBdXRvY29tcGxldGVTZXJ2aWNlfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy9hdXRvY29tcGxldGUuc2VydmljZSc7XG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vdXRpbHMvc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQge0FwaUZvcm1EYXRhLCBEaXNwbGF5T3B0aW9uLCBSZXN0cmljdGlvbkZpbHRlcn0gZnJvbSBcIi4uL3V0aWxzL2ludGVyZmFjZXMvaW50ZXJmYWNlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWNob3MtZ2VuZXJhbC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hdXRvY29tcGxldGVTZXJ2aWNlOiBBdXRvY29tcGxldGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUFsbCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgcmVzdHJpY3Rpb25zRmlsdGVyczogUmVzdHJpY3Rpb25GaWx0ZXJbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudDogYW55O1xuICBwcml2YXRlIGRvRm9jdXNTdWJqZWN0JDogU3ViamVjdDx2b2lkPjtcbiAgcHJpdmF0ZSBjbGVhckRhdGEkOiBTdWJqZWN0PHZvaWQ+O1xuICBwcml2YXRlIF91cmw6IHN0cmluZztcblxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgY29tcG9uZW50OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHtcbiAgICB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlXG4gIH0pO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGRpc2FibGVkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xuICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGV4dCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dFRleHQ6IEVsZW1lbnRSZWY7XG4gIC8qKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgJ25ldmVyJywgJ2F1dG8nIG9yICdhbHdheXMnXG4gICAqL1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgYm9keVJlcXVlc3Q6IEFwaUZvcm1EYXRhO1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWVWYWx1ZTogbnVtYmVyID0gMjUwO1xuICBASW5wdXQoKSBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnU2VsZWNjaW9uZSc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWNjaW9uZSB1biBlbGVtZW50byc7XG4gIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmdbXSA9IFsnbmFtZSddO1xuICBASW5wdXQoKSBmaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICdmaWx0ZXJbJGFuZF1bbmFtZV1bJGxpa2VdJztcbiAgQElucHV0KCkgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb24gPSBHRU5FUkFMX0RJU1BMQVlfT1BUSU9OUztcbiAgQElucHV0KCkgd2l0aG91dFBhZGRpbmdCb3R0b206IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB2YWx1ZUlkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9yZGVyOiBzdHJpbmcgPSBudWxsO1xuICBASW5wdXQoKSByZW1vdmVQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBAT3V0cHV0KCkgU2VsZWN0RWxlbWVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZShmbGFnOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZEJ1dHRvbiA9IGZsYWc7XG4gICAgaWYgKGZsYWcpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb21wb25lbnQuZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB1cmwoZGF0YTogc3RyaW5nKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMuX3VybCA9IGRhdGE7XG5cbiAgICAgIHRoaXMuc3Vic2NyaWJlQ29tcG9uZW50Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjbGVhckRhdGEodmFsdWU6IFN1YmplY3Q8dm9pZD4pIHtcbiAgICB0aGlzLmNsZWFyRGF0YSQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jbGVhckRhdGEkKSB7XG4gICAgICB0aGlzLmNsZWFyRGF0YSRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpbml0aWFsVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByZXN0cmljdGlvbnModmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpc1JlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlQ29tcG9uZW50LlZhbGlkYXRlQXV0b2NvbXBsZXRlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIGdldCBkb0ZvY3VzKCk6IFN1YmplY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZG9Gb2N1c1N1YmplY3QkO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRvRm9jdXModmFsdWU6IFN1YmplY3Q8dm9pZD4pIHtcbiAgICB0aGlzLmRvRm9jdXNTdWJqZWN0JCA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmRvRm9jdXNTdWJqZWN0JFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgVmFsaWRhdGVBdXRvY29tcGxldGUoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgaWYgKGNvbnRyb2w/LnZhbHVlPy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8ICFjb250cm9sPy52YWx1ZT8uaWQpIHtcbiAgICAgIHJldHVybiB7aW52YWxpZFNlbGVjdGlvbjogdHJ1ZX07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUNvbXBvbmVudENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQ/LnZhbHVlQ2hhbmdlc1xuICAgICAgPy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZVZhbHVlKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgID8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5maXJzdENhbGwpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0aGlzLmdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDYWxsID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0ZXh0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b2NvbXBsZXRlU2VydmljZVxuICAgICAgLmdldEF1dG9jb21wbGV0ZUJ5VGV4dCh0aGlzLl91cmwsIHRleHQsIHRoaXMuZmlsdGVyU3RyaW5nLCB0aGlzLnJlc3RyaWN0aW9uc0ZpbHRlcnMsXG4gICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydGllcywgdGhpcy5vcmRlciwgdGhpcy5ib2R5UmVxdWVzdClcbiAgICAgIC50aGVuKChyZXNwOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICAgICAgcmVzcD8uc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gcmVzdWx0Py5wYXlsb2FkPy5kYXRhIHx8IHJlc3VsdD8uZGF0YTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpOiBzdHJpbmcge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICBsZXQgdGV4dDogc3RyaW5nID0gbnVsbDtcbiAgICBpZiAodGhpcy5jb21wb25lbnQ/LnZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50LnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBjb21wb25lbnRWYWx1ZSA9IHRoaXMuY29tcG9uZW50Py52YWx1ZVt0aGlzLmZpZWxkWzBdXVxuICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGxldCBsYW5nOiBzdHJpbmcgPSAnZXMnO1xuICAgICAgICAgIGlmICh0aGlzLmZpZWxkWzFdKSB7XG4gICAgICAgICAgICBsYW5nID0gdGhpcy5maWVsZFsxXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0ZXh0ID0gY29tcG9uZW50VmFsdWVbbGFuZ107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50Py52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGV4dCA9IHRoaXMuY29tcG9uZW50LnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgb25DaGFuZ2VkOiBhbnkgPSAoKSA9PiB7XG4gIH07XG5cbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7XG4gIH07XG5cbiAgZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRpc3BsYXlUZXh0ID0gJyc7XG4gICAgICBpZiAoIXRoaXMuZGlzcGxheU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IEdFTkVSQUxfRElTUExBWV9PUFRJT05TO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9ucz8uZmlydGhMYWJlbD8uZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdwYXRoJykge1xuICAgICAgICAgIGRpc3BsYXlUZXh0ICs9IFV0aWxzU2VydmljZS5yZXNvbHZlUHJvcGVydHlCeVBhdGgodmFsdWUsIGZpZWxkPy5wYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwbGF5VGV4dCArPSBmaWVsZD8uZGl2aWRlcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZGlzcGxheVRleHQ7XG4gICAgfVxuICB9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlZCA9IGZuO1xuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcih0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuU2VsZWN0RWxlbWVudC5lbWl0KG51bGwpO1xuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLm9uQ2hhbmdlZChudWxsKTtcblxuICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0cmlnZ2VyLm9wZW5QYW5lbCgpO1xuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEVsZW1lbnQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBpdGVtO1xuICAgIHRoaXMuU2VsZWN0RWxlbWVudC5lbWl0KGl0ZW0pO1xuICAgIHRoaXMudmFsdWUgPSBpdGVtO1xuXG4gICAgaWYgKHRoaXMudmFsdWVJZCkge1xuICAgICAgdGhpcy5vbkNoYW5nZWQoaXRlbT8uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlZChpdGVtKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZUFsbCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbbmdDbGFzc109XCJ7J3dpdGhvdXQtcGFkZGluZy1ib3R0b20nOiB3aXRob3V0UGFkZGluZ0JvdHRvbX1cIlxyXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuXHJcbiAgICA8bWF0LWxhYmVsPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0ICNpbnB1dFRleHQgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCIgKGJsdXIpPVwib25Ub3VjaGVkKClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29tcG9uZW50XCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgIGFyaWEtbGFiZWw9XCJOdW1iZXJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBtYXRJbnB1dCB0eXBlPVwidGV4dFwiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIodHJpZ2dlcilcIiAqbmdJZj1cIiFsb2FkaW5nICYmIGNvbXBvbmVudD8udmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRCdXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJsb2FkaW5nXCIgYXJpYS1sYWJlbD1cIkNsZWFyXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cclxuICAgICAgICA8bWF0LXNwaW5uZXIgW3ZhbHVlXT1cIjkwXCIgY29sb3I9XCJhY2NlbnRcIiBkaWFtZXRlcj1cIjI1XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdEVsZW1lbnQob3B0aW9uKVwiPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNwbGF5T3B0aW9ucyAmJiAhZGV0YWlsc1RlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm5hbWUgfCBpMThuRmllbGQ6IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J2xpbmUtaGVpZ2h0JzogZGlzcGxheU9wdGlvbnM/LnNlY29uZExhYmVsID8gJzE2cHgnIDogJyd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tvcHRpb24gfCByZXNvbHZlUHJvcGVydHlQYXRoOmRpc3BsYXlPcHRpb25zPy5maXJ0aExhYmVsIHwgaTE4bkZpZWxkOiB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheU9wdGlvbnM/LnNlY29uZExhYmVsXCIgY2xhc3M9XCJtYXQtY2FwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uIHwgcmVzb2x2ZVByb3BlcnR5UGF0aDogZGlzcGxheU9wdGlvbnM/LnNlY29uZExhYmVsIHwgaTE4bkZpZWxkOiB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNUZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6IG9wdGlvbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
|