@guajiritos/general-autocomplete 2.0.0 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/guachos-general-autocomplete.component.mjs +56 -54
- package/esm2022/utils/pipes/resolve-property-path.pipe.mjs +4 -4
- package/esm2022/utils/services/utils.service.mjs +4 -4
- package/fesm2022/guajiritos-general-autocomplete.mjs +61 -59
- package/fesm2022/guajiritos-general-autocomplete.mjs.map +1 -1
- package/lib/guachos-general-autocomplete.component.d.ts +5 -4
- package/package.json +8 -8
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
2
|
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, signal, TemplateRef, ViewChild } from '@angular/core';
|
3
3
|
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';
|
4
4
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
@@ -16,24 +16,25 @@ import { UtilsService } from '../utils/services/utils.service';
|
|
16
16
|
import * as i0 from "@angular/core";
|
17
17
|
import * as i1 from "@guajiritos/services";
|
18
18
|
import * as i2 from "@ngx-translate/core";
|
19
|
-
import * as i3 from "@angular/
|
20
|
-
import * as i4 from "@angular/material/
|
21
|
-
import * as i5 from "@angular/material/
|
22
|
-
import * as i6 from "@angular/
|
23
|
-
import * as i7 from "@angular/
|
19
|
+
import * as i3 from "@angular/common";
|
20
|
+
import * as i4 from "@angular/material/form-field";
|
21
|
+
import * as i5 from "@angular/material/icon";
|
22
|
+
import * as i6 from "@angular/forms";
|
23
|
+
import * as i7 from "@angular/material/input";
|
24
24
|
import * as i8 from "@angular/material/button";
|
25
|
-
import * as i9 from "@angular/material/
|
26
|
-
import * as i10 from "@angular/material/
|
25
|
+
import * as i9 from "@angular/material/progress-spinner";
|
26
|
+
import * as i10 from "@angular/material/autocomplete";
|
27
|
+
import * as i11 from "@angular/material/core";
|
27
28
|
export class GuajiritosGeneralAutocomplete {
|
28
29
|
constructor(_autocompleteService, _zone, translateService) {
|
29
30
|
this._autocompleteService = _autocompleteService;
|
30
31
|
this._zone = _zone;
|
31
32
|
this.translateService = translateService;
|
32
|
-
this.wasSelected =
|
33
|
-
this.firstCall =
|
34
|
-
this.selectedElement =
|
35
|
-
this._url =
|
36
|
-
this.restrictionsFilters =
|
33
|
+
this.wasSelected = false;
|
34
|
+
this.firstCall = true;
|
35
|
+
this.selectedElement = null;
|
36
|
+
this._url = null;
|
37
|
+
this.restrictionsFilters = [];
|
37
38
|
this.disabledButton = signal(false);
|
38
39
|
this.loading = signal(false);
|
39
40
|
this.required = signal(false);
|
@@ -56,6 +57,7 @@ export class GuajiritosGeneralAutocomplete {
|
|
56
57
|
this.withoutPaddingBottom = true;
|
57
58
|
this.valueId = false;
|
58
59
|
this.showSuffix = false;
|
60
|
+
this.requireSelection = false;
|
59
61
|
this.suffixIcon = 'search';
|
60
62
|
this.removeProperties = [];
|
61
63
|
this.SelectElement = new EventEmitter();
|
@@ -89,7 +91,7 @@ export class GuajiritosGeneralAutocomplete {
|
|
89
91
|
}
|
90
92
|
set url(data) {
|
91
93
|
if (data) {
|
92
|
-
this._url
|
94
|
+
this._url = data;
|
93
95
|
this.subscribeComponentChanges();
|
94
96
|
}
|
95
97
|
}
|
@@ -101,7 +103,7 @@ export class GuajiritosGeneralAutocomplete {
|
|
101
103
|
.subscribe({
|
102
104
|
next: () => {
|
103
105
|
this.component.setValue(null, { emitEvent: false });
|
104
|
-
this.selectedElement
|
106
|
+
this.selectedElement = null;
|
105
107
|
this.SelectElement.emit(null);
|
106
108
|
this.filteredOptions.set([]);
|
107
109
|
this.propagateChange(null);
|
@@ -118,11 +120,11 @@ export class GuajiritosGeneralAutocomplete {
|
|
118
120
|
* @param restrictions - Restricciones para la búsqueda
|
119
121
|
*/
|
120
122
|
set restrictions(restrictions) {
|
121
|
-
if (restrictions) {
|
122
|
-
this.restrictionsFilters
|
123
|
+
if (restrictions?.length) {
|
124
|
+
this.restrictionsFilters = [...restrictions];
|
123
125
|
}
|
124
126
|
else {
|
125
|
-
this.restrictionsFilters
|
127
|
+
this.restrictionsFilters = [];
|
126
128
|
}
|
127
129
|
}
|
128
130
|
/**
|
@@ -176,28 +178,28 @@ export class GuajiritosGeneralAutocomplete {
|
|
176
178
|
* Subscripción a los cambios del input de búsqueda
|
177
179
|
*/
|
178
180
|
subscribeComponentChanges() {
|
179
|
-
this.component
|
180
|
-
|
181
|
-
|
181
|
+
this.component.valueChanges
|
182
|
+
.pipe(debounceTime(this.debounceTimeValue), ObservableDestroy.unregisterFn())
|
183
|
+
.subscribe({
|
182
184
|
next: () => {
|
183
|
-
if (!this.firstCall
|
185
|
+
if (!this.firstCall && !this.wasSelected) {
|
184
186
|
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
185
187
|
}
|
186
188
|
else {
|
187
|
-
this.firstCall
|
189
|
+
this.firstCall = false;
|
188
190
|
}
|
189
|
-
this.wasSelected
|
191
|
+
this.wasSelected = false;
|
190
192
|
}
|
191
193
|
});
|
192
194
|
}
|
193
195
|
/**
|
194
|
-
* Búsqueda de los elementos a mostrar en el componente de
|
196
|
+
* Búsqueda de los elementos a mostrar en el componente de autocompletamiento
|
195
197
|
*
|
196
198
|
* @param text - Texto a buscar
|
197
199
|
*/
|
198
200
|
getAutocompleteByTextHandler(text) {
|
199
201
|
this._autocompleteService
|
200
|
-
.getAutocompleteByText(this._url
|
202
|
+
.getAutocompleteByText(this._url, text, this.filterString, this.restrictionsFilters, this.removeProperties, this.order, this.bodyRequest)
|
201
203
|
.then((resp) => {
|
202
204
|
resp?.subscribe({
|
203
205
|
next: (result) => {
|
@@ -215,18 +217,18 @@ export class GuajiritosGeneralAutocomplete {
|
|
215
217
|
getAutocompleteSearchText() {
|
216
218
|
this.loading.set(true);
|
217
219
|
let text = '';
|
218
|
-
if (this.component
|
220
|
+
if (this.component.value) {
|
219
221
|
if (typeof this.component.value === 'object') {
|
220
|
-
const componentValue = this.component?.
|
222
|
+
const componentValue = this.component.value?.[this.field?.[0]];
|
221
223
|
if (typeof componentValue === 'object') {
|
222
224
|
let lang = 'es';
|
223
|
-
if (this.field[1]) {
|
224
|
-
lang = this.field[1];
|
225
|
+
if (this.field?.[1]) {
|
226
|
+
lang = this.field?.[1];
|
225
227
|
}
|
226
|
-
text = componentValue[lang];
|
228
|
+
text = componentValue?.[lang];
|
227
229
|
}
|
228
230
|
}
|
229
|
-
else if (typeof this.component
|
231
|
+
else if (typeof this.component.value === 'string') {
|
230
232
|
text = this.component.value;
|
231
233
|
}
|
232
234
|
}
|
@@ -246,14 +248,14 @@ export class GuajiritosGeneralAutocomplete {
|
|
246
248
|
if (value) {
|
247
249
|
this.component.setValue(value, { emitEvent: false });
|
248
250
|
if (typeof value === 'object' && this.valueId) {
|
249
|
-
this.selectedElement
|
251
|
+
this.selectedElement = value?.id;
|
250
252
|
}
|
251
253
|
else {
|
252
|
-
this.selectedElement
|
254
|
+
this.selectedElement = value;
|
253
255
|
}
|
254
256
|
}
|
255
257
|
else {
|
256
|
-
this.selectedElement
|
258
|
+
this.selectedElement = null;
|
257
259
|
}
|
258
260
|
}
|
259
261
|
setDisabledState(isDisabled) {
|
@@ -272,7 +274,7 @@ export class GuajiritosGeneralAutocomplete {
|
|
272
274
|
*/
|
273
275
|
clear(trigger) {
|
274
276
|
this.component.setValue(null);
|
275
|
-
this.selectedElement
|
277
|
+
this.selectedElement = null;
|
276
278
|
this.SelectElement.emit(null);
|
277
279
|
this.propagateChange(null);
|
278
280
|
this._zone.run(() => {
|
@@ -285,14 +287,14 @@ export class GuajiritosGeneralAutocomplete {
|
|
285
287
|
* Acción en el Focus del elemento
|
286
288
|
*/
|
287
289
|
onFocus() {
|
288
|
-
if (!this.selectedElement
|
290
|
+
if (!this.selectedElement) {
|
289
291
|
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
290
292
|
}
|
291
293
|
}
|
292
294
|
optionSelected($event) {
|
293
295
|
if ($event?.option?.value) {
|
294
|
-
this.wasSelected
|
295
|
-
this.selectedElement
|
296
|
+
this.wasSelected = true;
|
297
|
+
this.selectedElement = $event.option.value;
|
296
298
|
this.SelectElement.emit($event.option.value);
|
297
299
|
if (this.valueId) {
|
298
300
|
this.propagateChange(typeof $event.option.value === 'object' ? $event.option.value?.id : $event.option.value);
|
@@ -302,41 +304,39 @@ export class GuajiritosGeneralAutocomplete {
|
|
302
304
|
}
|
303
305
|
}
|
304
306
|
}
|
305
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuajiritosGeneralAutocomplete, deps: [{ token: i1.AutocompleteService }, { token: i0.NgZone }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GuajiritosGeneralAutocomplete, isStandalone: true, selector: "guajiritos-general-autocomplete", inputs: { floatLabel: "floatLabel", bodyRequest: "bodyRequest", debounceTimeValue: "debounceTimeValue", detailsTemplate: "detailsTemplate", label: "label", showLabel: "showLabel", appearance: "appearance", color: "color", subscriptSizing: "subscriptSizing", placeholder: "placeholder", field: "field", filterString: "filterString", displayOptions: "displayOptions", withoutPaddingBottom: "withoutPaddingBottom", valueId: "valueId", showSuffix: "showSuffix", requireSelection: "requireSelection", order: "order", suffixIcon: "suffixIcon", removeProperties: "removeProperties", url: "url", clearData: "clearData", initialValue: "initialValue", restrictions: "restrictions", isRequired: "isRequired", doFocus: "doFocus" }, outputs: { SelectElement: "SelectElement" }, providers: [
|
309
|
+
ObservableDestroy,
|
307
310
|
{
|
308
311
|
provide: NG_VALUE_ACCESSOR,
|
309
312
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
310
313
|
multi: true
|
311
314
|
}
|
312
|
-
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component
|
315
|
+
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" [requireSelection]=\"requireSelection\"\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.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: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], 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: I18nPipe, name: "i18n" }, { kind: "pipe", type: ResolvePropertyPath, name: "resolvePropertyPath" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
313
316
|
}
|
314
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuajiritosGeneralAutocomplete, decorators: [{
|
315
318
|
type: Component,
|
316
319
|
args: [{ selector: 'guajiritos-general-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
320
|
+
CommonModule,
|
317
321
|
MatFormFieldModule,
|
318
|
-
NgClass,
|
319
322
|
TranslateModule,
|
320
|
-
|
321
|
-
MatInputModule,
|
323
|
+
MatIconModule,
|
322
324
|
ReactiveFormsModule,
|
325
|
+
MatInputModule,
|
323
326
|
MatButtonModule,
|
324
|
-
MatIconModule,
|
325
327
|
MatProgressSpinnerModule,
|
326
|
-
|
327
|
-
NgForOf,
|
328
|
-
NgStyle,
|
329
|
-
NgTemplateOutlet,
|
328
|
+
MatAutocompleteModule,
|
330
329
|
I18nPipe,
|
331
330
|
ResolvePropertyPath
|
332
331
|
], providers: [
|
332
|
+
ObservableDestroy,
|
333
333
|
{
|
334
334
|
provide: NG_VALUE_ACCESSOR,
|
335
335
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
336
336
|
multi: true
|
337
337
|
}
|
338
|
-
], template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component
|
339
|
-
}], ctorParameters: ()
|
338
|
+
], template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" [requireSelection]=\"requireSelection\"\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"] }]
|
339
|
+
}], ctorParameters: function () { return [{ type: i1.AutocompleteService }, { type: i0.NgZone }, { type: i2.TranslateService }]; }, propDecorators: { inputText: [{
|
340
340
|
type: ViewChild,
|
341
341
|
args: ['inputText', { static: true }]
|
342
342
|
}], floatLabel: [{
|
@@ -371,6 +371,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
371
371
|
type: Input
|
372
372
|
}], showSuffix: [{
|
373
373
|
type: Input
|
374
|
+
}], requireSelection: [{
|
375
|
+
type: Input
|
374
376
|
}], order: [{
|
375
377
|
type: Input
|
376
378
|
}], suffixIcon: [{
|
@@ -392,4 +394,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
392
394
|
}], doFocus: [{
|
393
395
|
type: Input
|
394
396
|
}] } });
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUdMLGtCQUFrQixFQUVuQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFD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LE1BQU07Z0JBRU0sR0FBRztzQkFBZixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBaUJPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBU08sWUFBWTtzQkFBeEIsS0FBSztnQkFhTyxVQUFVO3NCQUF0QixLQUFLO2dCQWlCTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFdyaXRhYmxlU2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZsb2F0TGFiZWxUeXBlLFxyXG4gIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsXHJcbiAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gIFN1YnNjcmlwdFNpemluZ1xyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBcGlGb3JtRGF0YSxcclxuICBBdXRvY29tcGxldGVTZXJ2aWNlLFxyXG4gIERpc3BsYXlPcHRpb24sXHJcbiAgRGlzcGxheU9wdGlvbkl0ZW1UeXBlLFxyXG4gIEkxOG5QaXBlLFxyXG4gIE9ic2VydmFibGVEZXN0cm95LFxyXG4gIFJlc3RyaWN0aW9uRmlsdGVyXHJcbn0gZnJvbSAnQGd1YWppcml0b3Mvc2VydmljZXMnO1xyXG5cclxuaW1wb3J0IHsgR0VORVJBTF9ESVNQTEFZX09QVElPTlMgfSBmcm9tICcuLi91dGlscy9jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmVzb2x2ZVByb3BlcnR5UGF0aCB9IGZyb20gJy4uL3V0aWxzL3BpcGVzL3Jlc29sdmUtcHJvcGVydHktcGF0aC5waXBlJztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2d1YWppcml0b3MtZ2VuZXJhbC1hdXRvY29tcGxldGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgTmdTdHlsZSxcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBJMThuUGlwZSxcclxuICAgIFJlc29sdmVQcm9wZXJ0eVBhdGhcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR3VhamlyaXRvc0dlbmVyYWxBdXRvY29tcGxldGUpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2F1dG9jb21wbGV0ZVNlcnZpY2U6IEF1dG9jb21wbGV0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckRhdGEkOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgZG9Gb2N1c1N1YmplY3QkOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgd2FzU2VsZWN0ZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIGZpcnN0Q2FsbDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwodHJ1ZSk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnQ6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWwobnVsbCk7XHJcbiAgcHJpdmF0ZSBfdXJsOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKG51bGwpO1xyXG4gIHByaXZhdGUgcmVzdHJpY3Rpb25zRmlsdGVyczogV3JpdGFibGVTaWduYWw8UmVzdHJpY3Rpb25GaWx0ZXJbXT4gPSBzaWduYWwoW10pO1xyXG5cclxuICBwdWJsaWMgZGlzYWJsZWRCdXR0b246IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgbG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHB1YmxpYyByZXF1aXJlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XHJcbiAgcHVibGljIGNvbXBvbmVudDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGV4dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0VGV4dDogRWxlbWVudFJlZjtcclxuICAvKipcclxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgJ25ldmVyJywgJ2F1dG8nIG9yICdhbHdheXMnXHJcbiAgICovXHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgYm9keVJlcXVlc3Q6IEFwaUZvcm1EYXRhO1xyXG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZVZhbHVlOiBudW1iZXIgPSAzMDA7XHJcbiAgQElucHV0KCkgZGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnU2VsZWNjaW9uZSc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcclxuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZyA9ICdkeW5hbWljJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjY2lvbmUgdW4gZWxlbWVudG8nO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmdbXSA9IFsnbmFtZSddO1xyXG4gIEBJbnB1dCgpIGZpbHRlclN0cmluZzogc3RyaW5nID0gJ2ZpbHRlclskYW5kXVtuYW1lXVskbGlrZV0nO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9uID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XHJcbiAgQElucHV0KCkgd2l0aG91dFBhZGRpbmdCb3R0b206IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHZhbHVlSWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93U3VmZml4OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3JkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSBzdWZmaXhJY29uOiBzdHJpbmcgPSAnc2VhcmNoJztcclxuICBASW5wdXQoKSByZW1vdmVQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBTZWxlY3RFbGVtZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBASW5wdXQoKSBzZXQgdXJsKGRhdGE6IHN0cmluZykge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5fdXJsLnNldChkYXRhKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVDb21wb25lbnRDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY2xlYXJEYXRhKHZhbHVlOiBTdWJqZWN0PHZvaWQ+KSB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YSQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmNsZWFyRGF0YSQpIHtcclxuICAgICAgdGhpcy5jbGVhckRhdGEkXHJcbiAgICAgICAgLnBpcGUoT2JzZXJ2YWJsZURlc3Ryb3kudW5yZWdpc3RlckZuKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc2V0KFtdKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEHDsWFkZSBvIGVsaW1pbmEgcmVzdHJpY2Npb25lcyBwYXJhIGxhIGLDunNxdWVkYVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJlc3RyaWN0aW9ucyAtIFJlc3RyaWNjaW9uZXMgcGFyYSBsYSBiw7pzcXVlZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgcmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogUmVzdHJpY3Rpb25GaWx0ZXJbXSkge1xyXG4gICAgaWYgKHJlc3RyaWN0aW9ucykge1xyXG4gICAgICB0aGlzLnJlc3RyaWN0aW9uc0ZpbHRlcnMuc2V0KHJlc3RyaWN0aW9ucyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3RyaWN0aW9uc0ZpbHRlcnMuc2V0KFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEHDsWFkZSBvIGVsaW1pbmEgbGEgdmFsaWRhY2nDs24gZGUgcXVlIGVsIGNhbXBvIHNlYSByZXF1ZXJpZG9cclxuICAgKlxyXG4gICAqIEBwYXJhbSByZXF1aXJlZCAtIERlZmluZSBzaSBlcyByZXF1ZXJpZG8gbyBub1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBpc1JlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkLnNldChyZXF1aXJlZCk7XHJcblxyXG4gICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZVZhbGlkYXRvcl0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIHNpIHZhbW9zIGEgcmVhbGl6YXIgdW5hIGLDunNxdWVkYSBhbCBlbGVtZW50byBlc3RhciBlbiBlbCBmb2N1cyBkZSBsYSBhcGxpY2FjacOzblxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvY3VzU3ViamVjdCAtIE9ic2VydmFibGUgcGFyYSBsYSBzdWJzY3JpcGNpw7NuIGFsIGV2ZW50byBGb2N1c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBkb0ZvY3VzKGZvY3VzU3ViamVjdDogU3ViamVjdDx2b2lkPikge1xyXG4gICAgdGhpcy5kb0ZvY3VzU3ViamVjdCQgPSBmb2N1c1N1YmplY3Q7XHJcblxyXG4gICAgaWYgKHRoaXMuZG9Gb2N1c1N1YmplY3QkKSB7XHJcbiAgICAgIHRoaXMuZG9Gb2N1c1N1YmplY3QkXHJcbiAgICAgICAgLnBpcGUoT2JzZXJ2YWJsZURlc3Ryb3kudW5yZWdpc3RlckZuKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhY2nDs24gY3VzdG9taXphZGEgcGFyYSBsYSBzZWxlY2Npw7NuIGRlIGVsZW1lbnRvc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGF1dG9jb21wbGV0ZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgaWYgKGNvbnRyb2w/LnZhbHVlPy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8ICFjb250cm9sPy52YWx1ZT8uaWQpIHtcclxuICAgICAgICByZXR1cm4geyBpbnZhbGlkU2VsZWN0aW9uOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXBjacOzbiBhIGxvcyBjYW1iaW9zIGRlbCBpbnB1dCBkZSBiw7pzcXVlZGFcclxuICAgKi9cclxuICBwcml2YXRlIHN1YnNjcmliZUNvbXBvbmVudENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBvbmVudD8udmFsdWVDaGFuZ2VzXHJcbiAgICAgID8ucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVWYWx1ZSksIE9ic2VydmFibGVEZXN0cm95LnVucmVnaXN0ZXJGbigpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2FsbCgpICYmICF0aGlzLndhc1NlbGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDYWxsLnNldChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy53YXNTZWxlY3RlZC5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCw7pzcXVlZGEgZGUgbG9zIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgY29tcG9uZW50ZSBkZSBhdXRvIGNvbXBsZXRhbWllbnRvXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYnVzY2FyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2F1dG9jb21wbGV0ZVNlcnZpY2VcclxuICAgICAgLmdldEF1dG9jb21wbGV0ZUJ5VGV4dCh0aGlzLl91cmwoKSwgdGV4dCwgdGhpcy5maWx0ZXJTdHJpbmcsIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycygpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydGllcywgdGhpcy5vcmRlciwgdGhpcy5ib2R5UmVxdWVzdClcclxuICAgICAgLnRoZW4oKHJlc3A6IE9ic2VydmFibGU8YW55Pik6IHZvaWQgPT4ge1xyXG4gICAgICAgIHJlc3A/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzdWx0OiBhbnkpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc2V0KHJlc3VsdD8ucGF5bG9hZD8uZGF0YSA/PyByZXN1bHQ/LmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgZWwgdGV4dG8gcG9yIGVsIHF1ZSBzZSB2YSBhIHJlYWxpemFyIGxhIGLDunNxdWVkYVxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUZXh0byBkZSBsYSBiw7pzcXVlZGFcclxuICAgKi9cclxuICBwcml2YXRlIGdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKTogc3RyaW5nIHtcclxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XHJcblxyXG4gICAgbGV0IHRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudD8udmFsdWUpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudC52YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRWYWx1ZSA9IHRoaXMuY29tcG9uZW50Py52YWx1ZVt0aGlzLmZpZWxkWzBdXTtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudFZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgbGV0IGxhbmc6IHN0cmluZyA9ICdlcyc7XHJcbiAgICAgICAgICBpZiAodGhpcy5maWVsZFsxXSkge1xyXG4gICAgICAgICAgICBsYW5nID0gdGhpcy5maWVsZFsxXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0ZXh0ID0gY29tcG9uZW50VmFsdWVbbGFuZ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudD8udmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGV4dCA9IHRoaXMuY29tcG9uZW50LnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjaWJlIGVsIHZhbG9yIGRlbCBGb3JtQ29udHJvbFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZW50cmFkbyBwb3IgRm9ybUNvbnRyb2xcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdGhpcy52YWx1ZUlkKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KHZhbHVlPy5pZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkQnV0dG9uLnNldChpc0Rpc2FibGVkKTtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY2nDs24gcGFyYSBtb3N0cmFyIGxvcyBlbGVtZW50b3MgYSBzZWxlY2Npb25hclxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgYSBtb3N0cmFyXHJcbiAgICovXHJcbiAgcHVibGljIGRpc3BsYXlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJztcclxuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IEdFTkVSQUxfRElTUExBWV9PUFRJT05TO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRpc3BsYXlPcHRpb25zPy5maXJ0aExhYmVsPy5mb3JFYWNoKChmaWVsZDogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkPy50eXBlID09PSBEaXNwbGF5T3B0aW9uSXRlbVR5cGUuUEFUSCkge1xyXG4gICAgICAgICAgZGlzcGxheVRleHQgKz0gVXRpbHNTZXJ2aWNlLnJlc29sdmVQcm9wZXJ0eUJ5UGF0aCh2YWx1ZSwgZmllbGQ/LnBhdGgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkaXNwbGF5VGV4dCArPSBmaWVsZD8uZGl2aWRlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIGRpc3BsYXlUZXh0O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2nDs24gYWwgbGltcGlhciBlbCB2YWxvciBkZWwgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0cmlnZ2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyKHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpO1xyXG4gICAgdGhpcy5TZWxlY3RFbGVtZW50LmVtaXQobnVsbCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuXHJcbiAgICB0aGlzLl96b25lLnJ1bigoKTogdm9pZCA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRyaWdnZXIub3BlblBhbmVsKCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2nDs24gZW4gZWwgRm9jdXMgZGVsIGVsZW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpIHtcclxuICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcHRpb25TZWxlY3RlZCgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCRldmVudD8ub3B0aW9uPy52YWx1ZSkge1xyXG4gICAgICB0aGlzLndhc1NlbGVjdGVkLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KCRldmVudC5vcHRpb24udmFsdWUpO1xyXG4gICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdCgkZXZlbnQub3B0aW9uLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnZhbHVlSWQpIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0eXBlb2YgJGV2ZW50Lm9wdGlvbi52YWx1ZSA9PT0gJ29iamVjdCcgPyAkZXZlbnQub3B0aW9uLnZhbHVlPy5pZCA6ICRldmVudC5vcHRpb24udmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKCRldmVudC5vcHRpb24udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgY2xhc3M9XCJ3LTEwMFwiIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIiBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cclxuXHJcbiAgPG1hdC1sYWJlbCAqbmdJZj1cInNob3dMYWJlbFwiPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dTdWZmaXhcIj57eyBzdWZmaXhJY29uID8/IFwic2VhcmNoXCIgfX08L21hdC1pY29uPlxyXG4gIDxpbnB1dCAjaW5wdXRUZXh0ICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiBbZm9ybUNvbnRyb2xdPVwiY29tcG9uZW50XCJcclxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBhcmlhLWxhYmVsPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKHRyaWdnZXIpXCIgKm5nSWY9XCIhbG9hZGluZygpICYmIGNvbXBvbmVudD8udmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRCdXR0b24oKVwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxyXG4gICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uICpuZ0lmPVwibG9hZGluZygpXCIgYXJpYS1sYWJlbD1cInNlYXJjaFwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XHJcbiAgICA8bWF0LXNwaW5uZXIgW3ZhbHVlXT1cIjkwXCIgY29sb3I9XCJhY2NlbnRcIiBkaWFtZXRlcj1cIjI1XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiIHJlcXVpcmVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMoKVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzcGxheU9wdGlvbnMgJiYgIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIHt7IG9wdGlvbj8ubmFtZSB8IGkxOG46IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfX1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsnbGluZS1oZWlnaHQnOiBkaXNwbGF5T3B0aW9ucz8uc2Vjb25kTGFiZWwgPyAnMTZweCcgOiAnJ31cIj5cclxuICAgICAgICAgICAge3sgb3B0aW9uIHwgcmVzb2x2ZVByb3BlcnR5UGF0aDpkaXNwbGF5T3B0aW9ucy5maXJ0aExhYmVsIHwgaTE4bjogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJkaXNwbGF5T3B0aW9ucz8uc2Vjb25kTGFiZWxcIiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7IG9wdGlvbiB8IHJlc29sdmVQcm9wZXJ0eVBhdGg6IGRpc3BsYXlPcHRpb25zLnNlY29uZExhYmVsIHwgaTE4bjogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsc1RlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDogb3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiY29tcG9uZW50LmludmFsaWRcIj5cclxuICAgIHt7ICdFc3RlIGNhbXBvIGVzIHJlcXVlcmlkby4nIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9tYXQtZXJyb3I+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUdMLGtCQUFrQixFQUVuQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFC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QUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFFTSxHQUFHO3NCQUFmLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFpQk8sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxZQUFZO3NCQUF4QixLQUFLO2dCQWFPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBaUJPLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBXcml0YWJsZVNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGbG9hdExhYmVsVHlwZSxcclxuICBNYXRGb3JtRmllbGRBcHBlYXJhbmNlLFxyXG4gIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICBTdWJzY3JpcHRTaXppbmdcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQXBpRm9ybURhdGEsXHJcbiAgQXV0b2NvbXBsZXRlU2VydmljZSxcclxuICBEaXNwbGF5T3B0aW9uLFxyXG4gIERpc3BsYXlPcHRpb25JdGVtVHlwZSxcclxuICBJMThuUGlwZSxcclxuICBPYnNlcnZhYmxlRGVzdHJveSxcclxuICBSZXN0cmljdGlvbkZpbHRlclxyXG59IGZyb20gJ0BndWFqaXJpdG9zL3NlcnZpY2VzJztcclxuXHJcbmltcG9ydCB7IEdFTkVSQUxfRElTUExBWV9PUFRJT05TIH0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJlc29sdmVQcm9wZXJ0eVBhdGggfSBmcm9tICcuLi91dGlscy9waXBlcy9yZXNvbHZlLXByb3BlcnR5LXBhdGgucGlwZSc7XHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIEkxOG5QaXBlLFxyXG4gICAgUmVzb2x2ZVByb3BlcnR5UGF0aFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBPYnNlcnZhYmxlRGVzdHJveSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlKSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWFqaXJpdG9zR2VuZXJhbEF1dG9jb21wbGV0ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hdXRvY29tcGxldGVTZXJ2aWNlOiBBdXRvY29tcGxldGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2FzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBjbGVhckRhdGEkOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgZG9Gb2N1c1N1YmplY3QkOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRFbGVtZW50OiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgX3VybDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIHJlc3RyaWN0aW9uc0ZpbHRlcnM6IFJlc3RyaWN0aW9uRmlsdGVyW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGRpc2FibGVkQnV0dG9uOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgcHVibGljIGxvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgcmVxdWlyZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xyXG4gIHB1YmxpYyBjb21wb25lbnQ6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0pO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dFRleHQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dFRleHQ6IEVsZW1lbnRSZWY7XHJcbiAgLyoqXHJcbiAgICogUG9zc2libGUgdmFsdWVzICduZXZlcicsICdhdXRvJyBvciAnYWx3YXlzJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGJvZHlSZXF1ZXN0OiBBcGlGb3JtRGF0YTtcclxuICBASW5wdXQoKSBkZWJvdW5jZVRpbWVWYWx1ZTogbnVtYmVyID0gMzAwO1xyXG4gIEBJbnB1dCgpIGRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1NlbGVjY2lvbmUnO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdvdXRsaW5lJztcclxuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XHJcbiAgQElucHV0KCkgc3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmcgPSAnZHluYW1pYyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY2Npb25lIHVuIGVsZW1lbnRvJztcclxuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nW10gPSBbJ25hbWUnXTtcclxuICBASW5wdXQoKSBmaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICdmaWx0ZXJbJGFuZF1bbmFtZV1bJGxpa2VdJztcclxuICBASW5wdXQoKSBkaXNwbGF5T3B0aW9uczogRGlzcGxheU9wdGlvbiA9IEdFTkVSQUxfRElTUExBWV9PUFRJT05TO1xyXG4gIEBJbnB1dCgpIHdpdGhvdXRQYWRkaW5nQm90dG9tOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB2YWx1ZUlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1N1ZmZpeDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvcmRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1ZmZpeEljb246IHN0cmluZyA9ICdzZWFyY2gnO1xyXG4gIEBJbnB1dCgpIHJlbW92ZVByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSBTZWxlY3RFbGVtZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBASW5wdXQoKSBzZXQgdXJsKGRhdGE6IHN0cmluZykge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5fdXJsID0gZGF0YTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVDb21wb25lbnRDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY2xlYXJEYXRhKHZhbHVlOiBTdWJqZWN0PHZvaWQ+KSB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YSQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmNsZWFyRGF0YSQpIHtcclxuICAgICAgdGhpcy5jbGVhckRhdGEkXHJcbiAgICAgICAgLnBpcGUoT2JzZXJ2YWJsZURlc3Ryb3kudW5yZWdpc3RlckZuKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc2V0KFtdKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEHDsWFkZSBvIGVsaW1pbmEgcmVzdHJpY2Npb25lcyBwYXJhIGxhIGLDunNxdWVkYVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJlc3RyaWN0aW9ucyAtIFJlc3RyaWNjaW9uZXMgcGFyYSBsYSBiw7pzcXVlZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgcmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogUmVzdHJpY3Rpb25GaWx0ZXJbXSkge1xyXG4gICAgaWYgKHJlc3RyaWN0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycyA9IFsuLi5yZXN0cmljdGlvbnNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBw7FhZGUgbyBlbGltaW5hIGxhIHZhbGlkYWNpw7NuIGRlIHF1ZSBlbCBjYW1wbyBzZWEgcmVxdWVyaWRvXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcmVxdWlyZWQgLSBEZWZpbmUgc2kgZXMgcmVxdWVyaWRvIG8gbm9cclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgaXNSZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5yZXF1aXJlZC5zZXQocmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHdWFqaXJpdG9zR2VuZXJhbEF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVWYWxpZGF0b3JdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBzaSB2YW1vcyBhIHJlYWxpemFyIHVuYSBiw7pzcXVlZGEgYWwgZWxlbWVudG8gZXN0YXIgZW4gZWwgZm9jdXMgZGUgbGEgYXBsaWNhY2nDs25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmb2N1c1N1YmplY3QgLSBPYnNlcnZhYmxlIHBhcmEgbGEgc3Vic2NyaXBjacOzbiBhbCBldmVudG8gRm9jdXNcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgZG9Gb2N1cyhmb2N1c1N1YmplY3Q6IFN1YmplY3Q8dm9pZD4pIHtcclxuICAgIHRoaXMuZG9Gb2N1c1N1YmplY3QkID0gZm9jdXNTdWJqZWN0O1xyXG5cclxuICAgIGlmICh0aGlzLmRvRm9jdXNTdWJqZWN0JCkge1xyXG4gICAgICB0aGlzLmRvRm9jdXNTdWJqZWN0JFxyXG4gICAgICAgIC5waXBlKE9ic2VydmFibGVEZXN0cm95LnVucmVnaXN0ZXJGbigpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl96b25lLnJ1bigoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0VGV4dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYWNpw7NuIGN1c3RvbWl6YWRhIHBhcmEgbGEgc2VsZWNjacOzbiBkZSBlbGVtZW50b3NcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBhdXRvY29tcGxldGVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sPy52YWx1ZT8uY29uc3RydWN0b3IgIT09IE9iamVjdCB8fCAhY29udHJvbD8udmFsdWU/LmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZFNlbGVjdGlvbjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwY2nDs24gYSBsb3MgY2FtYmlvcyBkZWwgaW5wdXQgZGUgYsO6c3F1ZWRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVDb21wb25lbnRDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnQudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZVZhbHVlKSwgT2JzZXJ2YWJsZURlc3Ryb3kudW5yZWdpc3RlckZuKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5maXJzdENhbGwgJiYgIXRoaXMud2FzU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy53YXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCw7pzcXVlZGEgZGUgbG9zIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgY29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGFtaWVudG9cclxuICAgKlxyXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBidXNjYXJcclxuICAgKi9cclxuICBwcml2YXRlIGdldEF1dG9jb21wbGV0ZUJ5VGV4dEhhbmRsZXIodGV4dD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXV0b2NvbXBsZXRlU2VydmljZVxyXG4gICAgICAuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0KHRoaXMuX3VybCwgdGV4dCwgdGhpcy5maWx0ZXJTdHJpbmcsIHRoaXMucmVzdHJpY3Rpb25zRmlsdGVycyxcclxuICAgICAgICB0aGlzLnJlbW92ZVByb3BlcnRpZXMsIHRoaXMub3JkZXIsIHRoaXMuYm9keVJlcXVlc3QpXHJcbiAgICAgIC50aGVuKChyZXNwOiBPYnNlcnZhYmxlPGFueT4pOiB2b2lkID0+IHtcclxuICAgICAgICByZXNwPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlc3VsdDogYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNldChyZXN1bHQ/LnBheWxvYWQ/LmRhdGEgPz8gcmVzdWx0Py5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGVsIHRleHRvIHBvciBlbCBxdWUgc2UgdmEgYSByZWFsaXphciBsYSBiw7pzcXVlZGFcclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGV4dG8gZGUgbGEgYsO6c3F1ZWRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVTZWFyY2hUZXh0KCk6IHN0cmluZyB7XHJcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG5cclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wb25lbnQudmFsdWUpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudC52YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LnZhbHVlPy5bdGhpcy5maWVsZD8uWzBdXTtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudFZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgbGV0IGxhbmc6IHN0cmluZyA9ICdlcyc7XHJcbiAgICAgICAgICBpZiAodGhpcy5maWVsZD8uWzFdKSB7XHJcbiAgICAgICAgICAgIGxhbmcgPSB0aGlzLmZpZWxkPy5bMV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGV4dCA9IGNvbXBvbmVudFZhbHVlPy5bbGFuZ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0ZXh0ID0gdGhpcy5jb21wb25lbnQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHtcclxuICB9O1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNpYmUgZWwgdmFsb3IgZGVsIEZvcm1Db250cm9sXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBlbnRyYWRvIHBvciBGb3JtQ29udHJvbFxyXG4gICAqL1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0aGlzLnZhbHVlSWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IHZhbHVlPy5pZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWRCdXR0b24uc2V0KGlzRGlzYWJsZWQpO1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jacOzbiBwYXJhIG1vc3RyYXIgbG9zIGVsZW1lbnRvcyBhIHNlbGVjY2lvbmFyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBhIG1vc3RyYXJcclxuICAgKi9cclxuICBwdWJsaWMgZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuZGlzcGxheU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGlzcGxheU9wdGlvbnM/LmZpcnRoTGFiZWw/LmZvckVhY2goKGZpZWxkOiBhbnkpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IERpc3BsYXlPcHRpb25JdGVtVHlwZS5QQVRIKSB7XHJcbiAgICAgICAgICBkaXNwbGF5VGV4dCArPSBVdGlsc1NlcnZpY2UucmVzb2x2ZVByb3BlcnR5QnlQYXRoKHZhbHVlLCBmaWVsZD8ucGF0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRpc3BsYXlUZXh0ICs9IGZpZWxkPy5kaXZpZGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gZGlzcGxheVRleHQ7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWNjacOzbiBhbCBsaW1waWFyIGVsIHZhbG9yIGRlbCBpbnB1dFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRyaWdnZXJcclxuICAgKi9cclxuICBwdWJsaWMgY2xlYXIodHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XHJcbiAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG5cclxuICAgIHRoaXMuX3pvbmUucnVuKCgpOiB2b2lkID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWNjacOzbiBlbiBlbCBGb2N1cyBkZWwgZWxlbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcHRpb25TZWxlY3RlZCgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCRldmVudD8ub3B0aW9uPy52YWx1ZSkge1xyXG4gICAgICB0aGlzLndhc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSAkZXZlbnQub3B0aW9uLnZhbHVlO1xyXG4gICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdCgkZXZlbnQub3B0aW9uLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnZhbHVlSWQpIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0eXBlb2YgJGV2ZW50Lm9wdGlvbi52YWx1ZSA9PT0gJ29iamVjdCcgPyAkZXZlbnQub3B0aW9uLnZhbHVlPy5pZCA6ICRldmVudC5vcHRpb24udmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKCRldmVudC5vcHRpb24udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgY2xhc3M9XCJ3LTEwMFwiIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIiBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cclxuXHJcbiAgPG1hdC1sYWJlbCAqbmdJZj1cInNob3dMYWJlbFwiPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dTdWZmaXhcIj57eyBzdWZmaXhJY29uID8/IFwic2VhcmNoXCIgfX08L21hdC1pY29uPlxyXG4gIDxpbnB1dCAjaW5wdXRUZXh0ICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiBbZm9ybUNvbnRyb2xdPVwiY29tcG9uZW50XCJcclxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBhcmlhLWxhYmVsPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKHRyaWdnZXIpXCIgKm5nSWY9XCIhbG9hZGluZygpICYmIGNvbXBvbmVudC52YWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZEJ1dHRvbigpXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XHJcbiAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b24gKm5nSWY9XCJsb2FkaW5nKClcIiBhcmlhLWxhYmVsPVwic2VhcmNoXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cclxuICAgIDxtYXQtc3Bpbm5lciBbdmFsdWVdPVwiOTBcIiBjb2xvcj1cImFjY2VudFwiIGRpYW1ldGVyPVwiMjVcIj48L21hdC1zcGlubmVyPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgW3JlcXVpcmVTZWxlY3Rpb25dPVwicmVxdWlyZVNlbGVjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9wdGlvblNlbGVjdGVkKCRldmVudClcIj5cclxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKClcIiBbdmFsdWVdPVwib3B0aW9uXCI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc3BsYXlPcHRpb25zICYmICFkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICB7eyBvcHRpb24/Lm5hbWUgfCBpMThuOiB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIH19XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzcGxheS1vcHRpb25zXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J2xpbmUtaGVpZ2h0JzogZGlzcGxheU9wdGlvbnM/LnNlY29uZExhYmVsID8gJzE2cHgnIDogJyd9XCI+XHJcbiAgICAgICAgICAgIHt7IG9wdGlvbiB8IHJlc29sdmVQcm9wZXJ0eVBhdGg6ZGlzcGxheU9wdGlvbnMuZmlydGhMYWJlbCB8IGkxOG46IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheU9wdGlvbnM/LnNlY29uZExhYmVsXCIgY2xhc3M9XCJtYXQtY2FwdGlvblwiPlxyXG4gICAgICAgICAgICB7eyBvcHRpb24gfCByZXNvbHZlUHJvcGVydHlQYXRoOiBkaXNwbGF5T3B0aW9ucy5zZWNvbmRMYWJlbCB8IGkxOG46IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNUZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6IG9wdGlvbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuXHJcbiAgPG1hdC1lcnJvciAqbmdJZj1cImNvbXBvbmVudC5pbnZhbGlkXCI+XHJcbiAgICB7eyAnRXN0ZSBjYW1wbyBlcyByZXF1ZXJpZG8uJyB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvbWF0LWVycm9yPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
|
@@ -24,14 +24,14 @@ export class ResolvePropertyPath {
|
|
24
24
|
});
|
25
25
|
return result;
|
26
26
|
}
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
28
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
28
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, isStandalone: true, name: "resolvePropertyPath" }); }
|
29
29
|
}
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, decorators: [{
|
31
31
|
type: Pipe,
|
32
32
|
args: [{
|
33
33
|
name: 'resolvePropertyPath',
|
34
34
|
standalone: true
|
35
35
|
}]
|
36
36
|
}] });
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1wcm9wZXJ0eS1wYXRoLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy91dGlscy9waXBlcy9yZXNvbHZlLXByb3BlcnR5LXBhdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU16RCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxHQUFRLEVBQUUsSUFBeUI7UUFDM0MsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBRXhCLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUF1QixFQUFRLEVBQUU7WUFDOUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtnQkFDaEQsTUFBTSxJQUFJLElBQUksRUFBRSxPQUFPLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFO29CQUNkLE1BQU0sSUFBSSxZQUFZLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUQ7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0F0QlUsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRGlzcGxheU9wdGlvbkl0ZW0sIERpc3BsYXlPcHRpb25JdGVtVHlwZSB9IGZyb20gJ0BndWFqaXJpdG9zL3NlcnZpY2VzJztcclxuXHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdyZXNvbHZlUHJvcGVydHlQYXRoJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNvbHZlUHJvcGVydHlQYXRoIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyB0aGUgZ2l2ZW4gb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIGFuZCByZXR1cm5zIHRoZSB0cmFuc2Zvcm1lZCBzdHJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIC0gVGhlIG9iamVjdCB0byBiZSB0cmFuc2Zvcm1lZC5cclxuICAgKiBAcGFyYW0ge0Rpc3BsYXlPcHRpb25JdGVtW119IHBhdGggLSBUaGUgYXJyYXkgb2YgZGlzcGxheSBvcHRpb24gaXRlbXMgdXNlZCBmb3IgdHJhbnNmb3JtYXRpb24uXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgdHJhbnNmb3JtZWQgc3RyaW5nLlxyXG4gICAqL1xyXG4gIHRyYW5zZm9ybShvYmo6IGFueSwgcGF0aDogRGlzcGxheU9wdGlvbkl0ZW1bXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBwYXRoPy5mb3JFYWNoKChpdGVtOiBEaXNwbGF5T3B0aW9uSXRlbSk6IHZvaWQgPT4ge1xyXG4gICAgICBpZiAoaXRlbT8udHlwZSA9PT0gRGlzcGxheU9wdGlvbkl0ZW1UeXBlLkRJVklERVIpIHtcclxuICAgICAgICByZXN1bHQgKz0gaXRlbT8uZGl2aWRlcjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXRlbT8ucGF0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ICs9IFV0aWxzU2VydmljZS5yZXNvbHZlUHJvcGVydHlCeVBhdGgob2JqLCBpdGVtLnBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
@@ -13,13 +13,13 @@ export class UtilsService {
|
|
13
13
|
return prev ? prev[curr] : null;
|
14
14
|
}, obj || self);
|
15
15
|
}
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
17
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
17
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, providedIn: 'root' }); }
|
18
18
|
}
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, decorators: [{
|
20
20
|
type: Injectable,
|
21
21
|
args: [{
|
22
22
|
providedIn: 'root'
|
23
23
|
}]
|
24
24
|
}] });
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWNob3MtZ2VuZXJhbC1hdXRvY29tcGxldGUvc3JjL3V0aWxzL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFlBQVk7SUFDckI7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQVEsRUFBRSxJQUFjO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOytHQVpRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcclxuICAgIC8qKlxyXG4gICAgICogUmVzb2x2ZXMgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgaW4gYW4gb2JqZWN0IGJ5IHByb3ZpZGluZyBhIHBhdGguXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHthbnl9IG9iaiAtIFRoZSBvYmplY3QgdG8gdHJhdmVyc2UuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIC0gQW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGRlc2lyZWQgcHJvcGVydHkuXHJcbiAgICAgKiBAcmV0dXJuIHthbnl9IFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgYXQgdGhlIGdpdmVuIHBhdGgsIG9yIG51bGwgaWYgdGhlIHBhdGggaXMgaW52YWxpZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlUHJvcGVydHlCeVBhdGgob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZWR1Y2UoKHByZXYsIGN1cnI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJldiA/IHByZXZbY3Vycl0gOiBudWxsO1xyXG4gICAgICAgIH0sIG9iaiB8fCBzZWxmKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
@@ -1,26 +1,27 @@
|
|
1
1
|
import * as i1 from '@guajiritos/services';
|
2
2
|
import { DisplayOptionItemType, ObservableDestroy, I18nPipe } from '@guajiritos/services';
|
3
|
-
import
|
3
|
+
import * as i3 from '@angular/common';
|
4
|
+
import { CommonModule } from '@angular/common';
|
4
5
|
import * as i0 from '@angular/core';
|
5
6
|
import { Injectable, Pipe, signal, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewChild, Input, Output } from '@angular/core';
|
6
|
-
import * as
|
7
|
+
import * as i6 from '@angular/forms';
|
7
8
|
import { UntypedFormControl, Validators, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
|
8
|
-
import * as
|
9
|
+
import * as i10 from '@angular/material/autocomplete';
|
9
10
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
10
11
|
import * as i8 from '@angular/material/button';
|
11
12
|
import { MatButtonModule } from '@angular/material/button';
|
12
|
-
import * as
|
13
|
+
import * as i4 from '@angular/material/form-field';
|
13
14
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
14
|
-
import * as
|
15
|
+
import * as i5 from '@angular/material/icon';
|
15
16
|
import { MatIconModule } from '@angular/material/icon';
|
16
|
-
import * as
|
17
|
+
import * as i7 from '@angular/material/input';
|
17
18
|
import { MatInputModule } from '@angular/material/input';
|
18
|
-
import * as
|
19
|
+
import * as i9 from '@angular/material/progress-spinner';
|
19
20
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
20
21
|
import * as i2 from '@ngx-translate/core';
|
21
22
|
import { TranslateModule } from '@ngx-translate/core';
|
22
23
|
import { debounceTime } from 'rxjs';
|
23
|
-
import * as
|
24
|
+
import * as i11 from '@angular/material/core';
|
24
25
|
|
25
26
|
const GENERAL_DISPLAY_OPTIONS = {
|
26
27
|
firthLabel: [
|
@@ -45,10 +46,10 @@ class UtilsService {
|
|
45
46
|
return prev ? prev[curr] : null;
|
46
47
|
}, obj || self);
|
47
48
|
}
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
49
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
50
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, providedIn: 'root' }); }
|
50
51
|
}
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UtilsService, decorators: [{
|
52
53
|
type: Injectable,
|
53
54
|
args: [{
|
54
55
|
providedIn: 'root'
|
@@ -77,10 +78,10 @@ class ResolvePropertyPath {
|
|
77
78
|
});
|
78
79
|
return result;
|
79
80
|
}
|
80
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
81
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
82
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, isStandalone: true, name: "resolvePropertyPath" }); }
|
82
83
|
}
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResolvePropertyPath, decorators: [{
|
84
85
|
type: Pipe,
|
85
86
|
args: [{
|
86
87
|
name: 'resolvePropertyPath',
|
@@ -93,11 +94,11 @@ class GuajiritosGeneralAutocomplete {
|
|
93
94
|
this._autocompleteService = _autocompleteService;
|
94
95
|
this._zone = _zone;
|
95
96
|
this.translateService = translateService;
|
96
|
-
this.wasSelected =
|
97
|
-
this.firstCall =
|
98
|
-
this.selectedElement =
|
99
|
-
this._url =
|
100
|
-
this.restrictionsFilters =
|
97
|
+
this.wasSelected = false;
|
98
|
+
this.firstCall = true;
|
99
|
+
this.selectedElement = null;
|
100
|
+
this._url = null;
|
101
|
+
this.restrictionsFilters = [];
|
101
102
|
this.disabledButton = signal(false);
|
102
103
|
this.loading = signal(false);
|
103
104
|
this.required = signal(false);
|
@@ -120,6 +121,7 @@ class GuajiritosGeneralAutocomplete {
|
|
120
121
|
this.withoutPaddingBottom = true;
|
121
122
|
this.valueId = false;
|
122
123
|
this.showSuffix = false;
|
124
|
+
this.requireSelection = false;
|
123
125
|
this.suffixIcon = 'search';
|
124
126
|
this.removeProperties = [];
|
125
127
|
this.SelectElement = new EventEmitter();
|
@@ -153,7 +155,7 @@ class GuajiritosGeneralAutocomplete {
|
|
153
155
|
}
|
154
156
|
set url(data) {
|
155
157
|
if (data) {
|
156
|
-
this._url
|
158
|
+
this._url = data;
|
157
159
|
this.subscribeComponentChanges();
|
158
160
|
}
|
159
161
|
}
|
@@ -165,7 +167,7 @@ class GuajiritosGeneralAutocomplete {
|
|
165
167
|
.subscribe({
|
166
168
|
next: () => {
|
167
169
|
this.component.setValue(null, { emitEvent: false });
|
168
|
-
this.selectedElement
|
170
|
+
this.selectedElement = null;
|
169
171
|
this.SelectElement.emit(null);
|
170
172
|
this.filteredOptions.set([]);
|
171
173
|
this.propagateChange(null);
|
@@ -182,11 +184,11 @@ class GuajiritosGeneralAutocomplete {
|
|
182
184
|
* @param restrictions - Restricciones para la búsqueda
|
183
185
|
*/
|
184
186
|
set restrictions(restrictions) {
|
185
|
-
if (restrictions) {
|
186
|
-
this.restrictionsFilters
|
187
|
+
if (restrictions?.length) {
|
188
|
+
this.restrictionsFilters = [...restrictions];
|
187
189
|
}
|
188
190
|
else {
|
189
|
-
this.restrictionsFilters
|
191
|
+
this.restrictionsFilters = [];
|
190
192
|
}
|
191
193
|
}
|
192
194
|
/**
|
@@ -240,28 +242,28 @@ class GuajiritosGeneralAutocomplete {
|
|
240
242
|
* Subscripción a los cambios del input de búsqueda
|
241
243
|
*/
|
242
244
|
subscribeComponentChanges() {
|
243
|
-
this.component
|
244
|
-
|
245
|
-
|
245
|
+
this.component.valueChanges
|
246
|
+
.pipe(debounceTime(this.debounceTimeValue), ObservableDestroy.unregisterFn())
|
247
|
+
.subscribe({
|
246
248
|
next: () => {
|
247
|
-
if (!this.firstCall
|
249
|
+
if (!this.firstCall && !this.wasSelected) {
|
248
250
|
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
249
251
|
}
|
250
252
|
else {
|
251
|
-
this.firstCall
|
253
|
+
this.firstCall = false;
|
252
254
|
}
|
253
|
-
this.wasSelected
|
255
|
+
this.wasSelected = false;
|
254
256
|
}
|
255
257
|
});
|
256
258
|
}
|
257
259
|
/**
|
258
|
-
* Búsqueda de los elementos a mostrar en el componente de
|
260
|
+
* Búsqueda de los elementos a mostrar en el componente de autocompletamiento
|
259
261
|
*
|
260
262
|
* @param text - Texto a buscar
|
261
263
|
*/
|
262
264
|
getAutocompleteByTextHandler(text) {
|
263
265
|
this._autocompleteService
|
264
|
-
.getAutocompleteByText(this._url
|
266
|
+
.getAutocompleteByText(this._url, text, this.filterString, this.restrictionsFilters, this.removeProperties, this.order, this.bodyRequest)
|
265
267
|
.then((resp) => {
|
266
268
|
resp?.subscribe({
|
267
269
|
next: (result) => {
|
@@ -279,18 +281,18 @@ class GuajiritosGeneralAutocomplete {
|
|
279
281
|
getAutocompleteSearchText() {
|
280
282
|
this.loading.set(true);
|
281
283
|
let text = '';
|
282
|
-
if (this.component
|
284
|
+
if (this.component.value) {
|
283
285
|
if (typeof this.component.value === 'object') {
|
284
|
-
const componentValue = this.component?.
|
286
|
+
const componentValue = this.component.value?.[this.field?.[0]];
|
285
287
|
if (typeof componentValue === 'object') {
|
286
288
|
let lang = 'es';
|
287
|
-
if (this.field[1]) {
|
288
|
-
lang = this.field[1];
|
289
|
+
if (this.field?.[1]) {
|
290
|
+
lang = this.field?.[1];
|
289
291
|
}
|
290
|
-
text = componentValue[lang];
|
292
|
+
text = componentValue?.[lang];
|
291
293
|
}
|
292
294
|
}
|
293
|
-
else if (typeof this.component
|
295
|
+
else if (typeof this.component.value === 'string') {
|
294
296
|
text = this.component.value;
|
295
297
|
}
|
296
298
|
}
|
@@ -310,14 +312,14 @@ class GuajiritosGeneralAutocomplete {
|
|
310
312
|
if (value) {
|
311
313
|
this.component.setValue(value, { emitEvent: false });
|
312
314
|
if (typeof value === 'object' && this.valueId) {
|
313
|
-
this.selectedElement
|
315
|
+
this.selectedElement = value?.id;
|
314
316
|
}
|
315
317
|
else {
|
316
|
-
this.selectedElement
|
318
|
+
this.selectedElement = value;
|
317
319
|
}
|
318
320
|
}
|
319
321
|
else {
|
320
|
-
this.selectedElement
|
322
|
+
this.selectedElement = null;
|
321
323
|
}
|
322
324
|
}
|
323
325
|
setDisabledState(isDisabled) {
|
@@ -336,7 +338,7 @@ class GuajiritosGeneralAutocomplete {
|
|
336
338
|
*/
|
337
339
|
clear(trigger) {
|
338
340
|
this.component.setValue(null);
|
339
|
-
this.selectedElement
|
341
|
+
this.selectedElement = null;
|
340
342
|
this.SelectElement.emit(null);
|
341
343
|
this.propagateChange(null);
|
342
344
|
this._zone.run(() => {
|
@@ -349,14 +351,14 @@ class GuajiritosGeneralAutocomplete {
|
|
349
351
|
* Acción en el Focus del elemento
|
350
352
|
*/
|
351
353
|
onFocus() {
|
352
|
-
if (!this.selectedElement
|
354
|
+
if (!this.selectedElement) {
|
353
355
|
this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());
|
354
356
|
}
|
355
357
|
}
|
356
358
|
optionSelected($event) {
|
357
359
|
if ($event?.option?.value) {
|
358
|
-
this.wasSelected
|
359
|
-
this.selectedElement
|
360
|
+
this.wasSelected = true;
|
361
|
+
this.selectedElement = $event.option.value;
|
360
362
|
this.SelectElement.emit($event.option.value);
|
361
363
|
if (this.valueId) {
|
362
364
|
this.propagateChange(typeof $event.option.value === 'object' ? $event.option.value?.id : $event.option.value);
|
@@ -366,41 +368,39 @@ class GuajiritosGeneralAutocomplete {
|
|
366
368
|
}
|
367
369
|
}
|
368
370
|
}
|
369
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
370
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuajiritosGeneralAutocomplete, deps: [{ token: i1.AutocompleteService }, { token: i0.NgZone }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GuajiritosGeneralAutocomplete, isStandalone: true, selector: "guajiritos-general-autocomplete", inputs: { floatLabel: "floatLabel", bodyRequest: "bodyRequest", debounceTimeValue: "debounceTimeValue", detailsTemplate: "detailsTemplate", label: "label", showLabel: "showLabel", appearance: "appearance", color: "color", subscriptSizing: "subscriptSizing", placeholder: "placeholder", field: "field", filterString: "filterString", displayOptions: "displayOptions", withoutPaddingBottom: "withoutPaddingBottom", valueId: "valueId", showSuffix: "showSuffix", requireSelection: "requireSelection", order: "order", suffixIcon: "suffixIcon", removeProperties: "removeProperties", url: "url", clearData: "clearData", initialValue: "initialValue", restrictions: "restrictions", isRequired: "isRequired", doFocus: "doFocus" }, outputs: { SelectElement: "SelectElement" }, providers: [
|
373
|
+
ObservableDestroy,
|
371
374
|
{
|
372
375
|
provide: NG_VALUE_ACCESSOR,
|
373
376
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
374
377
|
multi: true
|
375
378
|
}
|
376
|
-
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component
|
379
|
+
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" [requireSelection]=\"requireSelection\"\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.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: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], 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: I18nPipe, name: "i18n" }, { kind: "pipe", type: ResolvePropertyPath, name: "resolvePropertyPath" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
377
380
|
}
|
378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuajiritosGeneralAutocomplete, decorators: [{
|
379
382
|
type: Component,
|
380
383
|
args: [{ selector: 'guajiritos-general-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
384
|
+
CommonModule,
|
381
385
|
MatFormFieldModule,
|
382
|
-
NgClass,
|
383
386
|
TranslateModule,
|
384
|
-
|
385
|
-
MatInputModule,
|
387
|
+
MatIconModule,
|
386
388
|
ReactiveFormsModule,
|
389
|
+
MatInputModule,
|
387
390
|
MatButtonModule,
|
388
|
-
MatIconModule,
|
389
391
|
MatProgressSpinnerModule,
|
390
|
-
|
391
|
-
NgForOf,
|
392
|
-
NgStyle,
|
393
|
-
NgTemplateOutlet,
|
392
|
+
MatAutocompleteModule,
|
394
393
|
I18nPipe,
|
395
394
|
ResolvePropertyPath
|
396
395
|
], providers: [
|
396
|
+
ObservableDestroy,
|
397
397
|
{
|
398
398
|
provide: NG_VALUE_ACCESSOR,
|
399
399
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
400
400
|
multi: true
|
401
401
|
}
|
402
|
-
], template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component
|
403
|
-
}], ctorParameters: ()
|
402
|
+
], template: "<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" [requireSelection]=\"requireSelection\"\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"] }]
|
403
|
+
}], ctorParameters: function () { return [{ type: i1.AutocompleteService }, { type: i0.NgZone }, { type: i2.TranslateService }]; }, propDecorators: { inputText: [{
|
404
404
|
type: ViewChild,
|
405
405
|
args: ['inputText', { static: true }]
|
406
406
|
}], floatLabel: [{
|
@@ -435,6 +435,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
435
435
|
type: Input
|
436
436
|
}], showSuffix: [{
|
437
437
|
type: Input
|
438
|
+
}], requireSelection: [{
|
439
|
+
type: Input
|
438
440
|
}], order: [{
|
439
441
|
type: Input
|
440
442
|
}], suffixIcon: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"guajiritos-general-autocomplete.mjs","sources":["../../../projects/guachos-general-autocomplete/src/utils/constants/constants.ts","../../../projects/guachos-general-autocomplete/src/utils/services/utils.service.ts","../../../projects/guachos-general-autocomplete/src/utils/pipes/resolve-property-path.pipe.ts","../../../projects/guachos-general-autocomplete/src/lib/guachos-general-autocomplete.component.ts","../../../projects/guachos-general-autocomplete/src/lib/guachos-general-autocomplete.component.html","../../../projects/guachos-general-autocomplete/src/public-api.ts","../../../projects/guachos-general-autocomplete/src/guajiritos-general-autocomplete.ts"],"sourcesContent":["import { DisplayOption, DisplayOptionItemType } from '@guajiritos/services';\r\n\r\n\r\nexport const GENERAL_DISPLAY_OPTIONS: DisplayOption = {\r\n firthLabel: [\r\n {\r\n type: DisplayOptionItemType.PATH,\r\n path: ['name']\r\n }\r\n ],\r\n applyTranslate: true\r\n};\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Resolves the value of a property in an object by providing a path.\r\n *\r\n * @param {any} obj - The object to traverse.\r\n * @param {string[]} path - An array of strings representing the path to the desired property.\r\n * @return {any} The value of the property at the given path, or null if the path is invalid.\r\n */\r\n public static resolvePropertyByPath(obj: any, path: string[]): any {\r\n return path.reduce((prev, curr: string) => {\r\n return prev ? prev[curr] : null;\r\n }, obj || self);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { DisplayOptionItem, DisplayOptionItemType } from '@guajiritos/services';\r\n\r\nimport { UtilsService } from '../services/utils.service';\r\n\r\n@Pipe({\r\n name: 'resolvePropertyPath',\r\n standalone: true\r\n})\r\nexport class ResolvePropertyPath implements PipeTransform {\r\n /**\r\n * Transforms the given object based on the provided path and returns the transformed string.\r\n *\r\n * @param {any} obj - The object to be transformed.\r\n * @param {DisplayOptionItem[]} path - The array of display option items used for transformation.\r\n * @return {string} The transformed string.\r\n */\r\n transform(obj: any, path: DisplayOptionItem[]): string {\r\n let result: string = '';\r\n\r\n path?.forEach((item: DisplayOptionItem): void => {\r\n if (item?.type === DisplayOptionItemType.DIVIDER) {\r\n result += item?.divider;\r\n } else {\r\n if (item?.path) {\r\n result += UtilsService.resolvePropertyByPath(obj, item.path);\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n}\r\n","import { NgClass, NgForOf, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n NgZone,\r\n Output,\r\n signal,\r\n TemplateRef,\r\n ViewChild,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport {\r\n FloatLabelType,\r\n MatFormFieldAppearance,\r\n MatFormFieldModule,\r\n SubscriptSizing\r\n} from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { debounceTime, Observable, Subject } from 'rxjs';\r\n\r\nimport {\r\n ApiFormData,\r\n AutocompleteService,\r\n DisplayOption,\r\n DisplayOptionItemType,\r\n I18nPipe,\r\n ObservableDestroy,\r\n RestrictionFilter\r\n} from '@guajiritos/services';\r\n\r\nimport { GENERAL_DISPLAY_OPTIONS } from '../utils/constants/constants';\r\nimport { ResolvePropertyPath } from '../utils/pipes/resolve-property-path.pipe';\r\nimport { UtilsService } from '../utils/services/utils.service';\r\n\r\n@Component({\r\n selector: 'guajiritos-general-autocomplete',\r\n templateUrl: './guachos-general-autocomplete.component.html',\r\n styleUrls: ['./guachos-general-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatFormFieldModule,\r\n NgClass,\r\n TranslateModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n NgIf,\r\n NgForOf,\r\n NgStyle,\r\n NgTemplateOutlet,\r\n I18nPipe,\r\n ResolvePropertyPath\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GuajiritosGeneralAutocomplete implements ControlValueAccessor {\r\n\r\n constructor(\r\n private _autocompleteService: AutocompleteService,\r\n private _zone: NgZone,\r\n public translateService: TranslateService\r\n ) {\r\n }\r\n\r\n private clearData$: Subject<void>;\r\n private doFocusSubject$: Subject<void>;\r\n private wasSelected: WritableSignal<boolean> = signal(false);\r\n private firstCall: WritableSignal<boolean> = signal(true);\r\n private selectedElement: WritableSignal<any> = signal(null);\r\n private _url: WritableSignal<string> = signal(null);\r\n private restrictionsFilters: WritableSignal<RestrictionFilter[]> = signal([]);\r\n\r\n public disabledButton: WritableSignal<boolean> = signal(false);\r\n public loading: WritableSignal<boolean> = signal(false);\r\n public required: WritableSignal<boolean> = signal(false);\r\n public filteredOptions: WritableSignal<any[]> = signal([]);\r\n public component: UntypedFormControl = new UntypedFormControl({ value: null, disabled: false });\r\n\r\n @ViewChild('inputText', { static: true }) inputText: ElementRef;\r\n /**\r\n * Possible values 'never', 'auto' or 'always'\r\n */\r\n @Input() floatLabel: FloatLabelType = 'auto';\r\n @Input() bodyRequest: ApiFormData;\r\n @Input() debounceTimeValue: number = 300;\r\n @Input() detailsTemplate: TemplateRef<any>;\r\n @Input() label: string = 'Seleccione';\r\n @Input() showLabel: boolean = true;\r\n @Input() appearance: MatFormFieldAppearance = 'outline';\r\n @Input() color: ThemePalette = 'accent';\r\n @Input() subscriptSizing: SubscriptSizing = 'dynamic';\r\n @Input() placeholder: string = 'Seleccione un elemento';\r\n @Input() field: string[] = ['name'];\r\n @Input() filterString: string = 'filter[$and][name][$like]';\r\n @Input() displayOptions: DisplayOption = GENERAL_DISPLAY_OPTIONS;\r\n @Input() withoutPaddingBottom: boolean = true;\r\n @Input() valueId: boolean = false;\r\n @Input() showSuffix: boolean = false;\r\n @Input() order: string;\r\n @Input() suffixIcon: string = 'search';\r\n @Input() removeProperties: string[] = [];\r\n @Output() SelectElement: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() set url(data: string) {\r\n if (data) {\r\n this._url.set(data);\r\n this.subscribeComponentChanges();\r\n }\r\n }\r\n\r\n @Input() set clearData(value: Subject<void>) {\r\n this.clearData$ = value;\r\n if (this.clearData$) {\r\n this.clearData$\r\n .pipe(ObservableDestroy.unregisterFn())\r\n .subscribe({\r\n next: (): void => {\r\n this.component.setValue(null, { emitEvent: false });\r\n this.selectedElement.set(null);\r\n this.SelectElement.emit(null);\r\n this.filteredOptions.set([]);\r\n this.propagateChange(null);\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Input() set initialValue(value: any) {\r\n this.component.setValue(value);\r\n }\r\n\r\n /**\r\n * Añade o elimina restricciones para la búsqueda\r\n *\r\n * @param restrictions - Restricciones para la búsqueda\r\n */\r\n @Input() set restrictions(restrictions: RestrictionFilter[]) {\r\n if (restrictions) {\r\n this.restrictionsFilters.set(restrictions);\r\n } else {\r\n this.restrictionsFilters.set([]);\r\n }\r\n }\r\n\r\n /**\r\n * Añade o elimina la validación de que el campo sea requerido\r\n *\r\n * @param required - Define si es requerido o no\r\n */\r\n @Input() set isRequired(required: boolean) {\r\n this.required.set(required);\r\n\r\n if (required) {\r\n this.component.setValidators([Validators.required, GuajiritosGeneralAutocomplete.autocompleteValidator]);\r\n } else {\r\n this.component.clearValidators();\r\n }\r\n\r\n this.component.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Define si vamos a realizar una búsqueda al elemento estar en el focus de la aplicación\r\n *\r\n * @param focusSubject - Observable para la subscripción al evento Focus\r\n */\r\n @Input() set doFocus(focusSubject: Subject<void>) {\r\n this.doFocusSubject$ = focusSubject;\r\n\r\n if (this.doFocusSubject$) {\r\n this.doFocusSubject$\r\n .pipe(ObservableDestroy.unregisterFn())\r\n .subscribe({\r\n next: (): void => {\r\n this._zone.run((): void => {\r\n setTimeout((): void => {\r\n this.inputText?.nativeElement?.focus();\r\n }, 500);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validación customizada para la selección de elementos\r\n */\r\n private static autocompleteValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n if (control?.value?.constructor !== Object || !control?.value?.id) {\r\n return { invalidSelection: true };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n /**\r\n * Subscripción a los cambios del input de búsqueda\r\n */\r\n private subscribeComponentChanges(): void {\r\n this.component?.valueChanges\r\n ?.pipe(debounceTime(this.debounceTimeValue), ObservableDestroy.unregisterFn())\r\n ?.subscribe({\r\n next: (): void => {\r\n if (!this.firstCall() && !this.wasSelected()) {\r\n this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());\r\n } else {\r\n this.firstCall.set(false);\r\n }\r\n\r\n this.wasSelected.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Búsqueda de los elementos a mostrar en el componente de auto completamiento\r\n *\r\n * @param text - Texto a buscar\r\n */\r\n private getAutocompleteByTextHandler(text?: string): void {\r\n this._autocompleteService\r\n .getAutocompleteByText(this._url(), text, this.filterString, this.restrictionsFilters(),\r\n this.removeProperties, this.order, this.bodyRequest)\r\n .then((resp: Observable<any>): void => {\r\n resp?.subscribe({\r\n next: (result: any): void => {\r\n this.filteredOptions.set(result?.payload?.data ?? result?.data);\r\n this.loading.set(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Define el texto por el que se va a realizar la búsqueda\r\n *\r\n * @return {string} Texto de la búsqueda\r\n */\r\n private getAutocompleteSearchText(): string {\r\n this.loading.set(true);\r\n\r\n let text: string = '';\r\n\r\n if (this.component?.value) {\r\n if (typeof this.component.value === 'object') {\r\n const componentValue = this.component?.value[this.field[0]];\r\n if (typeof componentValue === 'object') {\r\n let lang: string = 'es';\r\n if (this.field[1]) {\r\n lang = this.field[1];\r\n }\r\n\r\n text = componentValue[lang];\r\n }\r\n } else if (typeof this.component?.value === 'string') {\r\n text = this.component.value;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n propagateChange = (_: any): void => {\r\n };\r\n\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(): void {\r\n }\r\n\r\n /**\r\n * Recibe el valor del FormControl\r\n *\r\n * @param value - Valor entrado por FormControl\r\n */\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.component.setValue(value, { emitEvent: false });\r\n\r\n if (typeof value === 'object' && this.valueId) {\r\n this.selectedElement.set(value?.id);\r\n } else {\r\n this.selectedElement.set(value);\r\n }\r\n } else {\r\n this.selectedElement.set(null);\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledButton.set(isDisabled);\r\n if (isDisabled) {\r\n this.component.disable();\r\n } else {\r\n this.component.enable();\r\n }\r\n }\r\n\r\n /**\r\n * Función para mostrar los elementos a seleccionar\r\n *\r\n * @param value - Valor a mostrar\r\n */\r\n public displayFn = (value: any): string => {\r\n if (value) {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n let displayText: string = '';\r\n if (!this.displayOptions) {\r\n this.displayOptions = GENERAL_DISPLAY_OPTIONS;\r\n }\r\n\r\n this.displayOptions?.firthLabel?.forEach((field: any): void => {\r\n if (field?.type === DisplayOptionItemType.PATH) {\r\n displayText += UtilsService.resolvePropertyByPath(value, field?.path);\r\n } else {\r\n displayText += field?.divider;\r\n }\r\n });\r\n\r\n return displayText;\r\n }\r\n };\r\n\r\n /**\r\n * Acción al limpiar el valor del input\r\n *\r\n * @param trigger\r\n */\r\n public clear(trigger: MatAutocompleteTrigger): void {\r\n this.component.setValue(null);\r\n this.selectedElement.set(null);\r\n this.SelectElement.emit(null);\r\n this.propagateChange(null);\r\n\r\n this._zone.run((): void => {\r\n setTimeout((): void => {\r\n trigger.openPanel();\r\n }, 100);\r\n });\r\n }\r\n\r\n /**\r\n * Acción en el Focus del elemento\r\n */\r\n public onFocus(): void {\r\n if (!this.selectedElement()) {\r\n this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());\r\n }\r\n }\r\n\r\n public optionSelected($event: any): void {\r\n if ($event?.option?.value) {\r\n this.wasSelected.set(true);\r\n this.selectedElement.set($event.option.value);\r\n this.SelectElement.emit($event.option.value);\r\n\r\n if (this.valueId) {\r\n this.propagateChange(typeof $event.option.value === 'object' ? $event.option.value?.id : $event.option.value);\r\n } else {\r\n this.propagateChange($event.option.value);\r\n }\r\n }\r\n }\r\n}\r\n","<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component?.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" requireSelection\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n","/*\r\n * Public API Surface of guachos-general-autocomplete\r\n */\r\n\r\nexport * from './utils/constants/constants';\r\nexport * from './lib/guachos-general-autocomplete.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"guajiritos-general-autocomplete.mjs","sources":["../../../projects/guachos-general-autocomplete/src/utils/constants/constants.ts","../../../projects/guachos-general-autocomplete/src/utils/services/utils.service.ts","../../../projects/guachos-general-autocomplete/src/utils/pipes/resolve-property-path.pipe.ts","../../../projects/guachos-general-autocomplete/src/lib/guachos-general-autocomplete.component.ts","../../../projects/guachos-general-autocomplete/src/lib/guachos-general-autocomplete.component.html","../../../projects/guachos-general-autocomplete/src/public-api.ts","../../../projects/guachos-general-autocomplete/src/guajiritos-general-autocomplete.ts"],"sourcesContent":["import { DisplayOption, DisplayOptionItemType } from '@guajiritos/services';\r\n\r\n\r\nexport const GENERAL_DISPLAY_OPTIONS: DisplayOption = {\r\n firthLabel: [\r\n {\r\n type: DisplayOptionItemType.PATH,\r\n path: ['name']\r\n }\r\n ],\r\n applyTranslate: true\r\n};\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Resolves the value of a property in an object by providing a path.\r\n *\r\n * @param {any} obj - The object to traverse.\r\n * @param {string[]} path - An array of strings representing the path to the desired property.\r\n * @return {any} The value of the property at the given path, or null if the path is invalid.\r\n */\r\n public static resolvePropertyByPath(obj: any, path: string[]): any {\r\n return path.reduce((prev, curr: string) => {\r\n return prev ? prev[curr] : null;\r\n }, obj || self);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { DisplayOptionItem, DisplayOptionItemType } from '@guajiritos/services';\r\n\r\nimport { UtilsService } from '../services/utils.service';\r\n\r\n@Pipe({\r\n name: 'resolvePropertyPath',\r\n standalone: true\r\n})\r\nexport class ResolvePropertyPath implements PipeTransform {\r\n /**\r\n * Transforms the given object based on the provided path and returns the transformed string.\r\n *\r\n * @param {any} obj - The object to be transformed.\r\n * @param {DisplayOptionItem[]} path - The array of display option items used for transformation.\r\n * @return {string} The transformed string.\r\n */\r\n transform(obj: any, path: DisplayOptionItem[]): string {\r\n let result: string = '';\r\n\r\n path?.forEach((item: DisplayOptionItem): void => {\r\n if (item?.type === DisplayOptionItemType.DIVIDER) {\r\n result += item?.divider;\r\n } else {\r\n if (item?.path) {\r\n result += UtilsService.resolvePropertyByPath(obj, item.path);\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n NgZone,\r\n Output,\r\n signal,\r\n TemplateRef,\r\n ViewChild,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport {\r\n FloatLabelType,\r\n MatFormFieldAppearance,\r\n MatFormFieldModule,\r\n SubscriptSizing\r\n} from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { debounceTime, Observable, Subject } from 'rxjs';\r\n\r\nimport {\r\n ApiFormData,\r\n AutocompleteService,\r\n DisplayOption,\r\n DisplayOptionItemType,\r\n I18nPipe,\r\n ObservableDestroy,\r\n RestrictionFilter\r\n} from '@guajiritos/services';\r\n\r\nimport { GENERAL_DISPLAY_OPTIONS } from '../utils/constants/constants';\r\nimport { ResolvePropertyPath } from '../utils/pipes/resolve-property-path.pipe';\r\nimport { UtilsService } from '../utils/services/utils.service';\r\n\r\n@Component({\r\n selector: 'guajiritos-general-autocomplete',\r\n templateUrl: './guachos-general-autocomplete.component.html',\r\n styleUrls: ['./guachos-general-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n TranslateModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatProgressSpinnerModule,\r\n MatAutocompleteModule,\r\n I18nPipe,\r\n ResolvePropertyPath\r\n ],\r\n providers: [\r\n ObservableDestroy,\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GuajiritosGeneralAutocomplete implements ControlValueAccessor {\r\n\r\n constructor(\r\n private _autocompleteService: AutocompleteService,\r\n private _zone: NgZone,\r\n public translateService: TranslateService\r\n ) {\r\n }\r\n\r\n private wasSelected: boolean = false;\r\n private firstCall: boolean = true;\r\n private clearData$: Subject<void>;\r\n private doFocusSubject$: Subject<void>;\r\n private selectedElement: any = null;\r\n private _url: string = null;\r\n private restrictionsFilters: RestrictionFilter[] = [];\r\n\r\n public disabledButton: WritableSignal<boolean> = signal(false);\r\n public loading: WritableSignal<boolean> = signal(false);\r\n public required: WritableSignal<boolean> = signal(false);\r\n public filteredOptions: WritableSignal<any[]> = signal([]);\r\n public component: UntypedFormControl = new UntypedFormControl({ value: null, disabled: false });\r\n\r\n @ViewChild('inputText', { static: true }) inputText: ElementRef;\r\n /**\r\n * Possible values 'never', 'auto' or 'always'\r\n */\r\n @Input() floatLabel: FloatLabelType = 'auto';\r\n @Input() bodyRequest: ApiFormData;\r\n @Input() debounceTimeValue: number = 300;\r\n @Input() detailsTemplate: TemplateRef<any>;\r\n @Input() label: string = 'Seleccione';\r\n @Input() showLabel: boolean = true;\r\n @Input() appearance: MatFormFieldAppearance = 'outline';\r\n @Input() color: ThemePalette = 'accent';\r\n @Input() subscriptSizing: SubscriptSizing = 'dynamic';\r\n @Input() placeholder: string = 'Seleccione un elemento';\r\n @Input() field: string[] = ['name'];\r\n @Input() filterString: string = 'filter[$and][name][$like]';\r\n @Input() displayOptions: DisplayOption = GENERAL_DISPLAY_OPTIONS;\r\n @Input() withoutPaddingBottom: boolean = true;\r\n @Input() valueId: boolean = false;\r\n @Input() showSuffix: boolean = false;\r\n @Input() requireSelection: boolean = false;\r\n @Input() order: string;\r\n @Input() suffixIcon: string = 'search';\r\n @Input() removeProperties: string[] = [];\r\n\r\n @Output() SelectElement: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() set url(data: string) {\r\n if (data) {\r\n this._url = data;\r\n this.subscribeComponentChanges();\r\n }\r\n }\r\n\r\n @Input() set clearData(value: Subject<void>) {\r\n this.clearData$ = value;\r\n if (this.clearData$) {\r\n this.clearData$\r\n .pipe(ObservableDestroy.unregisterFn())\r\n .subscribe({\r\n next: (): void => {\r\n this.component.setValue(null, { emitEvent: false });\r\n this.selectedElement = null;\r\n this.SelectElement.emit(null);\r\n this.filteredOptions.set([]);\r\n this.propagateChange(null);\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Input() set initialValue(value: any) {\r\n this.component.setValue(value);\r\n }\r\n\r\n /**\r\n * Añade o elimina restricciones para la búsqueda\r\n *\r\n * @param restrictions - Restricciones para la búsqueda\r\n */\r\n @Input() set restrictions(restrictions: RestrictionFilter[]) {\r\n if (restrictions?.length) {\r\n this.restrictionsFilters = [...restrictions];\r\n } else {\r\n this.restrictionsFilters = [];\r\n }\r\n }\r\n\r\n /**\r\n * Añade o elimina la validación de que el campo sea requerido\r\n *\r\n * @param required - Define si es requerido o no\r\n */\r\n @Input() set isRequired(required: boolean) {\r\n this.required.set(required);\r\n\r\n if (required) {\r\n this.component.setValidators([Validators.required, GuajiritosGeneralAutocomplete.autocompleteValidator]);\r\n } else {\r\n this.component.clearValidators();\r\n }\r\n\r\n this.component.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Define si vamos a realizar una búsqueda al elemento estar en el focus de la aplicación\r\n *\r\n * @param focusSubject - Observable para la subscripción al evento Focus\r\n */\r\n @Input() set doFocus(focusSubject: Subject<void>) {\r\n this.doFocusSubject$ = focusSubject;\r\n\r\n if (this.doFocusSubject$) {\r\n this.doFocusSubject$\r\n .pipe(ObservableDestroy.unregisterFn())\r\n .subscribe({\r\n next: (): void => {\r\n this._zone.run((): void => {\r\n setTimeout((): void => {\r\n this.inputText?.nativeElement?.focus();\r\n }, 500);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validación customizada para la selección de elementos\r\n */\r\n private static autocompleteValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n if (control?.value?.constructor !== Object || !control?.value?.id) {\r\n return { invalidSelection: true };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n /**\r\n * Subscripción a los cambios del input de búsqueda\r\n */\r\n private subscribeComponentChanges(): void {\r\n this.component.valueChanges\r\n .pipe(debounceTime(this.debounceTimeValue), ObservableDestroy.unregisterFn())\r\n .subscribe({\r\n next: (): void => {\r\n if (!this.firstCall && !this.wasSelected) {\r\n this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());\r\n } else {\r\n this.firstCall = false;\r\n }\r\n\r\n this.wasSelected = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Búsqueda de los elementos a mostrar en el componente de autocompletamiento\r\n *\r\n * @param text - Texto a buscar\r\n */\r\n private getAutocompleteByTextHandler(text?: string): void {\r\n this._autocompleteService\r\n .getAutocompleteByText(this._url, text, this.filterString, this.restrictionsFilters,\r\n this.removeProperties, this.order, this.bodyRequest)\r\n .then((resp: Observable<any>): void => {\r\n resp?.subscribe({\r\n next: (result: any): void => {\r\n this.filteredOptions.set(result?.payload?.data ?? result?.data);\r\n this.loading.set(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Define el texto por el que se va a realizar la búsqueda\r\n *\r\n * @return {string} Texto de la búsqueda\r\n */\r\n private getAutocompleteSearchText(): string {\r\n this.loading.set(true);\r\n\r\n let text: string = '';\r\n\r\n if (this.component.value) {\r\n if (typeof this.component.value === 'object') {\r\n const componentValue = this.component.value?.[this.field?.[0]];\r\n if (typeof componentValue === 'object') {\r\n let lang: string = 'es';\r\n if (this.field?.[1]) {\r\n lang = this.field?.[1];\r\n }\r\n\r\n text = componentValue?.[lang];\r\n }\r\n } else if (typeof this.component.value === 'string') {\r\n text = this.component.value;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n propagateChange = (_: any): void => {\r\n };\r\n\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(): void {\r\n }\r\n\r\n /**\r\n * Recibe el valor del FormControl\r\n *\r\n * @param value - Valor entrado por FormControl\r\n */\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.component.setValue(value, { emitEvent: false });\r\n\r\n if (typeof value === 'object' && this.valueId) {\r\n this.selectedElement = value?.id;\r\n } else {\r\n this.selectedElement = value;\r\n }\r\n } else {\r\n this.selectedElement = null;\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledButton.set(isDisabled);\r\n if (isDisabled) {\r\n this.component.disable();\r\n } else {\r\n this.component.enable();\r\n }\r\n }\r\n\r\n /**\r\n * Función para mostrar los elementos a seleccionar\r\n *\r\n * @param value - Valor a mostrar\r\n */\r\n public displayFn = (value: any): string => {\r\n if (value) {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n let displayText: string = '';\r\n if (!this.displayOptions) {\r\n this.displayOptions = GENERAL_DISPLAY_OPTIONS;\r\n }\r\n\r\n this.displayOptions?.firthLabel?.forEach((field: any): void => {\r\n if (field?.type === DisplayOptionItemType.PATH) {\r\n displayText += UtilsService.resolvePropertyByPath(value, field?.path);\r\n } else {\r\n displayText += field?.divider;\r\n }\r\n });\r\n\r\n return displayText;\r\n }\r\n };\r\n\r\n /**\r\n * Acción al limpiar el valor del input\r\n *\r\n * @param trigger\r\n */\r\n public clear(trigger: MatAutocompleteTrigger): void {\r\n this.component.setValue(null);\r\n this.selectedElement = null;\r\n this.SelectElement.emit(null);\r\n this.propagateChange(null);\r\n\r\n this._zone.run((): void => {\r\n setTimeout((): void => {\r\n trigger.openPanel();\r\n }, 100);\r\n });\r\n }\r\n\r\n /**\r\n * Acción en el Focus del elemento\r\n */\r\n public onFocus(): void {\r\n if (!this.selectedElement) {\r\n this.getAutocompleteByTextHandler(this.getAutocompleteSearchText());\r\n }\r\n }\r\n\r\n public optionSelected($event: any): void {\r\n if ($event?.option?.value) {\r\n this.wasSelected = true;\r\n this.selectedElement = $event.option.value;\r\n this.SelectElement.emit($event.option.value);\r\n\r\n if (this.valueId) {\r\n this.propagateChange(typeof $event.option.value === 'object' ? $event.option.value?.id : $event.option.value);\r\n } else {\r\n this.propagateChange($event.option.value);\r\n }\r\n }\r\n }\r\n}\r\n","<mat-form-field [floatLabel]=\"floatLabel\" class=\"w-100\" [appearance]=\"appearance\" [color]=\"color\"\r\n [subscriptSizing]=\"subscriptSizing\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{ label | translate }}</mat-label>\r\n <mat-icon matSuffix *ngIf=\"showSuffix\">{{ suffixIcon ?? \"search\" }}</mat-icon>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" 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\" [requireSelection]=\"requireSelection\"\r\n (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18n: 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 | i18n: translateService.currentLang }}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{ option | resolvePropertyPath: displayOptions.secondLabel | i18n: 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 </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{ 'Este campo es requerido.' | translate }}\r\n </mat-error>\r\n</mat-form-field>\r\n","/*\r\n * Public API Surface of guachos-general-autocomplete\r\n */\r\n\r\nexport * from './utils/constants/constants';\r\nexport * from './lib/guachos-general-autocomplete.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
@@ -12,10 +12,10 @@ export declare class GuajiritosGeneralAutocomplete implements ControlValueAccess
|
|
12
12
|
private _zone;
|
13
13
|
translateService: TranslateService;
|
14
14
|
constructor(_autocompleteService: AutocompleteService, _zone: NgZone, translateService: TranslateService);
|
15
|
-
private clearData$;
|
16
|
-
private doFocusSubject$;
|
17
15
|
private wasSelected;
|
18
16
|
private firstCall;
|
17
|
+
private clearData$;
|
18
|
+
private doFocusSubject$;
|
19
19
|
private selectedElement;
|
20
20
|
private _url;
|
21
21
|
private restrictionsFilters;
|
@@ -44,6 +44,7 @@ export declare class GuajiritosGeneralAutocomplete implements ControlValueAccess
|
|
44
44
|
withoutPaddingBottom: boolean;
|
45
45
|
valueId: boolean;
|
46
46
|
showSuffix: boolean;
|
47
|
+
requireSelection: boolean;
|
47
48
|
order: string;
|
48
49
|
suffixIcon: string;
|
49
50
|
removeProperties: string[];
|
@@ -78,7 +79,7 @@ export declare class GuajiritosGeneralAutocomplete implements ControlValueAccess
|
|
78
79
|
*/
|
79
80
|
private subscribeComponentChanges;
|
80
81
|
/**
|
81
|
-
* Búsqueda de los elementos a mostrar en el componente de
|
82
|
+
* Búsqueda de los elementos a mostrar en el componente de autocompletamiento
|
82
83
|
*
|
83
84
|
* @param text - Texto a buscar
|
84
85
|
*/
|
@@ -117,5 +118,5 @@ export declare class GuajiritosGeneralAutocomplete implements ControlValueAccess
|
|
117
118
|
onFocus(): void;
|
118
119
|
optionSelected($event: any): void;
|
119
120
|
static ɵfac: i0.ɵɵFactoryDeclaration<GuajiritosGeneralAutocomplete, never>;
|
120
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosGeneralAutocomplete, "guajiritos-general-autocomplete", never, { "floatLabel": { "alias": "floatLabel"; "required": false; }; "bodyRequest": { "alias": "bodyRequest"; "required": false; }; "debounceTimeValue": { "alias": "debounceTimeValue"; "required": false; }; "detailsTemplate": { "alias": "detailsTemplate"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "field": { "alias": "field"; "required": false; }; "filterString": { "alias": "filterString"; "required": false; }; "displayOptions": { "alias": "displayOptions"; "required": false; }; "withoutPaddingBottom": { "alias": "withoutPaddingBottom"; "required": false; }; "valueId": { "alias": "valueId"; "required": false; }; "showSuffix": { "alias": "showSuffix"; "required": false; }; "order": { "alias": "order"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "removeProperties": { "alias": "removeProperties"; "required": false; }; "url": { "alias": "url"; "required": false; }; "clearData": { "alias": "clearData"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "restrictions": { "alias": "restrictions"; "required": false; }; "isRequired": { "alias": "isRequired"; "required": false; }; "doFocus": { "alias": "doFocus"; "required": false; }; }, { "SelectElement": "SelectElement"; }, never, never, true, never>;
|
121
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosGeneralAutocomplete, "guajiritos-general-autocomplete", never, { "floatLabel": { "alias": "floatLabel"; "required": false; }; "bodyRequest": { "alias": "bodyRequest"; "required": false; }; "debounceTimeValue": { "alias": "debounceTimeValue"; "required": false; }; "detailsTemplate": { "alias": "detailsTemplate"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "field": { "alias": "field"; "required": false; }; "filterString": { "alias": "filterString"; "required": false; }; "displayOptions": { "alias": "displayOptions"; "required": false; }; "withoutPaddingBottom": { "alias": "withoutPaddingBottom"; "required": false; }; "valueId": { "alias": "valueId"; "required": false; }; "showSuffix": { "alias": "showSuffix"; "required": false; }; "requireSelection": { "alias": "requireSelection"; "required": false; }; "order": { "alias": "order"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "removeProperties": { "alias": "removeProperties"; "required": false; }; "url": { "alias": "url"; "required": false; }; "clearData": { "alias": "clearData"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "restrictions": { "alias": "restrictions"; "required": false; }; "isRequired": { "alias": "isRequired"; "required": false; }; "doFocus": { "alias": "doFocus"; "required": false; }; }, { "SelectElement": "SelectElement"; }, never, never, true, never>;
|
121
122
|
}
|
package/package.json
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"name": "@guajiritos/general-autocomplete",
|
3
|
-
"version": "
|
3
|
+
"version": "16.0.0",
|
4
4
|
"peerDependencies": {
|
5
|
-
"@angular/cdk": "^
|
6
|
-
"@angular/common": "^
|
7
|
-
"@angular/core": "^
|
8
|
-
"@angular/material": "^
|
9
|
-
"@ngx-translate/core": "
|
10
|
-
"@guajiritos/services": "
|
11
|
-
"lodash.merge": "
|
5
|
+
"@angular/cdk": "^16.2.0",
|
6
|
+
"@angular/common": "^16.2.0",
|
7
|
+
"@angular/core": "^16.2.0",
|
8
|
+
"@angular/material": "^16.2.0",
|
9
|
+
"@ngx-translate/core": "^15.0.0",
|
10
|
+
"@guajiritos/services": "^0.0.1",
|
11
|
+
"lodash.merge": "^4.6.0"
|
12
12
|
},
|
13
13
|
"license": "MIT",
|
14
14
|
"dependencies": {
|