bpm-core 0.0.26 → 0.0.28

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.
Files changed (49) hide show
  1. package/esm2022/lib/app/app.component.mjs +9 -10
  2. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +3 -3
  3. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +2 -2
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +4 -40
  5. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +3 -3
  6. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
  7. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +2 -2
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +42 -31
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +63 -14
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +70 -137
  11. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +42 -78
  12. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +5 -19
  13. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +23 -115
  14. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +20 -72
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +20 -74
  16. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +20 -104
  17. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +20 -39
  18. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +27 -59
  19. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +3 -6
  20. package/esm2022/lib/environments/environment.local.mjs +2 -2
  21. package/esm2022/lib/services/core.service.ts.mjs +7 -8
  22. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
  23. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +37 -23
  24. package/fesm2022/bpm-core.mjs +538 -958
  25. package/fesm2022/bpm-core.mjs.map +1 -1
  26. package/lib/app/app.component.d.ts +1 -2
  27. package/lib/components/app-component-sections/activities/activities.component.d.ts +2 -2
  28. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +1 -1
  29. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +3 -4
  30. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +1 -1
  31. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +3 -1
  32. package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
  33. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +10 -7
  34. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +15 -5
  35. package/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.d.ts +15 -15
  36. package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +6 -13
  37. package/lib/components/shared-components/form-field/input/input.component.d.ts +2 -6
  38. package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +6 -23
  39. package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +4 -18
  40. package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +4 -18
  41. package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +5 -20
  42. package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +4 -15
  43. package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +5 -14
  44. package/lib/components/shared-components/form-field/validation-errors/validation-errors.component.d.ts +1 -2
  45. package/lib/services/core.service.ts.d.ts +1 -1
  46. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +5 -7
  47. package/package.json +3 -2
  48. package/esm2022/lib/testComponent/services/state-machine.service.mjs +0 -148
  49. package/lib/testComponent/services/state-machine.service.d.ts +0 -29
@@ -2,108 +2,33 @@
2
2
  /* eslint-disable @angular-eslint/use-lifecycle-interface */
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
4
  /* eslint-disable @angular-eslint/component-selector */
5
- import { BaseComponent } from '../base-component/base-component.component';
6
- import { ReactiveFormsModule, Validators } from '@angular/forms';
7
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
5
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
6
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Input } from '@angular/core';
8
7
  import { MatError, MatFormField, MatHint } from '@angular/material/form-field';
9
8
  import { NgClass, NgIf } from "@angular/common";
10
9
  import { InfoItemComponent } from "../info-item/info-item.component";
11
10
  import { SatPopoverModule } from "@ncstate/sat-popover";
11
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
12
+ import { MatInput } from '@angular/material/input';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "@angular/forms";
14
15
  import * as i2 from "@ncstate/sat-popover";
