@testgorilla/tgo-ui 1.2.2 → 1.3.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/components/autocomplete/autocomplete.component.d.ts +1 -0
- package/components/autocomplete/autocomplete.model.d.ts +1 -1
- package/components/badge/badge.component.d.ts +40 -0
- package/components/badge/badge.component.module.d.ts +9 -0
- package/components/badge/badge.model.d.ts +18 -0
- package/components/button/button.component.d.ts +11 -3
- package/components/button/button.component.module.d.ts +2 -1
- package/components/button/button.model.d.ts +1 -1
- package/components/step/step.component.d.ts +93 -0
- package/components/step/step.component.module.d.ts +9 -0
- package/components/stepper/providers/is-mobile.d.ts +2 -0
- package/components/stepper/stepper.component.d.ts +47 -0
- package/components/stepper/stepper.component.module.d.ts +13 -0
- package/components/stepper/stepper.model.d.ts +12 -0
- package/directives/select-text.directive.d.ts +1 -1
- package/directives/step-line-width.directive.d.ts +15 -0
- package/esm2022/components/alert-banner/alert-banner.component.mjs +2 -2
- package/esm2022/components/autocomplete/autocomplete.component.mjs +19 -5
- package/esm2022/components/autocomplete/autocomplete.model.mjs +2 -2
- package/esm2022/components/autocomplete/transform-Item.pipe.mjs +3 -3
- package/esm2022/components/badge/badge.component.mjs +66 -0
- package/esm2022/components/badge/badge.component.module.mjs +19 -0
- package/esm2022/components/badge/badge.model.mjs +19 -0
- package/esm2022/components/banner-action/banner-action.component.mjs +1 -1
- package/esm2022/components/button/button.component.mjs +19 -4
- package/esm2022/components/button/button.component.module.mjs +5 -4
- package/esm2022/components/button/button.model.mjs +1 -1
- package/esm2022/components/create-account/create-account.component.mjs +1 -1
- package/esm2022/components/create-password/create-password.component.mjs +1 -1
- package/esm2022/components/dialog/dialog.component.mjs +1 -1
- package/esm2022/components/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/components/field/field.component.mjs +1 -1
- package/esm2022/components/forgot-password/forgot-password.component.mjs +1 -1
- package/esm2022/components/login/login.component.mjs +1 -1
- package/esm2022/components/snackbar/snackbar.component.mjs +2 -2
- package/esm2022/components/step/step.component.mjs +91 -0
- package/esm2022/components/step/step.component.module.mjs +19 -0
- package/esm2022/components/stepper/providers/is-mobile.mjs +11 -0
- package/esm2022/components/stepper/stepper.component.mjs +91 -0
- package/esm2022/components/stepper/stepper.component.module.mjs +43 -0
- package/esm2022/components/stepper/stepper.model.mjs +5 -0
- package/esm2022/directives/select-text.directive.mjs +7 -3
- package/esm2022/directives/step-line-width.directive.mjs +38 -0
- package/esm2022/public-api.mjs +8 -1
- package/fesm2022/testgorilla-tgo-ui.mjs +432 -41
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +4 -1
- package/public-api.d.ts +5 -0
- package/src/assets/i18n/en.json +3 -0
- package/src/assets/images/step-finish.svg +6 -0
|
@@ -82,6 +82,7 @@ export class AutocompleteComponent {
|
|
|
82
82
|
this.isOverlapChecking = true;
|
|
83
83
|
this.overlapIndex = 0;
|
|
84
84
|
this.inputValueSearch$ = new ReplaySubject(1);
|
|
85
|
+
this.userInput$ = new ReplaySubject(1);
|
|
85
86
|
this.filteredItemsList$ = this.inputValueSearch$.pipe(startWith(''), map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField) : null));
|
|
86
87
|
this.filteredSuggestionList$ = this.inputValueSearch$.pipe(map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null));
|
|
87
88
|
this.searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));
|
|
@@ -103,7 +104,7 @@ export class AutocompleteComponent {
|
|
|
103
104
|
}
|
|
104
105
|
ngAfterViewInit() {
|
|
105
106
|
if (this.type !== Autocomplete.LARGE) {
|
|
106
|
-
this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD);
|
|
107
|
+
this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
registerOnChange(fn) {
|
|
@@ -152,6 +153,7 @@ export class AutocompleteComponent {
|
|
|
152
153
|
}
|
|
153
154
|
onInputChange(event) {
|
|
154
155
|
const inputValue = event.target.value;
|
|
156
|
+
this.userInput$.next(inputValue);
|
|
155
157
|
if (inputValue.length >= this.minCharactersSearch) {
|
|
156
158
|
this.inputValueSearch$.next(inputValue);
|
|
157
159
|
this.searchTextChange.emit(inputValue);
|
|
@@ -191,7 +193,7 @@ export class AutocompleteComponent {
|
|
|
191
193
|
}
|
|
192
194
|
}
|
|
193
195
|
}
|
|
194
|
-
checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION) {
|
|
196
|
+
checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false) {
|
|
195
197
|
this.isOverLapping = false;
|
|
196
198
|
this.isOverlapChecking = true;
|
|
197
199
|
setTimeout(() => {
|
|
@@ -207,12 +209,21 @@ export class AutocompleteComponent {
|
|
|
207
209
|
}
|
|
208
210
|
});
|
|
209
211
|
this.isOverlapChecking = false;
|
|
212
|
+
if (init) {
|
|
213
|
+
if (this.type === this.autocompleteType.SINGLE) {
|
|
214
|
+
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
this.inputValue = ' ';
|
|
218
|
+
}
|
|
219
|
+
}
|
|
210
220
|
this.cdr.markForCheck();
|
|
211
221
|
}
|
|
212
222
|
}, delay);
|
|
213
223
|
}
|
|
214
224
|
onUpdate() {
|
|
215
225
|
this.inputValueSearch$.next('');
|
|
226
|
+
this.userInput$.next('');
|
|
216
227
|
this.selectionChange.emit(this.value);
|
|
217
228
|
this.onChange(this.value);
|
|
218
229
|
}
|
|
@@ -220,6 +231,9 @@ export class AutocompleteComponent {
|
|
|
220
231
|
if (this.type === this.autocompleteType.SINGLE) {
|
|
221
232
|
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
|
|
222
233
|
}
|
|
234
|
+
else {
|
|
235
|
+
this.inputValue = ' ';
|
|
236
|
+
}
|
|
223
237
|
if (this.type === this.autocompleteType.MULTI) {
|
|
224
238
|
this.checkOverlap();
|
|
225
239
|
}
|
|
@@ -243,7 +257,7 @@ export class AutocompleteComponent {
|
|
|
243
257
|
useExisting: forwardRef(() => AutocompleteComponent),
|
|
244
258
|
multi: true,
|
|
245
259
|
},
|
|
246
|
-
], viewQueries: [{ propertyName: "matFormFieldElement", first: true, predicate: ["matFormField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"autocomplete-wrapper\">\n <mat-form-field\n [appearance]=\"'outline'\"\n #matFormField\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, disabled: disabled }\"\n >\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(autocomplete, valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ t(translationContext + 'SELECTED_AMOUNT', { numberSelected: (value | slice: overlapIndex).length }) }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n *ngIf=\"inputValue || value?.length\"\n [size]=\"'24'\"\n [name]=\"'Close'\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n (optionSelected)=\"onOptionSelected($event)\"\n [hideSingleSelectionIndicator]=\"false\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED')\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"inputValue\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"t(translationContext + 'ALL_ITEMS') | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ t('COMMON.ADD') }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ t(translationContext + 'NO_RESULTS_FOUND') }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled ui-icon{opacity:.5}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-form-field{min-width:330px!important}::ng-deep .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#E9F0F1!important}::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:50%!important}::ng-deep .mat-mdc-text-field-wrapper{padding-left:12px!important}::ng-deep .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .mat-mdc-form-field-infix,::ng-deep .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-option.selected-option{background:#E9F0F1}::ng-deep .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5.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: "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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled"], outputs: ["close", "press"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }, { kind: "directive", type: i9.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i10.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i11.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i12.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
260
|
+
], viewQueries: [{ propertyName: "matFormFieldElement", first: true, predicate: ["matFormField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"autocomplete-wrapper\">\n <mat-form-field\n [appearance]=\"'outline'\"\n #matFormField\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, disabled: disabled }\"\n >\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(autocomplete, valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ t(translationContext + 'SELECTED_AMOUNT', { numberSelected: (value | slice: overlapIndex).length }) }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n *ngIf=\"inputValue || value?.length\"\n [size]=\"'24'\"\n [name]=\"'Close'\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n (optionSelected)=\"onOptionSelected($event)\"\n [hideSingleSelectionIndicator]=\"false\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"t(translationContext + 'ALL_ITEMS') | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ t('COMMON.ADD') }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ t(translationContext + 'NO_RESULTS_FOUND') }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled ui-icon{opacity:.5}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-form-field{min-width:330px!important}::ng-deep .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#E9F0F1!important}::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:50%!important}::ng-deep .mat-mdc-text-field-wrapper{padding-left:12px!important}::ng-deep .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .mat-mdc-form-field-infix,::ng-deep .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-option.selected-option{background:#E9F0F1}::ng-deep .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5.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: "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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled"], outputs: ["close", "press"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }, { kind: "directive", type: i9.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i10.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i11.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i12.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
247
261
|
}
|
|
248
262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
249
263
|
type: Component,
|
|
@@ -253,7 +267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
253
267
|
useExisting: forwardRef(() => AutocompleteComponent),
|
|
254
268
|
multi: true,
|
|
255
269
|
},
|
|
256
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\n <div class=\"autocomplete-wrapper\">\n <mat-form-field\n [appearance]=\"'outline'\"\n #matFormField\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, disabled: disabled }\"\n >\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(autocomplete, valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ t(translationContext + 'SELECTED_AMOUNT', { numberSelected: (value | slice: overlapIndex).length }) }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n *ngIf=\"inputValue || value?.length\"\n [size]=\"'24'\"\n [name]=\"'Close'\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n (optionSelected)=\"onOptionSelected($event)\"\n [hideSingleSelectionIndicator]=\"false\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED')\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"inputValue\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"t(translationContext + 'ALL_ITEMS') | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"inputValue\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ t('COMMON.ADD') }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ t(translationContext + 'NO_RESULTS_FOUND') }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled ui-icon{opacity:.5}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-form-field{min-width:330px!important}::ng-deep .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#E9F0F1!important}::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:50%!important}::ng-deep .mat-mdc-text-field-wrapper{padding-left:12px!important}::ng-deep .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .mat-mdc-form-field-infix,::ng-deep .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-option.selected-option{background:#E9F0F1}::ng-deep .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}\n"] }]
|
|
270
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\n <div class=\"autocomplete-wrapper\">\n <mat-form-field\n [appearance]=\"'outline'\"\n #matFormField\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, disabled: disabled }\"\n >\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(autocomplete, valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ t(translationContext + 'SELECTED_AMOUNT', { numberSelected: (value | slice: overlapIndex).length }) }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n *ngIf=\"inputValue || value?.length\"\n [size]=\"'24'\"\n [name]=\"'Close'\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n (optionSelected)=\"onOptionSelected($event)\"\n [hideSingleSelectionIndicator]=\"false\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"t(translationContext + 'SELECTED') | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"t(translationContext + 'SUGGESTED') | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"t(translationContext + 'ALL_ITEMS') | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [name]=\"'Check'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ t('COMMON.ADD') }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ t(translationContext + 'NO_RESULTS_FOUND') }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled ui-icon{opacity:.5}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-form-field{min-width:330px!important}::ng-deep .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#E9F0F1!important}::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:50%!important}::ng-deep .mat-mdc-text-field-wrapper{padding-left:12px!important}::ng-deep .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .mat-mdc-form-field-infix,::ng-deep .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-option.selected-option{background:#E9F0F1}::ng-deep .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}\n"] }]
|
|
257
271
|
}], propDecorators: { itemsList: [{
|
|
258
272
|
type: Input
|
|
259
273
|
}], suggestionsList: [{
|
|
@@ -285,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
285
299
|
type: ViewChild,
|
|
286
300
|
args: ['tagContainer']
|
|
287
301
|
}] } });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZXhGLE1BQU0sT0FBTyxxQkFBcUI7SUFibEM7UUFjRTs7OztXQUlHO1FBQ00sY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUUvQjs7OztXQUlHO1FBQ00sb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFckM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFeEI7Ozs7V0FJRztRQUNNLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7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QUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDdkI7SUFDSCxDQUFDOytHQWxSVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5WUFUckI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNwRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsbVFDL0JILGt5TUFrSkE7OzRGRGhIYSxxQkFBcUI7a0JBYmpDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFRdEMsU0FBUztzQkFBakIsS0FBSztnQkFPRyxlQUFlO3NCQUF2QixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFb0IsbUJBQW1CO3NCQUE3QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0UsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgbWFwLCBSZXBsYXlTdWJqZWN0LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXV0b2NvbXBsZXRlLXV0aWxzJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZSwgQXV0b2NvbXBsZXRlVHlwZSwgUGFkZGluZywgVGltZW91dCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgaXRlbXNMaXN0XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHN1Z2dlc3Rpb25zTGlzdFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzdWdnZXN0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBkaXNhYmxlZFxuICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgYXV0b2NvbXBsZXRlIGlzIGRpc2FibGVkLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgYWxsb3dBZGRcbiAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgYWxsb3dzIGFkZGluZyBuZXcgdmFsdWVzIHRvIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QWRkID0gdHJ1ZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHRleHRGaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXh0RmllbGQgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHZhbHVlRmllbGRcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBsYWJlbFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxhYmVsIGZvciB0aGUgYXV0b2NvbXBsZXRlIGlucHV0LlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWxlY3RlZCB2YWx1ZShzKSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHYpID8gdiA6IFt2XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdHlwZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIGF1dG9jb21wbGV0ZSAoJ3NpbmdsZScsICdtdWx0aScsIGV0Yy4pLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBBdXRvY29tcGxldGVUeXBlID0gJ211bHRpJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IG1pbkNoYXJhY3RlcnNTZWFyY2hcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBtaW5pbXVtIGNoYXJhY3RlcnMgdG8gdHJpZ2dlciBzZWFyY2guXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnNTZWFyY2ggPSAzO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdtYXRGb3JtRmllbGQnKSBtYXRGb3JtRmllbGRFbGVtZW50OiBNYXRGb3JtRmllbGQ7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0NvbnRhaW5lcicpIHRhZ0NvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgdmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWU6IGFueSA9ICcnO1xuICBwcm90ZWN0ZWQgaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhdXRvY29tcGxldGVUeXBlID0gQXV0b2NvbXBsZXRlO1xuICBwcm90ZWN0ZWQgaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNPdmVybGFwQ2hlY2tpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgb3ZlcmxhcEluZGV4ID0gMDtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWVTZWFyY2gkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXNMaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIG1hcChpbnB1dFZhbHVlID0+XG4gICAgICBpbnB1dFZhbHVlLmxlbmd0aCA/IEF1dG9jb21wbGV0ZVV0aWxzLmZpbHRlckl0ZW1zKHRoaXMuaXRlbXNMaXN0LCBpbnB1dFZhbHVlLCB0aGlzLnRleHRGaWVsZCkgOiBudWxsXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUoXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5zdWdnZXN0aW9uc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBzZWFyY2hSZXN1bHQkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKG1hcChpbnB1dFZhbHVlID0+ICEhaW5wdXRWYWx1ZS50cmltKCkpKTtcblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0FVVE9DT01QTEVURS4nO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gQXV0b2NvbXBsZXRlVXRpbHMuZXhjbHVkZVN1Z2dlc3Rpb25zKHRoaXMuaXRlbXNMaXN0LCB0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgIT09IEF1dG9jb21wbGV0ZS5MQVJHRSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0NPTVBPTkVOVF9MT0FEKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuY3JlYXRlVmFsdWVJdGVtKGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgIHRoaXMuYWRkTmV3VmFsdWUoaXRlbVZhbHVlKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uT3B0aW9uUmVtb3ZlZChpbnB1dDogYW55LCBvcHRpb246IGFueSk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKGlucHV0LnNob3dQYW5lbCA9IGZhbHNlKSwgMCk7XG5cbiAgICBjb25zdCBmb3VuZFZhbHVlID0gdGhpcy52YWx1ZS5maW5kKCh2OiBhbnkpID0+IHYgPT09IG9wdGlvbik7XG5cbiAgICBpZiAoZm91bmRWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IG9wdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJhY3RlcnNTZWFyY2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dChpbnB1dFZhbHVlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZS5lbWl0KGlucHV0VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHRoaXMudmFsdWUpID8gW10gOiAnJztcbiAgICB0aGlzLmlzT3ZlckxhcHBpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXBJbmRleCA9IDA7XG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZmlsbElucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiAhdGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRWYWx1ZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICB9XG5cbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXMgPSB0cnVlO1xuXG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy5pbnB1dFZhbHVlKSA/IHRoaXMuaW5wdXRWYWx1ZVswXSA6IHRoaXMuaW5wdXRWYWx1ZTtcblxuICAgIGlmIChBdXRvY29tcGxldGVVdGlscy5pc1ByaW1pdGl2ZShpbnB1dFZhbHVlKSkge1xuICAgICAgaWYgKGlucHV0VmFsdWU/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS50cmltU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdPy5tYXRjaCgvXlxccysvZ20pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVybGFwKGRlbGF5ID0gVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0FGVEVSX0FDVElPTik6IHZvaWQge1xuICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNPdmVybGFwQ2hlY2tpbmcgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFdpZHRoID1cbiAgICAgICAgdGhpcy5tYXRGb3JtRmllbGRFbGVtZW50Py5fdGV4dEZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSBQYWRkaW5nLkFVVE9DT01QTEVURV9DT05UQUlORVI7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy50YWdDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnZhbHVlLXRhZycpO1xuXG4gICAgICBpZiAodGFncykge1xuICAgICAgICBsZXQgd2lkdGggPSAwO1xuXG4gICAgICAgIHRhZ3MuZm9yRWFjaCgodGFnOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB3aWR0aCArPSB0YWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNPdmVyTGFwcGluZyAmJiB3aWR0aCA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNPdmVybGFwQ2hlY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlWzBdLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZE5ld1ZhbHVlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmICF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmREdXBsaWNhdGUgPSBBdXRvY29tcGxldGVVdGlscy5maW5kRHVwbGljYXRlKHRoaXMudmFsdWUsIG5ld1ZhbHVlLCB0aGlzLnRleHRGaWVsZCk7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZm91bmREdXBsaWNhdGUgPyB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSBmb3VuZER1cGxpY2F0ZSkgOiBbLi4udGhpcy52YWx1ZSwgbmV3VmFsdWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIFthcHBlYXJhbmNlXT1cIidvdXRsaW5lJ1wiXG4gICAgICAjbWF0Rm9ybUZpZWxkXG4gICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1zaXplJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSwgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIlxuICAgID5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgICAjdGFnQ29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFICYmIHRoaXMudmFsdWUpIHx8XG4gICAgICAgICAgICAoIShpbnB1dFZhbHVlICYmIHRoaXMuaXNJbnB1dEZvY3VzKSAmJiB0aGlzLnZhbHVlICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktdGFnXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlLXRhZ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ3VpLXRhZy0nICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVJdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZUl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGRcIlxuICAgICAgICAgICAgW2FsbG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc092ZXJMYXBwaW5nICYmIGkgPj0gb3ZlcmxhcEluZGV4ID8gJ25vbmUnIDogJ2Jsb2NrJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdvdmVybGFwLXRhZyc6IGlzT3ZlcmxhcENoZWNraW5nICYmIG92ZXJsYXBJbmRleCAmJiBpID49IG92ZXJsYXBJbmRleCAmJiB0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLk1VTFRJXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChjbG9zZSk9XCJvbk9wdGlvblJlbW92ZWQoYXV0b2NvbXBsZXRlLCB2YWx1ZUl0ZW0pXCJcbiAgICAgICAgICA+PC91aS10YWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3ZlckxhcHBpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb3ZlcmxhcEluZGV4OyBlbHNlIG92ZXJsYXBUYWdcIiBjbGFzcz1cIm92ZXJsYXAtY291bnRcIj5cbiAgICAgICAgICAgICAge3sgdCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnU0VMRUNURURfQU1PVU5UJywgeyBudW1iZXJTZWxlY3RlZDogKHZhbHVlIHwgc2xpY2U6IG92ZXJsYXBJbmRleCkubGVuZ3RoIH0pIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3ZlcmxhcFRhZz5cbiAgICAgICAgICAgICAgPHVpLXRhZyBbcmVhZE9ubHldPVwidHJ1ZVwiIFtsYWJlbF09XCInKycgKyAodmFsdWUgfCBzbGljZTogb3ZlcmxhcEluZGV4KS5sZW5ndGhcIj48L3VpLXRhZz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Vuc2V0LW1hcmdpbic6IHRoaXMudmFsdWUgJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgICAoYmx1cik9XCJyZWZpbGxJbnB1dCgpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dWktaWNvblxuICAgICAgICBjbGFzcz1cInJlbW92ZS1zZWxlY3RlZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xhcmdlLWlucHV0LWljb24nOiB0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFIH1cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICAgICAgKm5nSWY9XCJpbnB1dFZhbHVlIHx8IHZhbHVlPy5sZW5ndGhcIlxuICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgW25hbWVdPVwiJ0Nsb3NlJ1wiXG4gICAgICA+PC91aS1pY29uPlxuXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKHNlYXJjaFJlc3VsdCQgfCBhc3luYylcIj5cbiAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJ0KHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKVwiICpuZ0lmPVwic3VnZ2VzdGlvbnNMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogc3VnZ2VzdGVkIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkIG9mIHN1Z2dlc3Rpb25zTGlzdFwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWdnZXN0ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJpbnB1dFZhbHVlXCI+e3sgc3VnZ2VzdGVkIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8dWktaWNvbiBbbmFtZV09XCInQ2hlY2snXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwidCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnU0VMRUNURUQnKSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwidmFsdWU/Lmxlbmd0aCAmJiB0eXBlICE9PSBhdXRvY29tcGxldGVUeXBlLlNJTkdMRVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWVcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDx1aS1pY29uIFtuYW1lXT1cIidDaGVjaydcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRJdGVtc0xpc3RcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cInQodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NVR0dFU1RFRCcpIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwiaW5wdXRWYWx1ZVwiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0NoZWNrJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGg7IGVsc2Ugc2hvd0l0ZW1MaXN0V2l0aEdyb3VwXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwiaW5wdXRWYWx1ZVwiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0NoZWNrJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW1MaXN0V2l0aEdyb3VwPlxuICAgICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJ0KHRyYW5zbGF0aW9uQ29udGV4dCArICdBTExfSVRFTVMnKSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwiaW5wdXRWYWx1ZVwiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8dWktaWNvbiBbbmFtZV09XCInQ2hlY2snXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbHRlcmVkSXRlbXNMaXN0Lmxlbmd0aCAmJiAhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGggJiYgaW5wdXRWYWx1ZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dBZGQ7IGVsc2Ugbm90Rm91bmRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaW5wdXRWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnQ09NTU9OLkFERCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGQtc3VnZ2VzdGlvblwiPlwie3sgaW5wdXRWYWx1ZSB9fVwiPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZD5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiJ25vbmUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KHRyYW5zbGF0aW9uQ29udGV4dCArICdOT19SRVNVTFRTX0ZPVU5EJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZXhGLE1BQU0sT0FBTyxxQkFBcUI7SUFibEM7UUFjRTs7OztXQUlHO1FBQ00sY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUUvQjs7OztXQUlHO1FBQ00sb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFckM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFeEI7Ozs7V0FJRztRQUNNLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7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Q1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBUXRDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csZUFBZTtzQkFBdkIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPTyxTQUFTO3NCQUFyQixLQUFLO2dCQVNHLElBQUk7c0JBQVosS0FBSztnQkFPRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRW9CLG1CQUFtQjtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNFLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IG1hcCwgUmVwbGF5U3ViamVjdCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dG9jb21wbGV0ZS11dGlscyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGUsIEF1dG9jb21wbGV0ZVR5cGUsIFBhZGRpbmcsIFRpbWVvdXQgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogQHByb3BlcnR5IGl0ZW1zTGlzdFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpdGVtc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBzdWdnZXN0aW9uc0xpc3RcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXkgaW4gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VnZ2VzdGlvbnNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgZGlzYWJsZWRcbiAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgdGhlIGF1dG9jb21wbGV0ZSBpcyBkaXNhYmxlZC5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGFsbG93QWRkXG4gICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIGFsbG93cyBhZGRpbmcgbmV3IHZhbHVlcyB0byB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhbGxvd0FkZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB0ZXh0RmllbGRcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSBkaXNwbGF5IHRleHQgaW4gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGV4dEZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB2YWx1ZUZpZWxkXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZmllbGQgdG8gYmUgdXNlZCBhcyB0aGUgdmFsdWUgaW4gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVGaWVsZCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgbGFiZWxcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsYWJlbCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dC5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHZhbHVlXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgc2VsZWN0ZWQgdmFsdWUocykgaW4gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGl0ZW1WYWx1ZSh2OiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh2KSA/IHYgOiBbdl07XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IHR5cGVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSBhdXRvY29tcGxldGUgKCdzaW5nbGUnLCAnbXVsdGknLCBldGMuKS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogQXV0b2NvbXBsZXRlVHlwZSA9ICdtdWx0aSc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBtaW5DaGFyYWN0ZXJzU2VhcmNoXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbWluaW11bSBjaGFyYWN0ZXJzIHRvIHRyaWdnZXIgc2VhcmNoLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtaW5DaGFyYWN0ZXJzU2VhcmNoID0gMztcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hUZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnbWF0Rm9ybUZpZWxkJykgbWF0Rm9ybUZpZWxkRWxlbWVudDogTWF0Rm9ybUZpZWxkO1xuICBAVmlld0NoaWxkKCd0YWdDb250YWluZXInKSB0YWdDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlOiBhbnkgPSAnJztcbiAgcHJvdGVjdGVkIGlzSW5wdXRGb2N1cyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYXV0b2NvbXBsZXRlVHlwZSA9IEF1dG9jb21wbGV0ZTtcbiAgcHJvdGVjdGVkIGlzT3ZlckxhcHBpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzT3ZlcmxhcENoZWNraW5nID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIG92ZXJsYXBJbmRleCA9IDA7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlU2VhcmNoJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gIHByb3RlY3RlZCB1c2VySW5wdXQkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXNMaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIG1hcChpbnB1dFZhbHVlID0+XG4gICAgICBpbnB1dFZhbHVlLmxlbmd0aCA/IEF1dG9jb21wbGV0ZVV0aWxzLmZpbHRlckl0ZW1zKHRoaXMuaXRlbXNMaXN0LCBpbnB1dFZhbHVlLCB0aGlzLnRleHRGaWVsZCkgOiBudWxsXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUoXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5zdWdnZXN0aW9uc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBzZWFyY2hSZXN1bHQkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKG1hcChpbnB1dFZhbHVlID0+ICEhaW5wdXRWYWx1ZS50cmltKCkpKTtcblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0FVVE9DT01QTEVURS4nO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gQXV0b2NvbXBsZXRlVXRpbHMuZXhjbHVkZVN1Z2dlc3Rpb25zKHRoaXMuaXRlbXNMaXN0LCB0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgIT09IEF1dG9jb21wbGV0ZS5MQVJHRSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0NPTVBPTkVOVF9MT0FELCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuY3JlYXRlVmFsdWVJdGVtKGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgIHRoaXMuYWRkTmV3VmFsdWUoaXRlbVZhbHVlKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uT3B0aW9uUmVtb3ZlZChpbnB1dDogYW55LCBvcHRpb246IGFueSk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKGlucHV0LnNob3dQYW5lbCA9IGZhbHNlKSwgMCk7XG5cbiAgICBjb25zdCBmb3VuZFZhbHVlID0gdGhpcy52YWx1ZS5maW5kKCh2OiBhbnkpID0+IHYgPT09IG9wdGlvbik7XG5cbiAgICBpZiAoZm91bmRWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IG9wdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KGlucHV0VmFsdWUpO1xuICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJhY3RlcnNTZWFyY2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dChpbnB1dFZhbHVlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZS5lbWl0KGlucHV0VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHRoaXMudmFsdWUpID8gW10gOiAnJztcbiAgICB0aGlzLmlzT3ZlckxhcHBpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXBJbmRleCA9IDA7XG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZmlsbElucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiAhdGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRWYWx1ZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICB9XG5cbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXMgPSB0cnVlO1xuXG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy5pbnB1dFZhbHVlKSA/IHRoaXMuaW5wdXRWYWx1ZVswXSA6IHRoaXMuaW5wdXRWYWx1ZTtcblxuICAgIGlmIChBdXRvY29tcGxldGVVdGlscy5pc1ByaW1pdGl2ZShpbnB1dFZhbHVlKSkge1xuICAgICAgaWYgKGlucHV0VmFsdWU/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS50cmltU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdPy5tYXRjaCgvXlxccysvZ20pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGlucHV0VmFsdWVbdGhpcy50ZXh0RmllbGRdLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVybGFwKGRlbGF5ID0gVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0FGVEVSX0FDVElPTiwgaW5pdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5pc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0V2lkdGggPVxuICAgICAgICB0aGlzLm1hdEZvcm1GaWVsZEVsZW1lbnQ/Ll90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCAtIFBhZGRpbmcuQVVUT0NPTVBMRVRFX0NPTlRBSU5FUjtcbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLnRhZ0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudmFsdWUtdGFnJyk7XG5cbiAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgIGxldCB3aWR0aCA9IDA7XG5cbiAgICAgICAgdGFncy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHdpZHRoICs9IHRhZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICAgIGlmICghdGhpcy5pc092ZXJMYXBwaW5nICYmIHdpZHRoID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5pc092ZXJMYXBwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc092ZXJsYXBDaGVja2luZyA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlWzBdLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoJycpO1xuICAgIHRoaXMudXNlcklucHV0JC5uZXh0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZVswXSwgdGhpcy50ZXh0RmllbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnICc7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZE5ld1ZhbHVlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmICF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmREdXBsaWNhdGUgPSBBdXRvY29tcGxldGVVdGlscy5maW5kRHVwbGljYXRlKHRoaXMudmFsdWUsIG5ld1ZhbHVlLCB0aGlzLnRleHRGaWVsZCk7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZm91bmREdXBsaWNhdGUgPyB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSBmb3VuZER1cGxpY2F0ZSkgOiBbLi4udGhpcy52YWx1ZSwgbmV3VmFsdWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIFthcHBlYXJhbmNlXT1cIidvdXRsaW5lJ1wiXG4gICAgICAjbWF0Rm9ybUZpZWxkXG4gICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1zaXplJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSwgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIlxuICAgID5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgICAjdGFnQ29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFICYmIHRoaXMudmFsdWUpIHx8XG4gICAgICAgICAgICAoIShpbnB1dFZhbHVlICYmIHRoaXMuaXNJbnB1dEZvY3VzKSAmJiB0aGlzLnZhbHVlICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktdGFnXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlLXRhZ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ3VpLXRhZy0nICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVJdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZUl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGRcIlxuICAgICAgICAgICAgW2FsbG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc092ZXJMYXBwaW5nICYmIGkgPj0gb3ZlcmxhcEluZGV4ID8gJ25vbmUnIDogJ2Jsb2NrJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdvdmVybGFwLXRhZyc6IGlzT3ZlcmxhcENoZWNraW5nICYmIG92ZXJsYXBJbmRleCAmJiBpID49IG92ZXJsYXBJbmRleCAmJiB0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLk1VTFRJXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChjbG9zZSk9XCJvbk9wdGlvblJlbW92ZWQoYXV0b2NvbXBsZXRlLCB2YWx1ZUl0ZW0pXCJcbiAgICAgICAgICA+PC91aS10YWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3ZlckxhcHBpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb3ZlcmxhcEluZGV4OyBlbHNlIG92ZXJsYXBUYWdcIiBjbGFzcz1cIm92ZXJsYXAtY291bnRcIj5cbiAgICAgICAgICAgICAge3sgdCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnU0VMRUNURURfQU1PVU5UJywgeyBudW1iZXJTZWxlY3RlZDogKHZhbHVlIHwgc2xpY2U6IG92ZXJsYXBJbmRleCkubGVuZ3RoIH0pIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3ZlcmxhcFRhZz5cbiAgICAgICAgICAgICAgPHVpLXRhZyBbcmVhZE9ubHldPVwidHJ1ZVwiIFtsYWJlbF09XCInKycgKyAodmFsdWUgfCBzbGljZTogb3ZlcmxhcEluZGV4KS5sZW5ndGhcIj48L3VpLXRhZz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Vuc2V0LW1hcmdpbic6IHRoaXMudmFsdWUgJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgICAoYmx1cik9XCJyZWZpbGxJbnB1dCgpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dWktaWNvblxuICAgICAgICBjbGFzcz1cInJlbW92ZS1zZWxlY3RlZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xhcmdlLWlucHV0LWljb24nOiB0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFIH1cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICAgICAgKm5nSWY9XCJpbnB1dFZhbHVlIHx8IHZhbHVlPy5sZW5ndGhcIlxuICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgW25hbWVdPVwiJ0Nsb3NlJ1wiXG4gICAgICA+PC91aS1pY29uPlxuXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKHNlYXJjaFJlc3VsdCQgfCBhc3luYylcIj5cbiAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJ0KHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwic3VnZ2VzdGlvbnNMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogc3VnZ2VzdGVkIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkIG9mIHN1Z2dlc3Rpb25zTGlzdFwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWdnZXN0ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBzdWdnZXN0ZWQgfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDx1aS1pY29uIFtuYW1lXT1cIidDaGVjaydcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJ0KHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRCcpIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJ2YWx1ZT8ubGVuZ3RoICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0NoZWNrJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1vcHRncm91cD5cblxuICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cInQodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEJykgfCB1cHBlcmNhc2VcIiAqbmdJZj1cInZhbHVlPy5sZW5ndGggJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgIFtjbGFzc109XCInc2VsZWN0ZWQtb3B0aW9uJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IHZhbHVlIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8dWktaWNvbiBbbmFtZV09XCInQ2hlY2snXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRTdWdnZXN0aW9uTGlzdCQgfCBhc3luYyBhcyBmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkSXRlbXNMaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkSXRlbXNMaXN0XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJ0KHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0NoZWNrJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGg7IGVsc2Ugc2hvd0l0ZW1MaXN0V2l0aEdyb3VwXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbbmFtZV09XCInQ2hlY2snXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93SXRlbUxpc3RXaXRoR3JvdXA+XG4gICAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cInQodHJhbnNsYXRpb25Db250ZXh0ICsgJ0FMTF9JVEVNUycpIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJmaWx0ZXJlZEl0ZW1zTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkSXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0NoZWNrJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWx0ZXJlZEl0ZW1zTGlzdC5sZW5ndGggJiYgIWZpbHRlcmVkU3VnZ2VzdGlvbkxpc3QubGVuZ3RoICYmIGlucHV0VmFsdWVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QWRkOyBlbHNlIG5vdEZvdW5kXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImlucHV0VmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ0NPTU1PTi5BREQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkLXN1Z2dlc3Rpb25cIj5cInt7IGlucHV0VmFsdWUgfX1cIjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmQ+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cIidub25lJ1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnTk9fUkVTVUxUU19GT1VORCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -11,6 +11,6 @@ export var Padding;
|
|
|
11
11
|
export var Timeout;
|
|
12
12
|
(function (Timeout) {
|
|
13
13
|
Timeout[Timeout["VIEW_INITIALIZED_AFTER_ACTION"] = 20] = "VIEW_INITIALIZED_AFTER_ACTION";
|
|
14
|
-
Timeout[Timeout["VIEW_INITIALIZED_COMPONENT_LOAD"] =
|
|
14
|
+
Timeout[Timeout["VIEW_INITIALIZED_COMPONENT_LOAD"] = 600] = "VIEW_INITIALIZED_COMPONENT_LOAD";
|
|
15
15
|
})(Timeout || (Timeout = {}));
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxZQUlYO0FBSkQsV0FBWSxZQUFZO0lBQ3RCLGlDQUFpQixDQUFBO0lBQ2pCLCtCQUFlLENBQUE7SUFDZiwrQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QjtBQUVELE1BQU0sQ0FBTixJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsMEVBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUZXLE9BQU8sS0FBUCxPQUFPLFFBRWxCO0FBRUQsTUFBTSxDQUFOLElBQVksT0FHWDtBQUhELFdBQVksT0FBTztJQUNqQix3RkFBa0MsQ0FBQTtJQUNsQyw2RkFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBSFcsT0FBTyxLQUFQLE9BQU8sUUFHbEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBdXRvY29tcGxldGVUeXBlID0gJ3NpbmdsZScgfCAnbXVsdGknIHwgJ2xhcmdlJztcblxuZXhwb3J0IGVudW0gQXV0b2NvbXBsZXRlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJID0gJ211bHRpJyxcbiAgTEFSR0UgPSAnbGFyZ2UnLFxufVxuXG5leHBvcnQgZW51bSBQYWRkaW5nIHtcbiAgQVVUT0NPTVBMRVRFX0NPTlRBSU5FUiA9IDgwLFxufVxuXG5leHBvcnQgZW51bSBUaW1lb3V0IHtcbiAgVklFV19JTklUSUFMSVpFRF9BRlRFUl9BQ1RJT04gPSAyMCxcbiAgVklFV19JTklUSUFMSVpFRF9DT01QT05FTlRfTE9BRCA9IDYwMCxcbn1cbiJdfQ==
|
|
@@ -10,8 +10,8 @@ export class TransformItemPipe {
|
|
|
10
10
|
if (AutocompleteUtils.isPrimitive(value)) {
|
|
11
11
|
return value;
|
|
12
12
|
}
|
|
13
|
-
else if (!AutocompleteUtils.isPrimitive(value) && field && value[field]) {
|
|
14
|
-
return value[field];
|
|
13
|
+
else if (!AutocompleteUtils.isPrimitive(value) && field && (value[field] || value[0][field])) {
|
|
14
|
+
return value[field] || value[0][field];
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
AutocompleteUtils.throwInvalidSetupError();
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
26
26
|
name: 'transformItem',
|
|
27
27
|
}]
|
|
28
28
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLUl0ZW0ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS90cmFuc2Zvcm0tSXRlbS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUVuRTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsS0FBYTtRQUNqQyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QyxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDOUYsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDTCxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzsrR0FUVSxpQkFBaUI7NkdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dG9jb21wbGV0ZS11dGlscyc7XG5cbi8qKlxuICogdGhlIFRyYW5zZm9ybUl0ZW1QaXBlIGlzIGRlc2lnbmVkIHRvIHNlbGVjdGl2ZWx5IGV4dHJhY3QgYW5kIHJldHVybiB2YWx1ZXMgZnJvbSBvYmplY3RzIGJhc2VkIG9uIGEgc3BlY2lmaWVkIGZpZWxkLFxuICogcHJvdmlkaW5nIGEgd2F5IHRvIHRyYW5zZm9ybSBhbmQgZGlzcGxheSBkYXRhIGEgdGVtcGxhdGUuXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3RyYW5zZm9ybUl0ZW0nLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1JdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoIUF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKHZhbHVlKSAmJiBmaWVsZCAmJiAodmFsdWVbZmllbGRdIHx8IHZhbHVlWzBdW2ZpZWxkXSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZVtmaWVsZF0gfHwgdmFsdWVbMF1bZmllbGRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBBdXRvY29tcGxldGVVdGlscy50aHJvd0ludmFsaWRTZXR1cEVycm9yKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { BadgeColorEnum, BadgeVariantEnum } from './badge.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../icon/icon.component";
|
|
6
|
+
export class BadgeComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* The label to be displayed on the badge.
|
|
10
|
+
* @type {string}
|
|
11
|
+
* @memberof BadgeComponent
|
|
12
|
+
*/
|
|
13
|
+
this.label = '';
|
|
14
|
+
/**
|
|
15
|
+
* The icon name to be displayed on the badge.
|
|
16
|
+
* @type {IconName}
|
|
17
|
+
* @memberof BadgeComponent
|
|
18
|
+
*/
|
|
19
|
+
this.icon = '';
|
|
20
|
+
/**
|
|
21
|
+
* The color of the badge. Defaults to 'petrol'.
|
|
22
|
+
* @type {BadgeColor}
|
|
23
|
+
* @memberof BadgeComponent
|
|
24
|
+
*/
|
|
25
|
+
this.color = 'petrol';
|
|
26
|
+
/**
|
|
27
|
+
* The variant of the badge. Defaults to 'notification'.
|
|
28
|
+
* @type {BadgeVariant}
|
|
29
|
+
* @memberof BadgeComponent
|
|
30
|
+
*/
|
|
31
|
+
this.variant = 'notification';
|
|
32
|
+
/**
|
|
33
|
+
* The amount of notifications to be displayed on the badge.
|
|
34
|
+
* @type {number}
|
|
35
|
+
* @memberof BadgeComponent
|
|
36
|
+
*/
|
|
37
|
+
this.notificationsAmount = 0;
|
|
38
|
+
this.badgeVariant = BadgeVariantEnum;
|
|
39
|
+
this.darkColors = [
|
|
40
|
+
BadgeColorEnum.GREY_MEDIUM,
|
|
41
|
+
BadgeColorEnum.PETROL_90W,
|
|
42
|
+
BadgeColorEnum.TEAL_60W,
|
|
43
|
+
BadgeColorEnum.GREY_MEDIUM,
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
get iconColor() {
|
|
47
|
+
return this.darkColors.includes(this.color) ? 'black' : 'white';
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BadgeComponent, selector: "ui-badge", inputs: { label: "label", icon: "icon", color: "color", variant: "variant", notificationsAmount: "notificationsAmount" }, ngImport: i0, template: "<div [class]=\"'badge-container-' + variant\" [attr.color]=\"color\">\n <ng-container [ngSwitch]=\"variant\">\n <ui-icon *ngSwitchCase=\"badgeVariant.PRIMARY\" class=\"badge-icon\" [name]=\"icon\" [color]=\"iconColor\" ></ui-icon>\n <div *ngSwitchCase=\"badgeVariant.SECONDARY\" class=\"point\" [attr.color]=\"color\"></div>\n <div *ngSwitchCase=\"badgeVariant.NOTIFICATION\" class=\"number-notification\">{{ notificationsAmount }}</div>\n </ng-container>\n <div class=\"label\" *ngIf=\"label && variant !== badgeVariant.NOTIFICATION\">{{ label }}</div>\n</div>\n", styles: [":host{display:block;width:-moz-fit-content;width:fit-content}:host .badge-container-primary,:host .badge-container-secondary{height:24px;padding:0 8px;border-radius:21px;color:#fff;font-size:12px;line-height:10px}:host .badge-container-primary .badge-icon,:host .badge-container-secondary .badge-icon{margin-right:8px}:host .badge-container-secondary .point{border-radius:50%;width:8px;height:8px;margin-right:8px}:host .badge-container-secondary .label{color:#000!important}:host .badge-container-notification{width:20px;height:20px;border-radius:50%;font-size:12px;line-height:10px}:host .badge-container-notification .number-notification{color:#fff}.flex-center,:host .badge-container-primary,:host .badge-container-secondary,:host .badge-container-notification{display:flex;align-items:center;justify-content:center}.background-colors[color=red],:host [color=red].badge-container-primary,:host .badge-container-secondary [color=red].point,:host [color=red].badge-container-notification{background:#cb7b7a}.background-colors[color=grey-medium],:host [color=grey-medium].badge-container-primary,:host .badge-container-secondary [color=grey-medium].point,:host [color=grey-medium].badge-container-notification{background:#E0E0E0;color:#000}.background-colors[color=teal],:host [color=teal].badge-container-primary,:host .badge-container-secondary [color=teal].point,:host [color=teal].badge-container-notification{background:#46A997}.background-colors[color=yellow],:host [color=yellow].badge-container-primary,:host .badge-container-secondary [color=yellow].point,:host [color=yellow].badge-container-notification{background:#cca45f}.background-colors[color=petrol],:host [color=petrol].badge-container-primary,:host .badge-container-secondary [color=petrol].point,:host [color=petrol].badge-container-notification{background:#276678}.background-colors[color=teal-60w],:host [color=teal-60w].badge-container-primary,:host .badge-container-secondary [color=teal-60w].point,:host [color=teal-60w].badge-container-notification{background:#B5DDD5;color:#000}.background-colors[color=petrol-90w],:host [color=petrol-90w].badge-container-primary,:host .badge-container-secondary [color=petrol-90w].point,:host [color=petrol-90w].badge-container-notification{background:#E9F0F1;color:#000}.background-colors[color=petrol-60w],:host [color=petrol-60w].badge-container-primary,:host .badge-container-secondary [color=petrol-60w].point,:host [color=petrol-60w].badge-container-notification{background:#A9C2C9;color:#000}.background-colors[color=grey-dark],:host [color=grey-dark].badge-container-primary,:host .badge-container-secondary [color=grey-dark].point,:host [color=grey-dark].badge-container-notification{background:#888888}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }] }); }
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{ selector: 'ui-badge', template: "<div [class]=\"'badge-container-' + variant\" [attr.color]=\"color\">\n <ng-container [ngSwitch]=\"variant\">\n <ui-icon *ngSwitchCase=\"badgeVariant.PRIMARY\" class=\"badge-icon\" [name]=\"icon\" [color]=\"iconColor\" ></ui-icon>\n <div *ngSwitchCase=\"badgeVariant.SECONDARY\" class=\"point\" [attr.color]=\"color\"></div>\n <div *ngSwitchCase=\"badgeVariant.NOTIFICATION\" class=\"number-notification\">{{ notificationsAmount }}</div>\n </ng-container>\n <div class=\"label\" *ngIf=\"label && variant !== badgeVariant.NOTIFICATION\">{{ label }}</div>\n</div>\n", styles: [":host{display:block;width:-moz-fit-content;width:fit-content}:host .badge-container-primary,:host .badge-container-secondary{height:24px;padding:0 8px;border-radius:21px;color:#fff;font-size:12px;line-height:10px}:host .badge-container-primary .badge-icon,:host .badge-container-secondary .badge-icon{margin-right:8px}:host .badge-container-secondary .point{border-radius:50%;width:8px;height:8px;margin-right:8px}:host .badge-container-secondary .label{color:#000!important}:host .badge-container-notification{width:20px;height:20px;border-radius:50%;font-size:12px;line-height:10px}:host .badge-container-notification .number-notification{color:#fff}.flex-center,:host .badge-container-primary,:host .badge-container-secondary,:host .badge-container-notification{display:flex;align-items:center;justify-content:center}.background-colors[color=red],:host [color=red].badge-container-primary,:host .badge-container-secondary [color=red].point,:host [color=red].badge-container-notification{background:#cb7b7a}.background-colors[color=grey-medium],:host [color=grey-medium].badge-container-primary,:host .badge-container-secondary [color=grey-medium].point,:host [color=grey-medium].badge-container-notification{background:#E0E0E0;color:#000}.background-colors[color=teal],:host [color=teal].badge-container-primary,:host .badge-container-secondary [color=teal].point,:host [color=teal].badge-container-notification{background:#46A997}.background-colors[color=yellow],:host [color=yellow].badge-container-primary,:host .badge-container-secondary [color=yellow].point,:host [color=yellow].badge-container-notification{background:#cca45f}.background-colors[color=petrol],:host [color=petrol].badge-container-primary,:host .badge-container-secondary [color=petrol].point,:host [color=petrol].badge-container-notification{background:#276678}.background-colors[color=teal-60w],:host [color=teal-60w].badge-container-primary,:host .badge-container-secondary [color=teal-60w].point,:host [color=teal-60w].badge-container-notification{background:#B5DDD5;color:#000}.background-colors[color=petrol-90w],:host [color=petrol-90w].badge-container-primary,:host .badge-container-secondary [color=petrol-90w].point,:host [color=petrol-90w].badge-container-notification{background:#E9F0F1;color:#000}.background-colors[color=petrol-60w],:host [color=petrol-60w].badge-container-primary,:host .badge-container-secondary [color=petrol-60w].point,:host [color=petrol-60w].badge-container-notification{background:#A9C2C9;color:#000}.background-colors[color=grey-dark],:host [color=grey-dark].badge-container-primary,:host .badge-container-secondary [color=grey-dark].point,:host [color=grey-dark].badge-container-notification{background:#888888}\n"] }]
|
|
55
|
+
}], propDecorators: { label: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], icon: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], color: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], variant: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], notificationsAmount: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFjLGNBQWMsRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFPM0YsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFNRTs7OztXQUlHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7OztXQUlHO1FBQ00sU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUU3Qjs7OztXQUlHO1FBQ00sVUFBSyxHQUFlLFFBQVEsQ0FBQztRQUV0Qzs7OztXQUlHO1FBQ00sWUFBTyxHQUFpQixjQUFjLENBQUM7UUFFaEQ7Ozs7V0FJRztRQUNNLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUV2QixpQkFBWSxHQUFHLGdCQUFnQixDQUFDO1FBQ2xDLGVBQVUsR0FBYTtZQUM3QixjQUFjLENBQUMsV0FBVztZQUMxQixjQUFjLENBQUMsVUFBVTtZQUN6QixjQUFjLENBQUMsUUFBUTtZQUN2QixjQUFjLENBQUMsV0FBVztTQUMzQixDQUFDO0tBS0g7SUFIQyxJQUFjLFNBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xFLENBQUM7K0dBOUNVLGNBQWM7bUdBQWQsY0FBYywwS0NUM0IsaWtCQVFBOzs0RkRDYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFVBQVU7OEJBVVgsS0FBSztzQkFBYixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25Db2xvciwgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xuaW1wb3J0IHsgQmFkZ2VDb2xvciwgQmFkZ2VDb2xvckVudW0sIEJhZGdlVmFyaWFudCwgQmFkZ2VWYXJpYW50RW51bSB9IGZyb20gJy4vYmFkZ2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1iYWRnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYWRnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JhZGdlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIGJhZGdlLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQmFkZ2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIG5hbWUgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBiYWRnZS5cbiAgICogQHR5cGUge0ljb25OYW1lfVxuICAgKiBAbWVtYmVyb2YgQmFkZ2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGljb246IEljb25OYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgYmFkZ2UuIERlZmF1bHRzIHRvICdwZXRyb2wnLlxuICAgKiBAdHlwZSB7QmFkZ2VDb2xvcn1cbiAgICogQG1lbWJlcm9mIEJhZGdlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb2xvcjogQmFkZ2VDb2xvciA9ICdwZXRyb2wnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCBvZiB0aGUgYmFkZ2UuIERlZmF1bHRzIHRvICdub3RpZmljYXRpb24nLlxuICAgKiBAdHlwZSB7QmFkZ2VWYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgQmFkZ2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEJhZGdlVmFyaWFudCA9ICdub3RpZmljYXRpb24nO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIG5vdGlmaWNhdGlvbnMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBiYWRnZS5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEJhZGdlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBub3RpZmljYXRpb25zQW1vdW50ID0gMDtcblxuICBwcm90ZWN0ZWQgYmFkZ2VWYXJpYW50ID0gQmFkZ2VWYXJpYW50RW51bTtcbiAgcHJpdmF0ZSBkYXJrQ29sb3JzOiBzdHJpbmdbXSA9IFtcbiAgICBCYWRnZUNvbG9yRW51bS5HUkVZX01FRElVTSxcbiAgICBCYWRnZUNvbG9yRW51bS5QRVRST0xfOTBXLFxuICAgIEJhZGdlQ29sb3JFbnVtLlRFQUxfNjBXLFxuICAgIEJhZGdlQ29sb3JFbnVtLkdSRVlfTUVESVVNLFxuICBdO1xuXG4gIHByb3RlY3RlZCBnZXQgaWNvbkNvbG9yKCk6IEljb25Db2xvciB7XG4gICAgcmV0dXJuIHRoaXMuZGFya0NvbG9ycy5pbmNsdWRlcyh0aGlzLmNvbG9yKSA/ICdibGFjaycgOiAnd2hpdGUnO1xuICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCInYmFkZ2UtY29udGFpbmVyLScgKyB2YXJpYW50XCIgW2F0dHIuY29sb3JdPVwiY29sb3JcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmFyaWFudFwiPlxuICAgIDx1aS1pY29uICpuZ1N3aXRjaENhc2U9XCJiYWRnZVZhcmlhbnQuUFJJTUFSWVwiIGNsYXNzPVwiYmFkZ2UtaWNvblwiIFtuYW1lXT1cImljb25cIiBbY29sb3JdPVwiaWNvbkNvbG9yXCIgPjwvdWktaWNvbj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJiYWRnZVZhcmlhbnQuU0VDT05EQVJZXCIgY2xhc3M9XCJwb2ludFwiIFthdHRyLmNvbG9yXT1cImNvbG9yXCI+PC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiYmFkZ2VWYXJpYW50Lk5PVElGSUNBVElPTlwiIGNsYXNzPVwibnVtYmVyLW5vdGlmaWNhdGlvblwiPnt7IG5vdGlmaWNhdGlvbnNBbW91bnQgfX08L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJsYWJlbFwiICpuZ0lmPVwibGFiZWwgJiYgdmFyaWFudCAhPT0gYmFkZ2VWYXJpYW50Lk5PVElGSUNBVElPTlwiPnt7IGxhYmVsIH19PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BadgeComponent } from './badge.component';
|
|
4
|
+
import { IconComponentModule } from '../icon/icon.component.module';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class BadgeComponentModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponentModule, declarations: [BadgeComponent], imports: [CommonModule, IconComponentModule], exports: [BadgeComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponentModule, imports: [CommonModule, IconComponentModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponentModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [BadgeComponent],
|
|
15
|
+
imports: [CommonModule, IconComponentModule],
|
|
16
|
+
exports: [BadgeComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU9wRSxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixpQkFKaEIsY0FBYyxhQUNuQixZQUFZLEVBQUUsbUJBQW1CLGFBQ2pDLGNBQWM7Z0hBRWIsb0JBQW9CLFlBSHJCLFlBQVksRUFBRSxtQkFBbUI7OzRGQUdoQyxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQmFkZ2VDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uQ29tcG9uZW50TW9kdWxlXSxcbiAgZXhwb3J0czogW0JhZGdlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VDb21wb25lbnRNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export var BadgeColorEnum;
|
|
2
|
+
(function (BadgeColorEnum) {
|
|
3
|
+
BadgeColorEnum["RED"] = "red";
|
|
4
|
+
BadgeColorEnum["GREY_MEDIUM"] = "grey-medium";
|
|
5
|
+
BadgeColorEnum["TEAL"] = "teal";
|
|
6
|
+
BadgeColorEnum["YELLOW"] = "yellow";
|
|
7
|
+
BadgeColorEnum["PETROL"] = "petrol";
|
|
8
|
+
BadgeColorEnum["TEAL_60W"] = "teal-60w";
|
|
9
|
+
BadgeColorEnum["PETROL_90W"] = "petrol-90w";
|
|
10
|
+
BadgeColorEnum["PETROL_60W"] = "petrol-60w";
|
|
11
|
+
BadgeColorEnum["GREY_DARK"] = "grey-dark";
|
|
12
|
+
})(BadgeColorEnum || (BadgeColorEnum = {}));
|
|
13
|
+
export var BadgeVariantEnum;
|
|
14
|
+
(function (BadgeVariantEnum) {
|
|
15
|
+
BadgeVariantEnum["PRIMARY"] = "primary";
|
|
16
|
+
BadgeVariantEnum["SECONDARY"] = "secondary";
|
|
17
|
+
BadgeVariantEnum["NOTIFICATION"] = "notification";
|
|
18
|
+
})(BadgeVariantEnum || (BadgeVariantEnum = {}));
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYWRnZS9iYWRnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLENBQU4sSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLDZCQUFXLENBQUE7SUFDWCw2Q0FBMkIsQ0FBQTtJQUMzQiwrQkFBYSxDQUFBO0lBQ2IsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7SUFDakIsdUNBQXFCLENBQUE7SUFDckIsMkNBQXlCLENBQUE7SUFDekIsMkNBQXlCLENBQUE7SUFDekIseUNBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVZXLGNBQWMsS0FBZCxjQUFjLFFBVXpCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQix1Q0FBbUIsQ0FBQTtJQUNuQiwyQ0FBdUIsQ0FBQTtJQUN2QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJhZGdlVmFyaWFudCA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ25vdGlmaWNhdGlvbic7XG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID1cbiAgfCAncmVkJ1xuICB8ICdncmV5LW1lZGl1bSdcbiAgfCAndGVhbCdcbiAgfCAneWVsbG93J1xuICB8ICdwZXRyb2wnXG4gIHwgJ3RlYWwtNjB3J1xuICB8ICdwZXRyb2wtOTB3J1xuICB8ICdwZXRyb2wtNjB3J1xuICB8ICdncmV5LWRhcmsnO1xuXG5leHBvcnQgZW51bSBCYWRnZUNvbG9yRW51bSB7XG4gIFJFRCA9ICdyZWQnLFxuICBHUkVZX01FRElVTSA9ICdncmV5LW1lZGl1bScsXG4gIFRFQUwgPSAndGVhbCcsXG4gIFlFTExPVyA9ICd5ZWxsb3cnLFxuICBQRVRST0wgPSAncGV0cm9sJyxcbiAgVEVBTF82MFcgPSAndGVhbC02MHcnLFxuICBQRVRST0xfOTBXID0gJ3BldHJvbC05MHcnLFxuICBQRVRST0xfNjBXID0gJ3BldHJvbC02MHcnLFxuICBHUkVZX0RBUksgPSAnZ3JleS1kYXJrJyxcbn1cblxuZXhwb3J0IGVudW0gQmFkZ2VWYXJpYW50RW51bSB7XG4gIFBSSU1BUlkgPSAncHJpbWFyeScsXG4gIFNFQ09OREFSWSA9ICdzZWNvbmRhcnknLFxuICBOT1RJRklDQVRJT04gPSAnbm90aWZpY2F0aW9uJyxcbn1cbiJdfQ==
|
|
@@ -42,7 +42,7 @@ export class BannerActionComponent {
|
|
|
42
42
|
this.cssClass = alertBarsUtil.setCssClass(this.fullWidth, this.bannerActionType, this.position);
|
|
43
43
|
}
|
|
44
44
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BannerActionComponent, selector: "ui-banner-action", inputs: { message: "message", bannerActionType: "bannerActionType", buttonText: "buttonText", fixed: "fixed", fullWidth: "fullWidth", buttonIcon: "buttonIcon" }, outputs: { buttonClickEvent: "buttonClickEvent" }, ngImport: i0, template: "<div id=\"banner-action\" class=\"banner-action-container\" [ngClass]=\"cssClass\">\n <div class=\"banner-action-text\">\n <ui-icon [name]=\"iconName\" size=\"24\"></ui-icon>\n {{ message }}\n </div>\n <ui-button [label]=\"buttonText\" (buttonClickEvent)=\"buttonClick($event)\" [iconName]=\"buttonIcon\"></ui-button>\n</div>\n", styles: [":host{display:flex;width:100%;justify-content:center}:host .banner-action-container{height:72px;padding:0 16px;color:#000;font-size:14px;display:flex;align-items:center;background:#ffffff;border-radius:8px;justify-content:space-between;border-width:2px;border-style:solid}:host .banner-action-container.fixed{position:fixed;z-index:98;top:0}:host .banner-action-container.static{position:relative}:host .banner-action-container.full-width{width:100%;min-width:100%}:host .banner-action-container .banner-action-text{display:flex;align-items:center}:host .banner-action-container ui-icon{margin-right:14px}:host .banner-action-container ui-button{margin-left:14px}:host .banner-action-container.success{border-color:#46a997}:host .banner-action-container.info{border-color:#276678}:host .banner-action-container.warning{border-color:#cca45f}:host .banner-action-container.error{border-color:#cb7b7a}@media (max-width: 600px){:host .banner-action-container{height:auto;padding:16px;display:flex;flex-flow:column}:host .banner-action-container .banner-action-text{margin-bottom:10px}:host .banner-action-container ui-button{margin:0;width:100%}:host .banner-action-container ui-button ::ng-deep button{min-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "ui-button", inputs: ["size", "type", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i3.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BannerActionComponent, selector: "ui-banner-action", inputs: { message: "message", bannerActionType: "bannerActionType", buttonText: "buttonText", fixed: "fixed", fullWidth: "fullWidth", buttonIcon: "buttonIcon" }, outputs: { buttonClickEvent: "buttonClickEvent" }, ngImport: i0, template: "<div id=\"banner-action\" class=\"banner-action-container\" [ngClass]=\"cssClass\">\n <div class=\"banner-action-text\">\n <ui-icon [name]=\"iconName\" size=\"24\"></ui-icon>\n {{ message }}\n </div>\n <ui-button [label]=\"buttonText\" (buttonClickEvent)=\"buttonClick($event)\" [iconName]=\"buttonIcon\"></ui-button>\n</div>\n", styles: [":host{display:flex;width:100%;justify-content:center}:host .banner-action-container{height:72px;padding:0 16px;color:#000;font-size:14px;display:flex;align-items:center;background:#ffffff;border-radius:8px;justify-content:space-between;border-width:2px;border-style:solid}:host .banner-action-container.fixed{position:fixed;z-index:98;top:0}:host .banner-action-container.static{position:relative}:host .banner-action-container.full-width{width:100%;min-width:100%}:host .banner-action-container .banner-action-text{display:flex;align-items:center}:host .banner-action-container ui-icon{margin-right:14px}:host .banner-action-container ui-button{margin-left:14px}:host .banner-action-container.success{border-color:#46a997}:host .banner-action-container.info{border-color:#276678}:host .banner-action-container.warning{border-color:#cca45f}:host .banner-action-container.error{border-color:#cb7b7a}@media (max-width: 600px){:host .banner-action-container{height:auto;padding:16px;display:flex;flex-flow:column}:host .banner-action-container .banner-action-text{margin-bottom:10px}:host .banner-action-container ui-button{margin:0;width:100%}:host .banner-action-container ui-button ::ng-deep button{min-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "ui-button", inputs: ["size", "type", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i3.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
46
46
|
}
|
|
47
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerActionComponent, decorators: [{
|
|
48
48
|
type: Component,
|