15
- export class InputCurrencyComponent extends BaseComponent {
16
- label;
17
- displayValue;
18
- hasError = false;
19
- error;
16
+ export class InputCurrencyComponent extends ControlValueAccessorDirective {
20
17
  tooltip;
21
18
  floatLabel = 'auto';
22
19
  className = 'bordered-input';
23
- showLabel = true;
24
- showPlus = true;
25
- showMinus = true;
26
- matPrefix;
27
20
  iconPrefixName;
28
- matSuffix;
29
21
  iconSuffixName;
30
22
  numberSuffixName;
31
- optional = false;
32
- showArrows = false;
33
- decimals = 0;
34
- ngOnInit() {
35
- // this.resetPropagator.subscribe(this, this.resetData);
36
- this.field == undefined ? (this.field = '') : this.field;
37
- this.controller.setValue(this.field);
38
- if (this.type == 'email') {
39
- this.controller.setValidators([
40
- Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$'),
41
- ]);
42
- }
43
- // if (this.minLength) {
44
- // this.controller.setValidators([Validators.minLength(+this.minLength)]);
45
- // }
46
- if (this.maxLength && !this.mask) {
47
- // this.controller.setValidators([Validators.maxLength(+this.maxLength)]);
48
- this.mask = '0'.repeat(+this.maxLength);
49
- }
50
- if (this.maxValue) {
51
- this.controller.setValidators([Validators.max(+this.maxValue)]);
52
- }
53
- }
54
- ngAfterViewChecked() {
55
- this.cdRef.detectChanges();
56
- }
57
- ngOnChanges(changes) {
58
- if (changes?.['field']) {
59
- if (changes?.['field'].currentValue == '' || changes?.['field'].currentValue == null) {
60
- this.controller.setValue('');
61
- }
62
- else {
63
- this.controller.setValue(changes['field'].currentValue);
64
- }
65
- }
66
- }
67
- plus() {
68
- let controlValue = (this.controller.value);
69
- controlValue = this.mycurrencyPipe.parse(controlValue);
70
- controlValue = Number(controlValue);
71
- controlValue = controlValue + 1;
72
- const currencValue = this.mycurrencyPipe.transform(controlValue.toString());
73
- this.controller.setValue(this.mycurrencyPipe.transform(currencValue));
74
- this.emitedValue.emit(this.controller.value);
75
- }
76
- minus() {
77
- let controlValue = (this.controller.value);
78
- controlValue = this.mycurrencyPipe.parse(controlValue);
79
- controlValue = Number(controlValue);
80
- if (controlValue > 0) {
81
- controlValue = controlValue - 1;
82
- const currencValue = this.mycurrencyPipe.transform(controlValue.toString());
83
- this.controller.setValue(this.mycurrencyPipe.transform(currencValue));
84
- this.emitedValue.emit(this.controller.value);
85
- }
86
- }
87
- onValueChange(data) {
88
- let currentValue = data.target.value;
89
- if (+currentValue.length > +this.maxLength) {
90
- currentValue = currentValue.substr(0, +this.maxLength).toString();
91
- }
92
- if (+currentValue < +this.minValue) {
93
- currentValue = this.minValue.toString();
94
- }
95
- if (+currentValue > +this.maxValue) {
96
- currentValue = this.maxValue.toString();
97
- }
98
- // currentValue = currentValue?.replaceAll(',', '')
99
- // currentValue = Number(currentValue)
100
- // this.field = JSON.stringify(currentValue);
101
- this.field = currentValue;
102
- this.controller.setValue(this.field);
103
- this.emitedValue.emit(this.field.trim());
104
- }
23
+ mycurrencyPipe;
105
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputCurrencyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InputCurrencyComponent, isStandalone: true, selector: "app-input-currency", inputs: { label: "label", displayValue: "displayValue", hasError: "hasError", error: "error", tooltip: "tooltip", floatLabel: "floatLabel", className: "className", showLabel: "showLabel", showPlus: "showPlus", showMinus: "showMinus", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", matSuffix: "matSuffix", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName", optional: "optional", showArrows: "showArrows", decimals: "decimals" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\"\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (paste)=\"false\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" appMycurrency>\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2 position-relative\"\r\n (click)=\"$event.stopPropagation()\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black cursor-pointer\" *ngIf=\"showMinus\" (click)=\"minus()\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black cursor-pointer\" *ngIf=\"showPlus\" (click)=\"plus()\"></span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(type !=='email' && !controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-error *ngIf=\"(type ==='email' && !controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && (showIfEmpty || field)\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [type]=\"'currency'\" [label]=\"label\" [insideTable]=\"insideTable\"\r\n [hasLabel]=\"hasLabel\" [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none!important;opacity:1.5}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i2.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InputCurrencyComponent, isStandalone: true, selector: "app-input-currency", inputs: { tooltip: "tooltip", floatLabel: "floatLabel", className: "className", iconPrefixName: "iconPrefixName", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName" }, providers: [
26
+ {
27
+ provide: NG_VALUE_ACCESSOR,
28
+ useExisting: forwardRef(() => InputCurrencyComponent),
29
+ multi: true,
30
+ },
31
+ ], usesInheritance: true, ngImport: i0, template: "@if(!isReadOnly){\r\n<ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{ i18n.translate(\"Optional\") }} </span>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{ iconPrefixName }}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n (paste)=\"(false)\"\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n appMycurrency\r\n />\r\n </label>\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>\r\n } @if(type === 'number'){\r\n <div\r\n matSuffix\r\n class=\"d-flex align-items-center gap-2 position-relative\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{ numberSuffixName }}</span>\r\n }\r\n </div>\r\n } @if(!control?.valid){\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate(\"validFieldError\") }}{{ label }}\r\n </mat-error>\r\n } @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n</ng-container>\r\n} @if(isReadOnly && (showIfEmpty || control)){\r\n<ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [type]=\"'currency'\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"label ? true : false\"\r\n [value]=\"control\"\r\n ></app-info-item>\r\n</ng-container>\r\n}\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{ tooltip }}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none!important;opacity:1.5}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i2.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: 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"] }] });
107
32
  }
108
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputCurrencyComponent, decorators: [{
109
34
  type: Component,
@@ -115,43 +40,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
115
40
  InfoItemComponent,
116
41
  SatPopoverModule,
117
42
  MatFormField,
43
+ MatInput,
118
44
  NgIf
119
- ], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\"\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (paste)=\"false\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" appMycurrency>\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2 position-relative\"\r\n (click)=\"$event.stopPropagation()\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black cursor-pointer\" *ngIf=\"showMinus\" (click)=\"minus()\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black cursor-pointer\" *ngIf=\"showPlus\" (click)=\"plus()\"></span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(type !=='email' && !controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-error *ngIf=\"(type ==='email' && !controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && (showIfEmpty || field)\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [type]=\"'currency'\" [label]=\"label\" [insideTable]=\"insideTable\"\r\n [hasLabel]=\"hasLabel\" [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none!important;opacity:1.5}\n"] }]
120
- }], propDecorators: { label: [{
121
- type: Input
122
- }], displayValue: [{
123
- type: Input
124
- }], hasError: [{
125
- type: Input
126
- }], error: [{
127
- type: Input
128
- }], tooltip: [{
45
+ ], providers: [
46
+ {
47
+ provide: NG_VALUE_ACCESSOR,
48
+ useExisting: forwardRef(() => InputCurrencyComponent),
49
+ multi: true,
50
+ },
51
+ ], template: "@if(!isReadOnly){\r\n<ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{ i18n.translate(\"Optional\") }} </span>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{ iconPrefixName }}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n (paste)=\"(false)\"\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n appMycurrency\r\n />\r\n </label>\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>\r\n } @if(type === 'number'){\r\n <div\r\n matSuffix\r\n class=\"d-flex align-items-center gap-2 position-relative\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{ numberSuffixName }}</span>\r\n }\r\n </div>\r\n } @if(!control?.valid){\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate(\"validFieldError\") }}{{ label }}\r\n </mat-error>\r\n } @if(showHint){\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n</ng-container>\r\n} @if(isReadOnly && (showIfEmpty || control)){\r\n<ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [type]=\"'currency'\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"label ? true : false\"\r\n [value]=\"control\"\r\n ></app-info-item>\r\n</ng-container>\r\n}\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{ tooltip }}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none!important;opacity:1.5}\n"] }]
52
+ }], propDecorators: { tooltip: [{
129
53
  type: Input
130
54
  }], floatLabel: [{
131
55
  type: Input
132
56
  }], className: [{
133
57
  type: Input
134
- }], showLabel: [{
135
- type: Input
136
- }], showPlus: [{
137
- type: Input
138
- }], showMinus: [{
139
- type: Input
140
- }], matPrefix: [{
141
- type: Input
142
58
  }], iconPrefixName: [{
143
59
  type: Input
144
- }], matSuffix: [{
145
- type: Input
146
60
  }], iconSuffixName: [{
147
61
  type: Input
148
62
  }], numberSuffixName: [{
149
63
  type: Input
150
- }], optional: [{
151
- type: Input
152
- }], showArrows: [{
153
- type: Input
154
- }], decimals: [{
155
- type: Input
156
64
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtY3VycmVuY3kvaW5wdXQtY3VycmVuY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtY3VycmVuY3kvaW5wdXQtY3VycmVuY3kuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RixPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBbUJ0RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQUM5QyxLQUFLLENBQVU7SUFDZixZQUFZLENBQU87SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLENB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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWNvbXBvbmVudC9iYXNlLWNvbXBvbmVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zsb2F0TGFiZWxUeXBlLCBNYXRFcnJvciwgTWF0Rm9ybUZpZWxkLCBNYXRIaW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7SW5mb0l0ZW1Db21wb25lbnR9IGZyb20gXCIuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NhdFBvcG92ZXJNb2R1bGV9IGZyb20gXCJAbmNzdGF0ZS9zYXQtcG9wb3ZlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtY3VycmVuY3knLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jdXJyZW5jeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtY3VycmVuY3kuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEVycm9yLFxyXG4gICAgTWF0SGludCxcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgU2F0UG9wb3Zlck1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE5nSWZcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEN1cnJlbmN5Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheVZhbHVlITogYW55O1xyXG4gIEBJbnB1dCgpIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQbHVzID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93TWludXMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1hdFByZWZpeCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWNvblByZWZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF0U3VmZml4ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpY29uU3VmZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJTdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbmFsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0Fycm93cyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxzID0gMDtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMucmVzZXRQcm9wYWdhdG9yLnN1YnNjcmliZSh0aGlzLCB0aGlzLnJlc2V0RGF0YSk7XHJcbiAgICB0aGlzLmZpZWxkID09IHVuZGVmaW5lZCA/ICh0aGlzLmZpZWxkID0gJycpIDogdGhpcy5maWVsZDtcclxuICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSh0aGlzLmZpZWxkKTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gJ2VtYWlsJykge1xyXG4gICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXFxcLlthLXpdezIsNH0kJyksXHJcbiAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0aGlzLm1pbkxlbmd0aCkge1xyXG4gICAgLy8gICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW5MZW5ndGgoK3RoaXMubWluTGVuZ3RoKV0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiAhdGhpcy5tYXNrKSB7XHJcbiAgICAgIC8vIHRoaXMuY29udHJvbGxlci5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heExlbmd0aCgrdGhpcy5tYXhMZW5ndGgpXSk7XHJcbiAgICAgIHRoaXMubWFzayA9ICcwJy5yZXBlYXQoK3RoaXMubWF4TGVuZ3RoKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1heFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heCgrdGhpcy5tYXhWYWx1ZSldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXM/LlsnZmllbGQnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlcz8uWydmaWVsZCddLmN1cnJlbnRWYWx1ZSA9PSAnJyB8fCBjaGFuZ2VzPy5bJ2ZpZWxkJ10uY3VycmVudFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZShjaGFuZ2VzWydmaWVsZCddLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGx1cygpIHtcclxuICAgIGxldCBjb250cm9sVmFsdWUgPSAodGhpcy5jb250cm9sbGVyLnZhbHVlKVxyXG4gICAgY29udHJvbFZhbHVlID0gdGhpcy5teWN1cnJlbmN5UGlwZS5wYXJzZShjb250cm9sVmFsdWUpXHJcbiAgICBjb250cm9sVmFsdWUgPSBOdW1iZXIoY29udHJvbFZhbHVlKVxyXG4gICAgY29udHJvbFZhbHVlID0gY29udHJvbFZhbHVlICsgMVxyXG4gICAgY29uc3QgY3VycmVuY1ZhbHVlID0gdGhpcy5teWN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oY29udHJvbFZhbHVlLnRvU3RyaW5nKCkpXHJcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUodGhpcy5teWN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oY3VycmVuY1ZhbHVlKSlcclxuICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmNvbnRyb2xsZXIudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbWludXMoKSB7XHJcbiAgICBsZXQgY29udHJvbFZhbHVlID0gKHRoaXMuY29udHJvbGxlci52YWx1ZSlcclxuICAgIGNvbnRyb2xWYWx1ZSA9IHRoaXMubXljdXJyZW5jeVBpcGUucGFyc2UoY29udHJvbFZhbHVlKVxyXG4gICAgY29udHJvbFZhbHVlID0gTnVtYmVyKGNvbnRyb2xWYWx1ZSlcclxuICAgIGlmIChjb250cm9sVmFsdWUgPiAwKSB7XHJcbiAgICAgIGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2xWYWx1ZSAtIDFcclxuICAgICAgY29uc3QgY3VycmVuY1ZhbHVlID0gdGhpcy5teWN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oY29udHJvbFZhbHVlLnRvU3RyaW5nKCkpXHJcbiAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSh0aGlzLm15Y3VycmVuY3lQaXBlLnRyYW5zZm9ybShjdXJyZW5jVmFsdWUpKVxyXG4gICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5jb250cm9sbGVyLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlID0gZGF0YS50YXJnZXQudmFsdWU7XHJcbiAgICBpZiAoK2N1cnJlbnRWYWx1ZS5sZW5ndGggPiArdGhpcy5tYXhMZW5ndGgpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnN1YnN0cigwLCArdGhpcy5tYXhMZW5ndGgpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoK2N1cnJlbnRWYWx1ZSA8ICt0aGlzLm1pblZhbHVlKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IHRoaXMubWluVmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICgrY3VycmVudFZhbHVlID4gK3RoaXMubWF4VmFsdWUpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gdGhpcy5tYXhWYWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgLy8gY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlPy5yZXBsYWNlQWxsKCcsJywgJycpXHJcbiAgICAvLyBjdXJyZW50VmFsdWUgPSBOdW1iZXIoY3VycmVudFZhbHVlKVxyXG4gICAgLy8gdGhpcy5maWVsZCA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLmZpZWxkID0gY3VycmVudFZhbHVlO1xyXG4gICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKHRoaXMuZmllbGQpXHJcbiAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZC50cmltKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlcIj5cclxuICA8IS0tIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwiIXJlcXVpcmVkXCIgW2hpZGVPcHRpb25dPVwiaGlkZU9wdGlvblwiIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsXCI+PC9hcHAtZm9ybS1sYWJlbD4gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCIgKm5nSWY9XCJoYXNMYWJlbFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57e2xhYmVsfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhICBoaWRlT3B0aW9uXCIgY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj57e2kxOG4udHJhbnNsYXRlKCdPcHRpb25hbCcpfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3tjbGFzc05hbWV9fVwiIFtuZ0NsYXNzXT1cInsnaW5wdXQtZGlzYWJsZWQnIDogZGlzYWJsZWQgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJpY29uUHJlZml4TmFtZVwiIG1hdFByZWZpeCBjbGFzcz1cInNmaSB7e2ljb25QcmVmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcblxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBvbmlucHV0PVwidmFsaWRpdHkudmFsaWQgfHwgKHZhbHVlPScnKTtcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbGxlclwiIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChwYXN0ZSk9XCJmYWxzZVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgYXBwTXljdXJyZW5jeT5cclxuICAgIDwvbGFiZWw+XHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJtYXRTdWZmaXhcIiBtYXRTdWZmaXggY2xhc3M9XCJzZmkge3tpY29uU3VmZml4TmFtZX19XCI+PC9zcGFuPlxyXG4gICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdudW1iZXInXCIgbWF0U3VmZml4IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW1cIiAqbmdJZj1cIm51bWJlclN1ZmZpeE5hbWVcIj57e251bWJlclN1ZmZpeE5hbWV9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLW1pbnVzIHAtMiBiYy1saWdodC1ncmF5IGZjLWJsYWNrIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJzaG93TWludXNcIiAoY2xpY2spPVwibWludXMoKVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXBsdXMgcC0yIGJjLWxpZ2h0LWdyYXkgZmMtYmxhY2sgY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cInNob3dQbHVzXCIgKGNsaWNrKT1cInBsdXMoKVwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cIih0eXBlICE9PSdlbWFpbCcgJiYgIWNvbnRyb2xsZXI/LnZhbGlkKVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEZpZWxkRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiKHR5cGUgPT09J2VtYWlsJyAmJiAhY29udHJvbGxlcj8udmFsaWQpXCI+XHJcbiAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkRW1haWxFcnJvcicpfX1cclxuICAgIDwvbWF0LWVycm9yPlxyXG4gICAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiIFtuZ0NsYXNzXT1cInsnZmMtb2FzaXMtbGlnaHQtaW1wJzp2YWx1ZX1cIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3toaW50fX08L3NwYW4+XHJcbiAgICA8L21hdC1oaW50PlxyXG5cclxuXHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8c3BhbiBjbGFzcz1cImZjLWNvcmFsXCIgc3R5bGU9XCJjb2xvcjojZjQ0MzM2XCIgKm5nSWY9XCIoIHNob3dFcnJvck1lc3NhZ2UgJiYgY29udHJvbGxlci52YWx1ZSlcIj5cclxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cclxuICA8L3NwYW4+XHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlYWRPbmx5ICYmIChzaG93SWZFbXB0eSB8fCBmaWVsZClcIiBjbGFzcz1cImluZm8tc2VjdGlvblwiPlxyXG4gIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgW3R5cGVdPVwiJ2N1cnJlbmN5J1wiIFtsYWJlbF09XCJsYWJlbFwiIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiXHJcbiAgICBbaGFzTGFiZWxdPVwiaGFzTGFiZWxcIiBbdmFsdWVdPVwiZmllbGRcIj48L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjwhLS0gc2VjdGlvbiB0b29sdGlwIC0tPlxyXG48c2F0LXBvcG92ZXIgI3BvcG92ZXIgW2hhc0JhY2tkcm9wXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVhZnVsdC10b29sdGlwXCI+XHJcbiAgICB7e3Rvb2x0aXB9fVxyXG4gIDwvZGl2PlxyXG48L3NhdC1wb3BvdmVyPlxyXG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtY3VycmVuY3kvaW5wdXQtY3VycmVuY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtY3VycmVuY3kvaW5wdXQtY3VycmVuY3kuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQTRCbkQsTUFBTSxPQUFPLHNCQUE2QixTQUFRLDZCQUFtQztJQUMxRSxPQUFPLENBQVU7SUFDakIsVUFBVSxHQUFRLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFDN0IsY0FBYyxDQUFVO0lBQ3hCLGNBQWMsQ0FBVTtJQUN4QixnQkFBZ0IsQ0FBVTtJQUM1QixjQUFjLENBQWdCO3VHQVAxQixzQkFBc0I7MkZBQXRCLHNCQUFzQiw2UEFSdEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDckNILHdqRkFpRkEsdUlENURJLG1CQUFtQix1eUJBQ25CLE9BQU8sb0ZBQ1AsUUFBUSxrRkFDUixPQUFPLDhFQUNQLGlCQUFpQiwrTEFDakIsZ0JBQWdCLDBnQkFDaEIsWUFBWSw0TEFDWixRQUFROzsyRkFXQyxzQkFBc0I7a0JBekJsQyxTQUFTOytCQUNFLG9CQUFvQixXQUdyQixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsSUFBSTtxQkFDTCxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RXJyb3IsIE1hdEZvcm1GaWVsZCwgTWF0SGludH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0luZm9JdGVtQ29tcG9uZW50fSBmcm9tIFwiLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tIFwiQG5jc3RhdGUvc2F0LXBvcG92ZXJcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQge015Y3VycmVuY3lQaXBlfSBmcm9tIFwiLi4vLi4vLi4vLi4vcGlwZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LWN1cnJlbmN5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY3VycmVuY3kuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWN1cnJlbmN5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRFcnJvcixcclxuICAgIE1hdEhpbnQsXHJcbiAgICBJbmZvSXRlbUNvbXBvbmVudCxcclxuICAgIFNhdFBvcG92ZXJNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE5nSWZcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDdXJyZW5jeUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEN1cnJlbmN5Q29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gIHtcclxuICBASW5wdXQoKSB0b29sdGlwITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IGFueSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnYm9yZGVyZWQtaW5wdXQnO1xyXG4gIEBJbnB1dCgpIGljb25QcmVmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGljb25TdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG51bWJlclN1ZmZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgcHVibGljIG15Y3VycmVuY3lQaXBlOiBNeWN1cnJlbmN5UGlwZVxyXG5cclxufVxyXG4iLCJAaWYoIWlzUmVhZE9ubHkpe1xyXG48bmctY29udGFpbmVyPlxyXG4gIDwhLS0gPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCIhcmVxdWlyZWRcIiBbaGlkZU9wdGlvbl09XCJoaWRlT3B0aW9uXCIgW3Nob3dMYWJlbF09XCJzaG93TGFiZWxcIj48L2FwcC1mb3JtLWxhYmVsPiAtLT5cclxuICBAaWYobGFiZWwpe1xyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgIEBpZighcmVxdWlyZWQpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj57eyBpMThuLnRyYW5zbGF0ZShcIk9wdGlvbmFsXCIpIH19IDwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3sgY2xhc3NOYW1lIH19XCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ2lucHV0LWRpc2FibGVkJzogaXNEaXNhYmxlZCB9XCJcclxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxyXG4gID5cclxuICAgIEBpZihpY29uUHJlZml4TmFtZSl7XHJcbiAgICA8c3BhbiBtYXRQcmVmaXggY2xhc3M9XCJzZmkge3sgaWNvblByZWZpeE5hbWUgfX1cIj48L3NwYW4+XHJcbiAgICB9XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICBvbmlucHV0PVwidmFsaWRpdHkudmFsaWQgfHwgKHZhbHVlPScnKTtcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAocGFzdGUpPVwiKGZhbHNlKVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIGFwcE15Y3VycmVuY3lcclxuICAgICAgLz5cclxuICAgIDwvbGFiZWw+XHJcbiAgICBAaWYobWF0U3VmZml4KXtcclxuICAgIDxzcGFuIG1hdFN1ZmZpeCBjbGFzcz1cInNmaSB7eyBpY29uU3VmZml4TmFtZSB9fVwiPjwvc3Bhbj5cclxuICAgIH0gQGlmKHR5cGUgPT09ICdudW1iZXInKXtcclxuICAgIDxkaXZcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgPlxyXG4gICAgICBAaWYobnVtYmVyU3VmZml4TmFtZSl7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCI+e3sgbnVtYmVyU3VmZml4TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBpZighY29udHJvbD8udmFsaWQpe1xyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAge3sgaTE4bi50cmFuc2xhdGUoXCJ2YWxpZEZpZWxkRXJyb3JcIikgfX17eyBsYWJlbCB9fVxyXG4gICAgPC9tYXQtZXJyb3I+XHJcbiAgICB9IEBpZihzaG93SGludCl7XHJcbiAgICA8bWF0LWhpbnQ+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZmMtb2FzaXMtbGlnaHQtaW1wJzogdmFsdWUgfVwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcbiAgICB9XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy1jb250YWluZXI+XHJcbn0gQGlmKGlzUmVhZE9ubHkgJiYgKHNob3dJZkVtcHR5IHx8IGNvbnRyb2wpKXtcclxuPG5nLWNvbnRhaW5lciBjbGFzcz1cImluZm8tc2VjdGlvblwiPlxyXG4gIDxhcHAtaW5mby1pdGVtXHJcbiAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICBbdHlwZV09XCInY3VycmVuY3knXCJcclxuICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICBbaW5zaWRlVGFibGVdPVwiaW5zaWRlVGFibGVcIlxyXG4gICAgW2hhc0xhYmVsXT1cImxhYmVsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgIFt2YWx1ZV09XCJjb250cm9sXCJcclxuICA+PC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxufVxyXG5cclxuPCEtLSBzZWN0aW9uIHRvb2x0aXAgLS0+XHJcbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWFmdWx0LXRvb2x0aXBcIj5cclxuICAgIHt7IHRvb2x0aXAgfX1cclxuICA8L2Rpdj5cclxuPC9zYXQtcG9wb3Zlcj5cclxuIl19
@@ -1,72 +1,32 @@
1
1
  /* eslint-disable @angular-eslint/use-lifecycle-interface */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @angular-eslint/component-selector */
4
- import { BaseComponent } from '../base-component/base-component.component';
5
- import { ReactiveFormsModule, Validators } from '@angular/forms';
6
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
5
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Input } from '@angular/core';
7
6
  import { MatFormField } from '@angular/material/form-field';
8
7
  import { NgClass, NgIf } from "@angular/common";
9
8
  import { InfoItemComponent } from "../info-item/info-item.component";
10
9
  import { SatPopoverModule } from "@ncstate/sat-popover";
10
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@ncstate/sat-popover";
13
13
  import * as i2 from "@angular/forms";
14
- export class InputEmailComponent extends BaseComponent {
15
- label;
16
- displayValue;
17
- hasError = false;
18
- error;
14
+ export class InputEmailComponent extends ControlValueAccessorDirective {
19
15
  tooltip;
20
16
  floatLabel = 'auto';
21
17
  className = 'bordered-input';
22
- showLabel = true;
23
18
  matPrefix;
24
19
  iconPrefixName;
25
- matSuffix;
26
20
  iconSuffixName;
27
21
  numberSuffixName;
28
- optional = false;
29
- showArrows = false;
30
- decimals = 0;
31
- ngOnInit() {
32
- // this.resetPropagator.subscribe(this, this.resetData);
33
- this.field == undefined ? (this.field = '') : this.field;
34
- this.controller.setValue(this.field);
35
- this.controller.setValidators([
36
- Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$'),
37
- ]);
38
- this.mask = '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$';
39
- }
40
- ngAfterViewChecked() {
41
- this.cdRef.detectChanges();
42
- }
43
- ngOnChanges(changes) {
44
- if (changes?.['field']) {
45
- if (changes?.['field'].currentValue == '' || changes?.['field'].currentValue == null) {
46
- this.controller.setValue('');
47
- }
48
- else {
49
- this.controller.setValue(changes['field'].currentValue);
50
- }
51
- }
52
- }
53
- onValueChange(data) {
54
- let currentValue = data.target.value;
55
- if (+currentValue.length > +this.maxLength) {
56
- currentValue = currentValue.substr(0, +this.maxLength).toString();
57
- }
58
- if (+currentValue < +this.minValue) {
59
- currentValue = this.minValue.toString();
60
- }
61
- if (+currentValue > +this.maxValue) {
62
- currentValue = this.maxValue.toString();
63
- }
64
- this.field = currentValue;
65
- this.controller.setValue(this.field);
66
- this.emitedValue.emit(this.field.trim());
67
- }
68
22
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InputEmailComponent, isStandalone: true, selector: "app-input-email", inputs: { label: "label", displayValue: "displayValue", hasError: "hasError", error: "error", tooltip: "tooltip", floatLabel: "floatLabel", className: "className", showLabel: "showLabel", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", matSuffix: "matSuffix", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName", optional: "optional", showArrows: "showArrows", decimals: "decimals" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\" [disabled]=\"disabled\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" \r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n\r\n\r\n <mat-error *ngIf=\"(!controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InputEmailComponent, isStandalone: true, selector: "app-input-email", inputs: { tooltip: "tooltip", floatLabel: "floatLabel", className: "className", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName" }, providers: [
24
+ {
25
+ provide: NG_VALUE_ACCESSOR,
26
+ useExisting: forwardRef(() => InputEmailComponent),
27
+ multi: true,
28
+ },
29
+ ], usesInheritance: true, ngImport: i0, template: "\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n \r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\" [disabled]=\"isDisabled\">\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" \r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n </div>\r\n }\r\n <!-- <mat-error *ngIf=\"(!control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n \r\n \r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n \r\n </ng-container>\r\n}\r\n @if(isReadOnly && control){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true : false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
70
30
  }
71
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputEmailComponent, decorators: [{
72
32
  type: Component,
@@ -77,38 +37,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
77
37
  SatPopoverModule,
78
38
  NgClass,
79
39
  ReactiveFormsModule
80
- ], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\" [disabled]=\"disabled\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" \r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n\r\n\r\n <mat-error *ngIf=\"(!controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"] }]
81
- }], propDecorators: { label: [{
82
- type: Input
83
- }], displayValue: [{
84
- type: Input
85
- }], hasError: [{
86
- type: Input
87
- }], error: [{
88
- type: Input
89
- }], tooltip: [{
40
+ ], providers: [
41
+ {
42
+ provide: NG_VALUE_ACCESSOR,
43
+ useExisting: forwardRef(() => InputEmailComponent),
44
+ multi: true,
45
+ },
46
+ ], template: "\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n \r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\" [disabled]=\"isDisabled\">\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" \r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n </div>\r\n }\r\n <!-- <mat-error *ngIf=\"(!control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n \r\n \r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n \r\n </ng-container>\r\n}\r\n @if(isReadOnly && control){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true : false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"] }]
47
+ }], propDecorators: { tooltip: [{
90
48
  type: Input
91
49
  }], floatLabel: [{
92
50
  type: Input
93
51
  }], className: [{
94
52
  type: Input
95
- }], showLabel: [{
96
- type: Input
97
53
  }], matPrefix: [{
98
54
  type: Input
99
55
  }], iconPrefixName: [{
100
56
  type: Input
101
- }], matSuffix: [{
102
- type: Input
103
57
  }], iconSuffixName: [{
104
58
  type: Input
105
59
  }], numberSuffixName: [{
106
60
  type: Input
107
- }], optional: [{
108
- type: Input
109
- }], showArrows: [{
110
- type: Input
111
- }], decimals: [{
112
- type: Input
113
61
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtZW1haWwvaW5wdXQtZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtZW1haWwvaW5wdXQtZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFpQixZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBaUJ0RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQUMzQyxLQUFLLENBQVU7SUFDZixZQUFZLENBQU87SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLENBQVU7SUFDZixPQUFPLENBQVU7SUFDakIsVUFBVSxHQUFRLE1BQU0sQ0FBQztJQUN6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QUMsc0JBQXNCLENBQUMsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxtQkFBbUI7cUJBQ3BCOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UtY29tcG9uZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0luZm9JdGVtQ29tcG9uZW50fSBmcm9tIFwiLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tIFwiQG5jc3RhdGUvc2F0LXBvcG92ZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LWVtYWlsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZW1haWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWVtYWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTmdJZixcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgU2F0UG9wb3Zlck1vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRFbWFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlWYWx1ZSE6IGFueTtcclxuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtYXRQcmVmaXghOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGljb25QcmVmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1hdFN1ZmZpeCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWNvblN1ZmZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbnVtYmVyU3VmZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBvcHRpb25hbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dBcnJvd3MgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWNpbWFscyA9IDA7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnJlc2V0UHJvcGFnYXRvci5zdWJzY3JpYmUodGhpcywgdGhpcy5yZXNldERhdGEpO1xyXG4gICAgdGhpcy5maWVsZCA9PSB1bmRlZmluZWQgPyAodGhpcy5maWVsZCA9ICcnKSA6IHRoaXMuZmllbGQ7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUodGhpcy5maWVsZCk7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFxcXC5bYS16XXsyLDR9JCcpLFxyXG4gICAgXSk7XHJcbiAgICB0aGlzLm1hc2sgPSAnXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFxcXC5bYS16XXsyLDR9JCdcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXM/LlsnZmllbGQnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlcz8uWydmaWVsZCddLmN1cnJlbnRWYWx1ZSA9PSAnJyB8fCBjaGFuZ2VzPy5bJ2ZpZWxkJ10uY3VycmVudFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZShjaGFuZ2VzWydmaWVsZCddLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShkYXRhOiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWUgPSBkYXRhLnRhcmdldC52YWx1ZTtcclxuICAgIGlmICgrY3VycmVudFZhbHVlLmxlbmd0aCA+ICt0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUuc3Vic3RyKDAsICt0aGlzLm1heExlbmd0aCkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICgrY3VycmVudFZhbHVlIDwgK3RoaXMubWluVmFsdWUpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gdGhpcy5taW5WYWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKCtjdXJyZW50VmFsdWUgPiArdGhpcy5tYXhWYWx1ZSkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm1heFZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkID0gY3VycmVudFZhbHVlO1xyXG4gICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKHRoaXMuZmllbGQpXHJcbiAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZC50cmltKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlcIj5cclxuICA8IS0tIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwiIXJlcXVpcmVkXCIgW2hpZGVPcHRpb25dPVwiaGlkZU9wdGlvblwiIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsXCI+PC9hcHAtZm9ybS1sYWJlbD4gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCIgKm5nSWY9XCJoYXNMYWJlbFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57e2xhYmVsfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhICBoaWRlT3B0aW9uXCIgY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj57e2kxOG4udHJhbnNsYXRlKCdPcHRpb25hbCcpfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3tjbGFzc05hbWV9fVwiIFtuZ0NsYXNzXT1cInsnaW5wdXQtZGlzYWJsZWQnIDogZGlzYWJsZWQgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJpY29uUHJlZml4TmFtZVwiIG1hdFByZWZpeCBjbGFzcz1cInNmaSB7e2ljb25QcmVmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICBvbmlucHV0PVwidmFsaWRpdHkudmFsaWQgfHwgKHZhbHVlPScnKTtcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbGxlclwiIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPlxyXG4gICAgPC9sYWJlbD5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cIm1hdFN1ZmZpeFwiIG1hdFN1ZmZpeCBjbGFzcz1cInNmaSB7e2ljb25TdWZmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ251bWJlcidcIiBtYXRTdWZmaXggY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCIgKm5nSWY9XCJudW1iZXJTdWZmaXhOYW1lXCI+e3tudW1iZXJTdWZmaXhOYW1lfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIighY29udHJvbGxlcj8udmFsaWQpXCI+XHJcbiAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkRW1haWxFcnJvcicpfX1cclxuICAgIDwvbWF0LWVycm9yPlxyXG4gICAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiIFtuZ0NsYXNzXT1cInsnZmMtb2FzaXMtbGlnaHQtaW1wJzp2YWx1ZX1cIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3toaW50fX08L3NwYW4+XHJcbiAgICA8L21hdC1oaW50PlxyXG5cclxuXHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8c3BhbiBjbGFzcz1cImZjLWNvcmFsXCIgc3R5bGU9XCJjb2xvcjojZjQ0MzM2XCIgKm5nSWY9XCIoIHNob3dFcnJvck1lc3NhZ2UgJiYgY29udHJvbGxlci52YWx1ZSlcIj5cclxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cclxuICA8L3NwYW4+XHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlYWRPbmx5ICYmIGZpZWxkXCIgY2xhc3M9XCJpbmZvLXNlY3Rpb25cIj5cclxuICA8YXBwLWluZm8taXRlbSBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiIFtsYWJlbF09XCJsYWJlbFwiIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiIFtoYXNMYWJlbF09XCJoYXNMYWJlbFwiXHJcbiAgICBbdmFsdWVdPVwiZmllbGRcIj48L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjwhLS0gc2VjdGlvbiB0b29sdGlwIC0tPlxyXG48c2F0LXBvcG92ZXIgI3BvcG92ZXIgW2hhc0JhY2tkcm9wXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVhZnVsdC10b29sdGlwXCI+XHJcbiAgICB7e3Rvb2x0aXB9fVxyXG4gIDwvZGl2PlxyXG48L3NhdC1wb3BvdmVyPlxyXG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtZW1haWwvaW5wdXQtZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtZW1haWwvaW5wdXQtZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0FBd0JwRixNQUFNLE9BQU8sbUJBQTBCLFNBQVEsNkJBQW1DO0lBQ3ZFLE9BQU8sQ0FBVTtJQUNqQixVQUFVLEdBQVEsTUFBTSxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QixTQUFTLENBQVc7SUFDcEIsY0FBYyxDQUFVO0lBQ3hCLGNBQWMsQ0FBVTtJQUN4QixnQkFBZ0IsQ0FBVTt1R0FQeEIsbUJBQW1COzJGQUFuQixtQkFBbUIsa1JBUm5CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQy9CSCxnakZBb0VBLDhIRGxESSxZQUFZLDRMQUVaLGlCQUFpQiwrTEFDakIsZ0JBQWdCLDBnQkFDaEIsT0FBTyxtRkFDUCxtQkFBbUI7OzJGQVVWLG1CQUFtQjtrQkF0Qi9CLFNBQVM7K0JBQ0UsaUJBQWlCLFdBR2xCLENBQUMsc0JBQXNCLENBQUMsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxtQkFBbUI7cUJBQ3BCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkBuY3N0YXRlL3NhdC1wb3BvdmVyXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtZW1haWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1lbWFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZW1haWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBOZ0lmLFxyXG4gICAgSW5mb0l0ZW1Db21wb25lbnQsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRFbWFpbENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEVtYWlsQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gIHtcclxuICBASW5wdXQoKSB0b29sdGlwITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IGFueSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnYm9yZGVyZWQtaW5wdXQnO1xyXG4gIEBJbnB1dCgpIG1hdFByZWZpeCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWNvblByZWZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaWNvblN1ZmZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbnVtYmVyU3VmZml4TmFtZSE6IHN0cmluZztcclxufVxyXG4iLCJcclxuQGlmKCFpc1JlYWRPbmx5KXtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cIiFyZXF1aXJlZFwiIFtoaWRlT3B0aW9uXT1cImhpZGVPcHRpb25cIiBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFwiPjwvYXBwLWZvcm0tbGFiZWw+IC0tPlxyXG4gIFxyXG4gICAgQGlmKGxhYmVsKXtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57e2xhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgQGlmKCFyZXF1aXJlZCl7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheVwiPnt7aTE4bi50cmFuc2xhdGUoJ09wdGlvbmFsJyl9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3tjbGFzc05hbWV9fVwiIFtuZ0NsYXNzXT1cInsnaW5wdXQtZGlzYWJsZWQnIDogaXNEaXNhYmxlZCB9XCJcclxuICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgIEBpZihpY29uUHJlZml4TmFtZSl7XHJcbiAgICAgICAgPHNwYW4gIG1hdFByZWZpeCBjbGFzcz1cInNmaSB7e2ljb25QcmVmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIFxyXG4gICAgICAgICAgb25pbnB1dD1cInZhbGlkaXR5LnZhbGlkIHx8ICh2YWx1ZT0nJyk7XCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZihtYXRTdWZmaXgpe1xyXG4gICAgICAgIDxzcGFuIG1hdFN1ZmZpeCBjbGFzcz1cInNmaSB7e2ljb25TdWZmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgICAgQGlmKHR5cGUgPT09ICdudW1iZXInKXtcclxuICAgICAgICA8ZGl2ICBtYXRTdWZmaXggY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICBAaWYobnVtYmVyU3VmZml4TmFtZSl7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCI+e3tudW1iZXJTdWZmaXhOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPCEtLSA8bWF0LWVycm9yICpuZ0lmPVwiKCFjb250cm9sPy52YWxpZClcIj5cclxuICAgICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEVtYWlsRXJyb3InKX19XHJcbiAgICAgIDwvbWF0LWVycm9yPiAtLT5cclxuICAgICAgQGlmKHNob3dIaW50KXtcclxuICAgICAgICA8bWF0LWhpbnQ+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtb255eFwiPnt7aGludH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICAgIH1cclxuICAgICBcclxuICBcclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tIDxzcGFuIGNsYXNzPVwiZmMtY29yYWxcIiBzdHlsZT1cImNvbG9yOiNmNDQzMzZcIiAqbmdJZj1cIiggc2hvd0Vycm9yTWVzc2FnZSAmJiBjb250cm9sLnZhbHVlKVwiPlxyXG4gICAgICB7e2Vycm9yTWVzc2FnZX19XHJcbiAgICA8L3NwYW4+IC0tPlxyXG4gIFxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcbiAgQGlmKGlzUmVhZE9ubHkgJiYgY29udHJvbCl7XHJcbiAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiaW5mby1zZWN0aW9uXCI+XHJcbiAgICAgIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgW2xhYmVsXT1cImxhYmVsXCIgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCIgW2hhc0xhYmVsXT1cImxhYmVsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICBbdmFsdWVdPVwiY29udHJvbFwiPjwvYXBwLWluZm8taXRlbT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuXHJcblxyXG5cclxuPCEtLSBzZWN0aW9uIHRvb2x0aXAgLS0+XHJcbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWFmdWx0LXRvb2x0aXBcIj5cclxuICAgIHt7dG9vbHRpcH19XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==