@eui/components 15.5.4 → 15.5.5-snapshot-1701389710443

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-legacy-ux-form-control.mjs","sources":["../../legacy/ux-form-control/remove-id.directive.ts","../../legacy/ux-form-control/string-to-number.pipe.ts","../../legacy/ux-form-control/ux-form-control.component.ts","../../legacy/ux-form-control/ux-form-control.component.html","../../legacy/ux-form-control/eui-components-legacy-ux-form-control.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * @deprecated This class 'RemoveIdDirective' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'ux-form-control[id]',\n})\nexport class RemoveIdDirective {\n constructor(private el: ElementRef) {\n el.nativeElement.removeAttribute('id');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getLocaleNumberFormat, NumberFormatStyle } from '@angular/common';\n\n/**\n * @deprecated This class 'StringToNumberPipe' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Pipe({\n name: 'stringToNumber',\n pure: false,\n})\nexport class StringToNumberPipe implements PipeTransform {\n /**\n * This pipe transforms a given formatted number value of type String to number. The correct conversion is based on\n * current numbers format which is extracted from the given Locale.\n *\n * @param value - a formatted string value e.g. '100,000,999.101'\n * @param locale - the LOCALE_ID of the formatted number in value. e.g. 'en-US'\n */\n transform(value: string | number, locale: string): number {\n // check for undefined\n if (!value) {\n return 0;\n }\n // check if type is already number\n if (typeof value === 'number') {\n return value;\n }\n\n // retrieve separators\n const { thousand, decimal } = this.getSeparators(locale);\n // replace those separators and return typeof Number\n return Number(\n value\n .split(thousand)\n .join('')\n .replace(decimal, '.')\n .replace(/\\.(?=.*\\.)/g, '')\n );\n }\n\n public getSeparators(locale: string): { thousand: string; decimal: string } {\n // get formatNumber based on locale\n const numberFormat = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n // based on given format extract decimal and thousand separators\n // TODO: this could be easily done with Array Destructuring (ES6 feat) but it's disabled in current tsconfig :/\n const format: string = numberFormat.split('#').join('').split('0').join('');\n return { thousand: format[0], decimal: format[1] };\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n LOCALE_ID,\n NgModule,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { UxValidationErrorI18nMessage, UxFormValidationError } from '@eui/base';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { UxFormGroupComponent } from '@eui/components/legacy/ux-form-group';\nimport { UxControlFeedbackComponentModule } from '@eui/components/legacy/ux-control-feedback';\nimport { RemoveIdDirective } from './remove-id.directive';\nimport { StringToNumberPipe } from './string-to-number.pipe';\nimport { CleaveOptions } from 'cleave.js/options';\nimport { UxCleaveModule, UxMaxlengthModule, UxAutoResizeModule } from '@eui/components/legacy/common/ux-directives';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n/**\n * @deprecated This class 'UxFormControlComponent' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Component({\n selector: 'ux-form-control',\n templateUrl: './ux-form-control.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UxFormControlComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => UxFormControlComponent),\n multi: true,\n },\n ],\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UxFormControlComponent implements OnDestroy, ControlValueAccessor, Validator, AfterContentInit, OnChanges, AfterViewInit {\n @Input() id: string;\n @Input() feedbackTypeClass: string;\n @Input()\n get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n set isReadOnly(value: BooleanInput) {\n this._isReadOnly = coerceBooleanProperty(value);\n }\n @Input()\n get isRequired(): boolean {\n return this._isRequired;\n }\n set isRequired(value: BooleanInput) {\n this._isRequired = coerceBooleanProperty(value);\n }\n @Input() styleClass: string;\n @Input() validationErrorMessage: string | UxValidationErrorI18nMessage;\n @Input() infoLabel: string;\n @Input() placeholderLabel: string;\n @Input()\n get autofocus(): boolean {\n return this._autofocus;\n }\n set autofocus(value: BooleanInput) {\n this._autofocus = coerceBooleanProperty(value);\n }\n @Input() formControlName: string;\n\n @Input()\n get isInputText(): boolean {\n return this._isInputText;\n }\n\n set isInputText(value: BooleanInput) {\n this._isInputText = coerceBooleanProperty(value);\n }\n @Input()\n get isTextarea(): boolean {\n return this._isTextarea;\n }\n\n set isTextarea(value: BooleanInput) {\n this._isTextarea = coerceBooleanProperty(value);\n }\n @Input() rows = 2;\n @Input() minRows: number;\n @Input()\n get isTextareaAutoresize(): boolean {\n return this._isTextareaAutoresize;\n }\n set isTextareaAutoresize(value: BooleanInput) {\n this._isTextareaAutoresize = coerceBooleanProperty(value);\n }\n // @Input() isDatepicker: boolean = false;\n\n // @Input() isDatetimepicker: boolean = false;\n // @Input() datepickerDateformat: string = 'dd/mm/yy';\n // @Input() datepickerYearRange: string = '1900:2050';\n // @Input() datepickerLocale;\n // @Input() dateOutputFormat;\n // @Input() minDateValue: Date = null;\n\n // @Input() maxDateValue: Date = null;\n @Input()\n get isSelect(): boolean {\n return this._isSelect;\n }\n\n set isSelect(value: BooleanInput) {\n this._isSelect = coerceBooleanProperty(value);\n }\n @Input() selectOptions: any[];\n @Input() selectKeyName = 'id';\n @Input() selectValueName = 'value';\n @Input()\n get isSelectStringValue(): boolean {\n return this._isSelectStringValue;\n }\n set isSelectStringValue(value: BooleanInput) {\n this._isSelectStringValue = coerceBooleanProperty(value);\n }\n @Input()\n get isCheckbox(): boolean {\n return this._isCheckbox;\n }\n\n set isCheckbox(value: BooleanInput) {\n this._isCheckbox = coerceBooleanProperty(value);\n }\n @Input() checkboxLabel: string;\n @Input()\n get isRadio(): boolean {\n return this._isRadio;\n }\n\n set isRadio(value: BooleanInput) {\n this._isRadio = coerceBooleanProperty(value);\n }\n @Input()\n get isRadioDeselect(): boolean {\n return this._isRadioDeselect;\n }\n set isRadioDeselect(value: BooleanInput) {\n this._isRadioDeselect = coerceBooleanProperty(value);\n }\n @Input() radioLabel: string;\n @Input() formControlValue: any;\n @Input()\n get isNumber(): boolean {\n return this._isNumber;\n }\n\n set isNumber(value: BooleanInput) {\n this._isNumber = coerceBooleanProperty(value);\n }\n /**\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * minIntegerDigits: The minimum number of integer digits before the decimal point. Default is 1.\n * minFractionDigits: The minimum number of digits after the decimal point. Default is 0.\n * maxFractionDigits: The maximum number of digits after the decimal point. Default is 3.\n */\n @Input() digitsInfo = '1.0-3';\n @Input()\n get isNumberFormatPlaceholder(): boolean {\n return this._isNumberFormatPlaceholder;\n }\n set isNumberFormatPlaceholder(value: BooleanInput) {\n this._isNumberFormatPlaceholder = coerceBooleanProperty(value);\n }\n @Input() cleaveOptions: CleaveOptions = {\n numeral: true,\n delimiter: '',\n numeralDecimalMark: '',\n numeralDecimalScale: 0,\n };\n @Input() maxlength: number;\n\n @Input() maxLengthValidationErrorMessage: string;\n @Input()\n get isDisabled(): boolean {\n return this._isDisabled;\n }\n\n set isDisabled(value: BooleanInput) {\n this._isDisabled = coerceBooleanProperty(value);\n }\n @Input() inputStyleClass: string;\n\n @Input() tabindex = '0';\n @Input() groupId = '';\n\n @Output() modelChange = new EventEmitter<any>();\n\n @Output() touched = new EventEmitter<any>();\n @Output() focus = new EventEmitter<any>();\n @Input()\n get selectNoBlankLine(): boolean {\n return this._selectNoBlankLine;\n }\n\n set selectNoBlankLine(value: BooleanInput) {\n this._selectNoBlankLine = coerceBooleanProperty(value);\n }\n @Input()\n get isShowMaxlengthCounter(): boolean {\n return this._isShowMaxlengthCounter;\n }\n set isShowMaxlengthCounter(value: BooleanInput) {\n this._isShowMaxlengthCounter = coerceBooleanProperty(value);\n }\n @Input() e2eAttr = 'ux-form-control';\n\n @Input() emptyValueTextOnReadOnly;\n @ViewChild('radioElement') radioElement: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputRef') inputRef: ElementRef<HTMLInputElement>;\n @ViewChild('formControlRef', { read: ElementRef }) formControlRef: ElementRef;\n inputValue: any;\n\n data: any;\n generatedId: string;\n checked: boolean;\n isMaxLengthValid = true;\n feedbackLabel: string;\n uxFormGroupComponent: UxFormGroupComponent;\n isSelectHasOptions = false;\n ariaInvalid = false;\n hasFormGroupParent = false;\n\n // Stores the isValid value for the parent form in case the user edits the field for the first time,\n\n // i.e.: not \"touched\" yet, but still invalid.\n // In such cases, the parent formGroup should become invalid when the user blurs the field.\n intendedFormGroupIsValid = true;\n validationErrorType: string;\n // Stores the last value for fields that are auto-corrected, i.e.: numeric fields or fields limited to a maximum length.\n\n // This is to fix a bug for when a user types an invalid value, and then switching off read-only mode.\n // In such cases, the last characters would remain in the (read-only) value.\n // To prevent this, we will force the value to the last known correct value.\n protected lastAutoCorrectedValue;\n private _formControl: FormControl;\n\n private languageChangeSubscription: Subscription;\n private _isReadOnly = false;\n private _isRequired = false;\n private _autofocus = false;\n private _isInputText = false;\n private _isTextarea = false;\n private _isTextareaAutoresize = false; // TODO : enable activation of uxAutoresize directive\n private _isSelect = false;\n private _isSelectStringValue = false;\n private _isCheckbox = false;\n private _isRadio = false;\n private _isRadioDeselect = false;\n private _isNumber = false;\n private _isNumberFormatPlaceholder = true;\n private _isDisabled = false;\n private _selectNoBlankLine = false;\n private _isShowMaxlengthCounter = true;\n\n constructor(\n @Optional() @Host() @Inject(forwardRef(() => UxFormGroupComponent)) uxFormGroupComponent: UxFormGroupComponent,\n @Inject(LOCALE_ID) public locale: string,\n protected elementRef: ElementRef\n ) {\n this.uxFormGroupComponent = uxFormGroupComponent;\n this.hasFormGroupParent = this.uxFormGroupComponent ? true : false;\n\n // this.languageChangeSubscription = translateService.onLangChange.subscribe((evt: LangChangeEvent) => {\n // if (this.calendarControl && !this.datepickerLocale) {\n // const locale = calendarLocales[evt.lang] || calendarLocales['en'];\n // this.calendarControl.locale = locale;\n // }\n // });\n }\n\n // @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n // if (event.keyCode === 27 && this.isDatepicker) { // ESC\n // this.calendarControl.overlayVisible = false;\n // }\n // }\n\n ngAfterViewInit() {\n if (this.formControlRef && this.autofocus) {\n this.formControlRef.nativeElement.focus();\n }\n }\n\n ngAfterContentInit() {\n if (!this.id) {\n this.generatedId = 'ux-form-control-' + (Math.floor(Math.random() * 1000000) + 1).toString();\n } else {\n this.generatedId = this.id;\n }\n if (this.uxFormGroupComponent && !this.uxFormGroupComponent.id) {\n this.uxFormGroupComponent.id = this.generatedId;\n if (!this.uxFormGroupComponent.isRequired) {\n this.uxFormGroupComponent.isRequired = this.isRequired;\n } else if (!this.isRequired) {\n this.isRequired = true;\n }\n }\n if (!this.isInputText && !this.isTextarea && !this.isSelect && !this.isCheckbox && !this.isRadio && !this.isNumber) {\n this.isInputText = true;\n }\n\n if (this._formControl) {\n this._formControl.statusChanges.subscribe((v) => {\n if (this.uxFormGroupComponent) {\n this.intendedFormGroupIsValid = true;\n this.uxFormGroupComponent.isValid = v !== 'INVALID';\n if (!this._formControl.touched) {\n this.intendedFormGroupIsValid = this.uxFormGroupComponent.isValid;\n this.uxFormGroupComponent.isValid = true;\n }\n if (!this.uxFormGroupComponent.validationErrorMessage && this.validationErrorMessage) {\n this.uxFormGroupComponent.validationErrorMessage = this.validationErrorMessage;\n } else if (this._formControl.errors && this._formControl.errors.uxValidationError) {\n this.setUxValidationErrorsToParentFormGroup();\n }\n } else if (this._formControl.errors && this._formControl.errors.uxValidationError) {\n this.setUxValidationErrorsToFormControl();\n }\n });\n }\n\n this.lastAutoCorrectedValue = this.inputValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes['cleaveOptions'] && this.isNumber) {\n this.cleaveOptions = { ...changes['cleaveOptions'].currentValue, numeral: true };\n }\n\n // Bug fix for when a user types an invalid value, and then switching off read-only mode.\n // In such cases, the last characters would remain in the (read-only) value.\n // To prevent this, we will force the value to the last known correct value.\n if (changes && changes['isReadOnly'] && this.isNumber) {\n if (this.isReadOnly) {\n this.inputValue = this.lastAutoCorrectedValue;\n }\n }\n\n if (changes && changes['isReadOnly'] && this.isRadio) {\n if (!this.isReadOnly && this._formControl) {\n this.writeValue(this._formControl.value);\n }\n }\n\n if (changes && changes['isReadOnly'] && this.isSelect) {\n if (this.isReadOnly && this._formControl) {\n this.writeValue(this._formControl.value);\n }\n }\n\n this.updateSelectHasOptions();\n\n this.updateAriaInvalid();\n }\n\n ngOnDestroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription.unsubscribe();\n }\n }\n\n setUxValidationErrorsToFormControl() {\n const errors = this._formControl.errors as UxFormValidationError;\n if (errors.uxValidationError.message) {\n this.validationErrorMessage = errors.uxValidationError.message;\n }\n if (errors.uxValidationError.type) {\n this.validationErrorType = errors.uxValidationError.type;\n }\n }\n\n setUxValidationErrorsToParentFormGroup() {\n const errors = this._formControl.errors as UxFormValidationError;\n if (errors.uxValidationError.message) {\n this.uxFormGroupComponent.validationErrorMessage = errors.uxValidationError.message;\n }\n if (errors.uxValidationError.type) {\n this.uxFormGroupComponent.validationErrorFeedbackClass = errors.uxValidationError.type;\n }\n }\n\n get isFieldValid(): boolean {\n if (this._formControl) {\n if (this._formControl.touched && this._formControl.invalid) {\n return false;\n }\n }\n return true;\n }\n\n get isRadioOptionChecked(): boolean {\n if (this._formControl && this.isRadio) {\n return this._formControl.value === this.formControlValue;\n }\n return null;\n }\n\n OnMaxLengthValidityChange(state: boolean) {\n this.isMaxLengthValid = state;\n }\n\n public writeValue(value: any) {\n if (this.isNumber) {\n this.inputValue = value;\n } else {\n if (this.isRadio) {\n if (this.isReadOnly) {\n this.inputValue = value;\n } else {\n this.checked = value === this.formControlValue;\n if (this.radioElement) {\n (<any>this.radioElement).nativeElement.checked = this.checked;\n }\n }\n } else {\n this.inputValue = value;\n }\n }\n\n // Save the last correct input value to show when a user switch off to read-only mode.\n if (this.inputValue) {\n this.lastAutoCorrectedValue = this.inputValue;\n }\n }\n\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n public registerOnTouched(fn: any) {\n if (\n this._formControl &&\n !this._formControl.touched &&\n this.uxFormGroupComponent &&\n typeof this.intendedFormGroupIsValid !== 'undefined'\n ) {\n this.uxFormGroupComponent.isValid = this.intendedFormGroupIsValid;\n }\n\n this.propagateTouched = fn;\n }\n\n public validate(c: FormControl) {\n this._formControl = c;\n setTimeout(() => {\n this.updateAriaInvalid();\n }, 0);\n return c.invalid\n ? {\n fieldError: {\n errorMessage: this.validationErrorMessage || 'error',\n },\n }\n : null;\n }\n\n public onChange(event) {\n let newValue: any;\n\n if (event.target) {\n // Ignore, if TAB, Shift + Tab key combinations are used\n if (event.keyCode === 9 || event.keyCode === 16) {\n return;\n }\n\n newValue = event.target.value;\n\n if (this.isCheckbox) {\n newValue = event.target.checked;\n }\n\n if (this.isNumber) {\n newValue = this.inputValue;\n }\n if (this.isSelect) {\n if (event.target.value === 'null' || event.target.value === '') {\n newValue = null;\n } else {\n const value: string = event.target.value;\n if (isNaN(Number(value)) || this.isSelectStringValue) {\n newValue = value;\n } else {\n newValue = Number(value);\n }\n }\n }\n if (this.isRadio) {\n if (!this.isRadioDeselect) {\n newValue = this.formControlValue;\n } else {\n if (this.isRadioOptionChecked && event.target.value === this.formControlValue) {\n newValue = null;\n this._formControl.setValue(null, { emitEvent: true });\n } else {\n newValue = this.formControlValue;\n }\n }\n }\n\n if (this.isNumber || this.maxlength) {\n this.lastAutoCorrectedValue = newValue;\n }\n } else {\n newValue = event;\n }\n\n this.propagateChange(newValue);\n this.modelChange.emit(newValue);\n }\n\n public onTouched(event) {\n this.touched.emit(event);\n this.propagateTouched();\n this.updateFormGroupValidationStatus();\n }\n\n public onFocus(event) {\n this.focus.emit(event);\n }\n\n public get selectValue(): string {\n let valueItem = null;\n if (this.selectOptions) {\n valueItem = this.selectOptions.find((item) => item[this.selectKeyName] === this.inputValue);\n }\n if (valueItem) {\n return valueItem[this.selectValueName];\n } else {\n return null;\n }\n }\n\n protected updateAriaInvalid() {\n this.ariaInvalid = !this.isMaxLengthValid || (this._formControl && this._formControl.touched && this._formControl.invalid);\n }\n\n private updateFormGroupValidationStatus() {\n if (this._formControl && this.uxFormGroupComponent && this._formControl.dirty) {\n this.uxFormGroupComponent.isValid = !this._formControl.invalid;\n }\n }\n\n private updateSelectHasOptions() {\n if (this.isSelect && this.selectOptions) {\n this.selectOptions.forEach((item) => {\n if (item.options) {\n this.isSelectHasOptions = true;\n return;\n }\n });\n }\n }\n\n private propagateChange = (_: any) => {};\n\n private propagateTouched = () => {};\n}\n\n/**\n * @deprecated This class 'UxFormControlComponentModule' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n UxControlFeedbackComponentModule,\n FormsModule,\n UxMaxlengthModule,\n UxAutoResizeModule,\n UxCleaveModule,\n TranslateModule,\n ],\n providers: [DecimalPipe, Clipboard, StringToNumberPipe],\n exports: [UxFormControlComponent, RemoveIdDirective, StringToNumberPipe],\n declarations: [UxFormControlComponent, RemoveIdDirective, StringToNumberPipe],\n})\nexport class UxFormControlComponentModule {}\n","<ng-container *ngIf=\"isInputText && !isReadOnly\">\n <span attr.data-e2e=\"{{ e2eAttr }}-tf-rw\">\n <input\n #inputRef\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"text\"\n [(ngModel)]=\"inputValue\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\" />\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isTextarea && !isReadOnly\">\n <span attr.data-e2e=\"{{ e2eAttr }}-ta-rw\">\n <textarea\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n [(ngModel)]=\"inputValue\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [attr.rows]=\"rows\"\n [minRows]=\"minRows\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n [uxAutoResize]=\"isTextareaAutoresize\">\n </textarea>\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isSelect && !isReadOnly\">\n <select\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-form-control ux-form-control__custom-select {{ inputStyleClass }}\"\n [(ngModel)]=\"inputValue\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-rw\">\n <ng-container *ngIf=\"selectOptions\">\n <option *ngIf=\"!selectNoBlankLine\" [value]=\"'' || null\" class=\"ux-u-color-grey\">{{ placeholderLabel }}</option>\n <ng-template [ngIf]=\"isSelectHasOptions\">\n <ng-template ngFor let-item [ngForOf]=\"selectOptions\">\n <optgroup *ngIf=\"item.options\" label=\"{{ item.value }}\" class=\"ux-u-font-regular\">\n <option\n *ngFor=\"let opt of item.options\"\n [value]=\"opt[selectKeyName]\"\n [selected]=\"inputValue === opt[selectKeyName]\">\n {{ opt[selectValueName] }}\n </option>\n </optgroup>\n <option *ngIf=\"!item.options\" [value]=\"item[selectKeyName]\" [selected]=\"inputValue === item[selectKeyName]\">\n {{ item[selectValueName] }}\n </option>\n </ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"!isSelectHasOptions\">\n <option *ngFor=\"let opt of selectOptions\" [value]=\"opt[selectKeyName]\" [selected]=\"inputValue === opt[selectKeyName]\">\n {{ opt[selectValueName] }}\n </option>\n </ng-template>\n </ng-container>\n <ng-content *ngIf=\"!selectOptions\"></ng-content>\n </select>\n</ng-container>\n\n<ng-container *ngIf=\"isReadOnly && isSelect\">\n <!-- <input type=\"text\" role=\"combobox\" [attr.aria-readonly]=\"true\" readonly=\"readonly\" id=\"{{generatedId}}\" class=\"ux-form-control__read-only {{inputStyleClass}}\" [value]=\"selectValue\" [tabindex]=\"tabindex\" /> -->\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-ro\">\n {{ selectValue === '' || !selectValue ? emptyValueTextOnReadOnly : selectValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isCheckbox && !isReadOnly\">\n <input\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"checkbox\"\n class=\"ux-input__checkbox {{ styleClass }}\"\n [(ngModel)]=\"inputValue\"\n (click)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-cb-rw\" />\n <label for=\"{{ generatedId }}\" *ngIf=\"checkboxLabel\">{{ checkboxLabel }}</label>\n <label for=\"{{ generatedId }}\" role=\"presentation\" *ngIf=\"!checkboxLabel\">&nbsp;</label>\n</ng-container>\n\n<ng-container *ngIf=\"isCheckbox && isReadOnly\">\n <input\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-input__checkbox {{ styleClass }}\"\n type=\"checkbox\"\n [checked]=\"inputValue\"\n onclick=\"return false;\"\n [tabindex]=\"tabindex\"\n readonly=\"readonly\"\n aria-readonly=\"true\"\n attr.data-e2e=\"{{ e2eAttr }}-cb-ro\" />\n <label for=\"{{ generatedId }}\" *ngIf=\"checkboxLabel\">{{ checkboxLabel }}</label>\n <label for=\"{{ generatedId }}\" role=\"presentation\" *ngIf=\"!checkboxLabel\">&nbsp;</label>\n</ng-container>\n\n<ng-container *ngIf=\"isRadio && !isReadOnly\">\n <input\n #radioElement\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-input__radio {{ styleClass }}\"\n type=\"radio\"\n [checked]=\"checked\"\n [name]=\"formControlName + groupId\"\n [value]=\"formControlValue\"\n (click)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-ra-rw\" />\n <label for=\"{{ generatedId }}\" class=\"radio-label\">{{ radioLabel || '&nbsp;' }}</label>\n</ng-container>\n\n<ng-container *ngIf=\"isRadio && isReadOnly && isRadioOptionChecked\">\n <div\n *ngIf=\"radioLabel\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ radioLabel }}\n </div>\n <div\n *ngIf=\"!radioLabel\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ inputValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isReadOnly && !isCheckbox && !isNumber && !isSelect && !isRadio && !isTextarea\">\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ inputValue === '' || !inputValue ? emptyValueTextOnReadOnly : inputValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isNumber\">\n <div\n *ngIf=\"isReadOnly\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-ro\">\n {{ inputRef.value === '' || !inputRef.value ? emptyValueTextOnReadOnly : inputRef.value }}\n </div>\n <span [hidden]=\"isReadOnly\" attr.data-e2e=\"{{ e2eAttr }}-num-rw\">\n <input\n #inputRef\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"text\"\n [uxCleave]=\"cleaveOptions\"\n [readOnly]=\"isReadOnly\"\n [(ngModel)]=\"inputValue\"\n [isModelNumber]=\"true\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [disabled]=\"isDisabled\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\" />\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isTextarea && isReadOnly\">\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n <pre>{{ inputValue === '' || !inputValue ? emptyValueTextOnReadOnly : inputValue }}</pre>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!isFieldValid && !hasFormGroupParent\">\n <ux-control-feedback\n *ngIf=\"validationErrorMessage\"\n typeClass=\"{{ validationErrorType ? validationErrorType : 'danger' }}\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n {{\n validationErrorMessage && $any(validationErrorMessage).id\n ? ($any(validationErrorMessage).id | translate : $any(validationErrorMessage).params)\n : validationErrorMessage\n }}\n </ux-control-feedback>\n</ng-container>\n\n<ng-container *ngIf=\"!isMaxLengthValid\">\n <ux-control-feedback *ngIf=\"maxLengthValidationErrorMessage\" typeClass=\"danger\" attr.data-e2e=\"{{ e2eAttr }}\">\n {{ maxLengthValidationErrorMessage }}\n </ux-control-feedback>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA;;;AAGG;MAKU,iBAAiB,CAAA;AAC1B,IAAA,WAAA,CAAoB,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAC9B,QAAA,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KAC1C;;iIAHQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,qBAAqB;iBAClC,CAAA;;;ACND;;;AAGG;MAKU,kBAAkB,CAAA;AAC3B;;;;;;AAMG;IACH,SAAS,CAAC,KAAsB,EAAE,MAAc,EAAA;;QAE5C,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAGD,QAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;QAEzD,OAAO,MAAM,CACT,KAAK;aACA,KAAK,CAAC,QAAQ,CAAC;aACf,IAAI,CAAC,EAAE,CAAC;AACR,aAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACrB,aAAA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAClC,CAAC;KACL;AAEM,IAAA,aAAa,CAAC,MAAc,EAAA;;QAE/B,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;;;QAG9E,MAAM,MAAM,GAAW,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD;;kIArCQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gIAAlB,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,IAAI,EAAE,KAAK;iBACd,CAAA;;;ACwBD;;;AAGG;MAmBU,sBAAsB,CAAA;AA+N/B,IAAA,WAAA,CACwE,oBAA0C,EACpF,MAAc,EAC9B,UAAsB,EAAA;AADN,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AApL3B,QAAA,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;AA4BT,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AACrB,QAAA,IAAe,CAAA,eAAA,GAAG,OAAO,CAAC;AA0CnC;;;;;AAKG;AACM,QAAA,IAAU,CAAA,UAAA,GAAG,OAAO,CAAC;QAQrB,IAAA,CAAA,aAAa,GAAkB;AACpC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,mBAAmB,EAAE,CAAC;SACzB,CAAC;AAcO,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAEZ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;AAEtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAO,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAO,CAAC;AAgBjC,QAAA,IAAO,CAAA,OAAA,GAAG,iBAAiB,CAAC;AAYrC,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAGxB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;;;;AAM3B,QAAA,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;AAWxB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AACrB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;AAClC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;QA4S/B,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAM,GAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAK,GAAG,CAAC;AAvShC,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,KAAK,CAAC;;;;;;;KAQtE;AA1OD,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;AACD,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;AAKD,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAClD;AAGD,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,KAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpD;AACD,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;AAGD,IAAA,IACI,oBAAoB,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IACD,IAAI,oBAAoB,CAAC,KAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC7D;;;;;;;;;AAWD,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;AAID,IAAA,IACI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAI,mBAAmB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC5D;AACD,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;AAED,IAAA,IACI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,IAAI,OAAO,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAChD;AACD,IAAA,IACI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IACD,IAAI,eAAe,CAAC,KAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACxD;AAGD,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;AAQD,IAAA,IACI,yBAAyB,GAAA;QACzB,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;IACD,IAAI,yBAAyB,CAAC,KAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,0BAA0B,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAClE;AAUD,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;AAUD,IAAA,IACI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAED,IAAI,iBAAiB,CAAC,KAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC1D;AACD,IAAA,IACI,sBAAsB,GAAA;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;IACD,IAAI,sBAAsB,CAAC,KAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/D;;;;;;IA0ED,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAA;KACJ;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AAChG,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9B,SAAA;QACD,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE;YAC5D,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE;gBACvC,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1D,aAAA;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChH,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,SAAA;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;gBAC5C,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,oBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,CAAC;AACpD,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;wBAC5B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAClE,wBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5C,qBAAA;oBACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,EAAE;wBAClF,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAClF,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE;wBAC/E,IAAI,CAAC,sCAAsC,EAAE,CAAC;AACjD,qBAAA;AACJ,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE;oBAC/E,IAAI,CAAC,kCAAkC,EAAE,CAAC;AAC7C,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC;KACjD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACtD,YAAA,IAAI,CAAC,aAAa,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,CAAE,EAAA,EAAA,OAAO,EAAE,IAAI,GAAE,CAAC;AACpF,SAAA;;;;QAKD,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC;AACjD,aAAA;AACJ,SAAA;QAED,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;gBACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAA;AACJ,SAAA;QAED,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;gBACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACjC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AACjD,SAAA;KACJ;IAED,kCAAkC,GAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAA+B,CAAC;AACjE,QAAA,IAAI,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAClE,SAAA;AACD,QAAA,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;YAC/B,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5D,SAAA;KACJ;IAED,sCAAsC,GAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAA+B,CAAC;AACjE,QAAA,IAAI,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACvF,SAAA;AACD,QAAA,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;YAC/B,IAAI,CAAC,oBAAoB,CAAC,4BAA4B,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1F,SAAA;KACJ;AAED,IAAA,IAAI,YAAY,GAAA;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACxD,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAI,oBAAoB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC;AAC5D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,yBAAyB,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC;oBAC/C,IAAI,IAAI,CAAC,YAAY,EAAE;wBACb,IAAI,CAAC,YAAa,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjE,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,aAAA;AACJ,SAAA;;QAGD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC;AACjD,SAAA;KACJ;AAEM,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC7B;AAEM,IAAA,iBAAiB,CAAC,EAAO,EAAA;QAC5B,IACI,IAAI,CAAC,YAAY;AACjB,YAAA,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO;AAC1B,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,OAAO,IAAI,CAAC,wBAAwB,KAAK,WAAW,EACtD;YACE,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC9B;AAEM,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,CAAC,CAAC,OAAO;AACZ,cAAE;AACI,gBAAA,UAAU,EAAE;AACR,oBAAA,YAAY,EAAE,IAAI,CAAC,sBAAsB,IAAI,OAAO;AACvD,iBAAA;AACJ,aAAA;cACD,IAAI,CAAC;KACd;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,QAAa,CAAC;QAElB,IAAI,KAAK,CAAC,MAAM,EAAE;;YAEd,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE;gBAC7C,OAAO;AACV,aAAA;AAED,YAAA,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAE9B,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AACnC,aAAA;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,aAAA;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,EAAE;oBAC5D,QAAQ,GAAG,IAAI,CAAC;AACnB,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,KAAK,GAAW,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;oBACzC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;wBAClD,QAAQ,GAAG,KAAK,CAAC;AACpB,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,qBAAA;AACJ,iBAAA;AACJ,aAAA;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;wBAC3E,QAAQ,GAAG,IAAI,CAAC;AAChB,wBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACpC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC;AAC1C,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,QAAQ,GAAG,KAAK,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnC;AAEM,IAAA,SAAS,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,+BAA+B,EAAE,CAAC;KAC1C;AAEM,IAAA,OAAO,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/F,SAAA;AACD,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;IAES,iBAAiB,GAAA;QACvB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KAC9H;IAEO,+BAA+B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YAC3E,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAClE,SAAA;KACJ;IAEO,sBAAsB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,OAAO;AACV,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;;sIAvgBQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAgOC,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC1D,SAAS,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjOZ,mBAAA,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAfpB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,EAAC,MAAM,sBAAsB,EAAC;AACrD,YAAA,KAAK,EAAE,IAAI;AACd,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,UAAU,EAAC,MAAM,sBAAsB,EAAC;AACrD,YAAA,KAAK,EAAE,IAAI;AACd,SAAA;KACJ,EAsLoC,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,kDC1OnD,krUA4PA,EAAA,MAAA,EAAA,CAAA,q0SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDpMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;YACI,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEhB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,EAAC,4BAA4B,EAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;4BACtB,WAAW,EAAE,UAAU,EAAC,4BAA4B,EAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,krUAAA,EAAA,MAAA,EAAA,CAAA,q0SAAA,CAAA,EAAA,CAAA;;;8BAkOhC,QAAQ;;8BAAI,IAAI;;8BAAI,MAAM;wBAAC,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,oBAAoB,CAAC,CAAA;;8BACjE,MAAM;+BAAC,SAAS,CAAA;;yBAhOZ,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAQF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAOG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAOG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGF,WAAW,EAAA,CAAA;sBADd,KAAK;gBASF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAQG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEF,oBAAoB,EAAA,CAAA;sBADvB,KAAK;gBAkBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAQG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEF,mBAAmB,EAAA,CAAA;sBADtB,KAAK;gBAQF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAQG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEF,OAAO,EAAA,CAAA;sBADV,KAAK;gBASF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAOG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAcG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEF,yBAAyB,EAAA,CAAA;sBAD5B,KAAK;gBAOG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAMG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,+BAA+B,EAAA,CAAA;sBAAvC,KAAK;gBAEF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAQG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAEH,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBASF,sBAAsB,EAAA,CAAA;sBADzB,KAAK;gBAOG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACqB,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;gBAEF,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;gBAC8B,cAAc,EAAA,CAAA;sBAAhE,SAAS;gBAAC,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;;AA4VrD;;;AAGG;MAeU,4BAA4B,CAAA;;4IAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,mBAAA,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iBAhiB5B,sBAAsB,EA8hBQ,iBAAiB,EAAE,kBAAkB,aAVxE,YAAY;QACZ,gCAAgC;QAChC,WAAW;QACX,iBAAiB;QACjB,kBAAkB;QAClB,cAAc;AACd,QAAA,eAAe,CA1hBV,EAAA,OAAA,EAAA,CAAA,sBAAsB,EA6hBG,iBAAiB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;6IAG9D,4BAA4B,EAAA,SAAA,EAJ1B,CAAC,WAAW,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAA,OAAA,EAAA,CARnD,YAAY;QACZ,gCAAgC;QAChC,WAAW;QACX,iBAAiB;QACjB,kBAAkB;QAClB,cAAc;QACd,eAAe,CAAA,EAAA,CAAA,CAAA;2FAMV,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,gCAAgC;wBAChC,WAAW;wBACX,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;AAClB,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,kBAAkB,CAAC;AACvD,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;AACxE,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;iBAChF,CAAA;;;AEvlBD;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-components-legacy-ux-form-control.mjs","sources":["../../legacy/ux-form-control/remove-id.directive.ts","../../legacy/ux-form-control/string-to-number.pipe.ts","../../legacy/ux-form-control/ux-form-control.component.ts","../../legacy/ux-form-control/ux-form-control.component.html","../../legacy/ux-form-control/eui-components-legacy-ux-form-control.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * @deprecated This class 'RemoveIdDirective' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'ux-form-control[id]',\n})\nexport class RemoveIdDirective {\n constructor(private el: ElementRef) {\n el.nativeElement.removeAttribute('id');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getLocaleNumberFormat, NumberFormatStyle } from '@angular/common';\n\n/**\n * @deprecated This class 'StringToNumberPipe' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Pipe({\n name: 'stringToNumber',\n pure: false,\n})\nexport class StringToNumberPipe implements PipeTransform {\n /**\n * This pipe transforms a given formatted number value of type String to number. The correct conversion is based on\n * current numbers format which is extracted from the given Locale.\n *\n * @param value - a formatted string value e.g. '100,000,999.101'\n * @param locale - the LOCALE_ID of the formatted number in value. e.g. 'en-US'\n */\n transform(value: string | number, locale: string): number {\n // check for undefined\n if (!value) {\n return 0;\n }\n // check if type is already number\n if (typeof value === 'number') {\n return value;\n }\n\n // retrieve separators\n const { thousand, decimal } = this.getSeparators(locale);\n // replace those separators and return typeof Number\n return Number(\n value\n .split(thousand)\n .join('')\n .replace(decimal, '.')\n .replace(/\\.(?=.*\\.)/g, '')\n );\n }\n\n public getSeparators(locale: string): { thousand: string; decimal: string } {\n // get formatNumber based on locale\n const numberFormat = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n // based on given format extract decimal and thousand separators\n // TODO: this could be easily done with Array Destructuring (ES6 feat) but it's disabled in current tsconfig :/\n const format: string = numberFormat.split('#').join('').split('0').join('');\n return { thousand: format[0], decimal: format[1] };\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Host,\n Inject,\n Input,\n LOCALE_ID,\n NgModule,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { UxValidationErrorI18nMessage, UxFormValidationError } from '@eui/base';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { UxFormGroupComponent } from '@eui/components/legacy/ux-form-group';\nimport { UxControlFeedbackComponentModule } from '@eui/components/legacy/ux-control-feedback';\nimport { RemoveIdDirective } from './remove-id.directive';\nimport { StringToNumberPipe } from './string-to-number.pipe';\nimport { CleaveOptions } from 'cleave.js/options';\nimport { UxCleaveModule, UxMaxlengthModule, UxAutoResizeModule } from '@eui/components/legacy/common/ux-directives';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n\n/**\n * @deprecated This class 'UxFormControlComponent' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@Component({\n selector: 'ux-form-control',\n templateUrl: './ux-form-control.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UxFormControlComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => UxFormControlComponent),\n multi: true,\n },\n ],\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UxFormControlComponent implements OnDestroy, ControlValueAccessor, Validator, AfterContentInit, OnChanges, AfterViewInit {\n @Input() id: string;\n @Input() feedbackTypeClass: string;\n @Input()\n get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n set isReadOnly(value: BooleanInput) {\n this._isReadOnly = coerceBooleanProperty(value);\n }\n @Input()\n get isRequired(): boolean {\n return this._isRequired;\n }\n set isRequired(value: BooleanInput) {\n this._isRequired = coerceBooleanProperty(value);\n }\n @Input() styleClass: string;\n @Input() validationErrorMessage: string | UxValidationErrorI18nMessage;\n @Input() infoLabel: string;\n @Input() placeholderLabel: string;\n @Input()\n get autofocus(): boolean {\n return this._autofocus;\n }\n set autofocus(value: BooleanInput) {\n this._autofocus = coerceBooleanProperty(value);\n }\n @Input() formControlName: string;\n\n @Input()\n get isInputText(): boolean {\n return this._isInputText;\n }\n\n set isInputText(value: BooleanInput) {\n this._isInputText = coerceBooleanProperty(value);\n }\n @Input()\n get isTextarea(): boolean {\n return this._isTextarea;\n }\n\n set isTextarea(value: BooleanInput) {\n this._isTextarea = coerceBooleanProperty(value);\n }\n @Input() rows = 2;\n @Input() minRows: number;\n @Input()\n get isTextareaAutoresize(): boolean {\n return this._isTextareaAutoresize;\n }\n set isTextareaAutoresize(value: BooleanInput) {\n this._isTextareaAutoresize = coerceBooleanProperty(value);\n }\n // @Input() isDatepicker: boolean = false;\n\n // @Input() isDatetimepicker: boolean = false;\n // @Input() datepickerDateformat: string = 'dd/mm/yy';\n // @Input() datepickerYearRange: string = '1900:2050';\n // @Input() datepickerLocale;\n // @Input() dateOutputFormat;\n // @Input() minDateValue: Date = null;\n\n // @Input() maxDateValue: Date = null;\n @Input()\n get isSelect(): boolean {\n return this._isSelect;\n }\n\n set isSelect(value: BooleanInput) {\n this._isSelect = coerceBooleanProperty(value);\n }\n @Input() selectOptions: any[];\n @Input() selectKeyName = 'id';\n @Input() selectValueName = 'value';\n @Input()\n get isSelectStringValue(): boolean {\n return this._isSelectStringValue;\n }\n set isSelectStringValue(value: BooleanInput) {\n this._isSelectStringValue = coerceBooleanProperty(value);\n }\n @Input()\n get isCheckbox(): boolean {\n return this._isCheckbox;\n }\n\n set isCheckbox(value: BooleanInput) {\n this._isCheckbox = coerceBooleanProperty(value);\n }\n @Input() checkboxLabel: string;\n @Input()\n get isRadio(): boolean {\n return this._isRadio;\n }\n\n set isRadio(value: BooleanInput) {\n this._isRadio = coerceBooleanProperty(value);\n }\n @Input()\n get isRadioDeselect(): boolean {\n return this._isRadioDeselect;\n }\n set isRadioDeselect(value: BooleanInput) {\n this._isRadioDeselect = coerceBooleanProperty(value);\n }\n @Input() radioLabel: string;\n @Input() formControlValue: any;\n @Input()\n get isNumber(): boolean {\n return this._isNumber;\n }\n\n set isNumber(value: BooleanInput) {\n this._isNumber = coerceBooleanProperty(value);\n }\n /**\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * minIntegerDigits: The minimum number of integer digits before the decimal point. Default is 1.\n * minFractionDigits: The minimum number of digits after the decimal point. Default is 0.\n * maxFractionDigits: The maximum number of digits after the decimal point. Default is 3.\n */\n @Input() digitsInfo = '1.0-3';\n @Input()\n get isNumberFormatPlaceholder(): boolean {\n return this._isNumberFormatPlaceholder;\n }\n set isNumberFormatPlaceholder(value: BooleanInput) {\n this._isNumberFormatPlaceholder = coerceBooleanProperty(value);\n }\n @Input() cleaveOptions: CleaveOptions = {\n numeral: true,\n delimiter: '',\n numeralDecimalMark: '',\n numeralDecimalScale: 0,\n };\n @Input() maxlength: number;\n\n @Input() maxLengthValidationErrorMessage: string;\n @Input()\n get isDisabled(): boolean {\n return this._isDisabled;\n }\n\n set isDisabled(value: BooleanInput) {\n this._isDisabled = coerceBooleanProperty(value);\n }\n @Input() inputStyleClass: string;\n\n @Input() tabindex = '0';\n @Input() groupId = '';\n\n @Output() modelChange = new EventEmitter<any>();\n\n @Output() touched = new EventEmitter<any>();\n @Output() focus = new EventEmitter<any>();\n @Input()\n get selectNoBlankLine(): boolean {\n return this._selectNoBlankLine;\n }\n\n set selectNoBlankLine(value: BooleanInput) {\n this._selectNoBlankLine = coerceBooleanProperty(value);\n }\n @Input()\n get isShowMaxlengthCounter(): boolean {\n return this._isShowMaxlengthCounter;\n }\n set isShowMaxlengthCounter(value: BooleanInput) {\n this._isShowMaxlengthCounter = coerceBooleanProperty(value);\n }\n @Input() e2eAttr = 'ux-form-control';\n\n @Input() emptyValueTextOnReadOnly;\n @ViewChild('radioElement') radioElement: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputRef') inputRef: ElementRef<HTMLInputElement>;\n @ViewChild('formControlRef', { read: ElementRef }) formControlRef: ElementRef;\n inputValue: any;\n\n data: any;\n generatedId: string;\n checked: boolean;\n isMaxLengthValid = true;\n feedbackLabel: string;\n uxFormGroupComponent: UxFormGroupComponent;\n isSelectHasOptions = false;\n ariaInvalid = false;\n hasFormGroupParent = false;\n\n // Stores the isValid value for the parent form in case the user edits the field for the first time,\n\n // i.e.: not \"touched\" yet, but still invalid.\n // In such cases, the parent formGroup should become invalid when the user blurs the field.\n intendedFormGroupIsValid = true;\n validationErrorType: string;\n // Stores the last value for fields that are auto-corrected, i.e.: numeric fields or fields limited to a maximum length.\n\n // This is to fix a bug for when a user types an invalid value, and then switching off read-only mode.\n // In such cases, the last characters would remain in the (read-only) value.\n // To prevent this, we will force the value to the last known correct value.\n protected lastAutoCorrectedValue;\n private _formControl: FormControl;\n\n private languageChangeSubscription: Subscription;\n private _isReadOnly = false;\n private _isRequired = false;\n private _autofocus = false;\n private _isInputText = false;\n private _isTextarea = false;\n private _isTextareaAutoresize = false; // TODO : enable activation of uxAutoresize directive\n private _isSelect = false;\n private _isSelectStringValue = false;\n private _isCheckbox = false;\n private _isRadio = false;\n private _isRadioDeselect = false;\n private _isNumber = false;\n private _isNumberFormatPlaceholder = true;\n private _isDisabled = false;\n private _selectNoBlankLine = false;\n private _isShowMaxlengthCounter = true;\n\n constructor(\n @Optional() @Host() @Inject(forwardRef(() => UxFormGroupComponent)) uxFormGroupComponent: UxFormGroupComponent,\n @Inject(LOCALE_ID) public locale: string,\n protected elementRef: ElementRef\n ) {\n this.uxFormGroupComponent = uxFormGroupComponent;\n this.hasFormGroupParent = this.uxFormGroupComponent ? true : false;\n\n // this.languageChangeSubscription = translateService.onLangChange.subscribe((evt: LangChangeEvent) => {\n // if (this.calendarControl && !this.datepickerLocale) {\n // const locale = calendarLocales[evt.lang] || calendarLocales['en'];\n // this.calendarControl.locale = locale;\n // }\n // });\n }\n\n // @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n // if (event.keyCode === 27 && this.isDatepicker) { // ESC\n // this.calendarControl.overlayVisible = false;\n // }\n // }\n\n ngAfterViewInit() {\n if (this.formControlRef && this.autofocus) {\n this.formControlRef.nativeElement.focus();\n }\n }\n\n ngAfterContentInit() {\n if (!this.id) {\n this.generatedId = 'ux-form-control-' + (Math.floor(Math.random() * 1000000) + 1).toString();\n } else {\n this.generatedId = this.id;\n }\n if (this.uxFormGroupComponent && !this.uxFormGroupComponent.id) {\n this.uxFormGroupComponent.id = this.generatedId;\n if (!this.uxFormGroupComponent.isRequired) {\n this.uxFormGroupComponent.isRequired = this.isRequired;\n } else if (!this.isRequired) {\n this.isRequired = true;\n }\n }\n if (!this.isInputText && !this.isTextarea && !this.isSelect && !this.isCheckbox && !this.isRadio && !this.isNumber) {\n this.isInputText = true;\n }\n\n if (this._formControl) {\n this._formControl.statusChanges.subscribe((v) => {\n if (this.uxFormGroupComponent) {\n this.intendedFormGroupIsValid = true;\n this.uxFormGroupComponent.isValid = v !== 'INVALID';\n if (!this._formControl.touched) {\n this.intendedFormGroupIsValid = this.uxFormGroupComponent.isValid;\n this.uxFormGroupComponent.isValid = true;\n }\n if (!this.uxFormGroupComponent.validationErrorMessage && this.validationErrorMessage) {\n this.uxFormGroupComponent.validationErrorMessage = this.validationErrorMessage;\n } else if (this._formControl.errors && this._formControl.errors.uxValidationError) {\n this.setUxValidationErrorsToParentFormGroup();\n }\n } else if (this._formControl.errors && this._formControl.errors.uxValidationError) {\n this.setUxValidationErrorsToFormControl();\n }\n });\n }\n\n this.lastAutoCorrectedValue = this.inputValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes['cleaveOptions'] && this.isNumber) {\n this.cleaveOptions = { ...changes['cleaveOptions'].currentValue, numeral: true };\n }\n\n // Bug fix for when a user types an invalid value, and then switching off read-only mode.\n // In such cases, the last characters would remain in the (read-only) value.\n // To prevent this, we will force the value to the last known correct value.\n if (changes && changes['isReadOnly'] && this.isNumber) {\n if (this.isReadOnly) {\n this.inputValue = this.lastAutoCorrectedValue;\n }\n }\n\n if (changes && changes['isReadOnly'] && this.isRadio) {\n if (!this.isReadOnly && this._formControl) {\n this.writeValue(this._formControl.value);\n }\n }\n\n if (changes && changes['isReadOnly'] && this.isSelect) {\n if (this.isReadOnly && this._formControl) {\n this.writeValue(this._formControl.value);\n }\n }\n\n this.updateSelectHasOptions();\n\n this.updateAriaInvalid();\n }\n\n ngOnDestroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription.unsubscribe();\n }\n }\n\n setUxValidationErrorsToFormControl() {\n const errors = this._formControl.errors as UxFormValidationError;\n if (errors.uxValidationError.message) {\n this.validationErrorMessage = errors.uxValidationError.message;\n }\n if (errors.uxValidationError.type) {\n this.validationErrorType = errors.uxValidationError.type;\n }\n }\n\n setUxValidationErrorsToParentFormGroup() {\n const errors = this._formControl.errors as UxFormValidationError;\n if (errors.uxValidationError.message) {\n this.uxFormGroupComponent.validationErrorMessage = errors.uxValidationError.message;\n }\n if (errors.uxValidationError.type) {\n this.uxFormGroupComponent.validationErrorFeedbackClass = errors.uxValidationError.type;\n }\n }\n\n get isFieldValid(): boolean {\n if (this._formControl) {\n if (this._formControl.touched && this._formControl.invalid) {\n return false;\n }\n }\n return true;\n }\n\n get isRadioOptionChecked(): boolean {\n if (this._formControl && this.isRadio) {\n return this._formControl.value === this.formControlValue;\n }\n return null;\n }\n\n OnMaxLengthValidityChange(state: boolean) {\n this.isMaxLengthValid = state;\n }\n\n public writeValue(value: any) {\n if (this.isNumber) {\n this.inputValue = value;\n } else {\n if (this.isRadio) {\n if (this.isReadOnly) {\n this.inputValue = value;\n } else {\n this.checked = value === this.formControlValue;\n if (this.radioElement) {\n (<any>this.radioElement).nativeElement.checked = this.checked;\n }\n }\n } else {\n this.inputValue = value;\n }\n }\n\n // Save the last correct input value to show when a user switch off to read-only mode.\n if (this.inputValue) {\n this.lastAutoCorrectedValue = this.inputValue;\n }\n }\n\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n public registerOnTouched(fn: any) {\n if (\n this._formControl &&\n !this._formControl.touched &&\n this.uxFormGroupComponent &&\n typeof this.intendedFormGroupIsValid !== 'undefined'\n ) {\n this.uxFormGroupComponent.isValid = this.intendedFormGroupIsValid;\n }\n\n this.propagateTouched = fn;\n }\n\n public validate(c: FormControl) {\n this._formControl = c;\n setTimeout(() => {\n this.updateAriaInvalid();\n }, 0);\n return c.invalid\n ? {\n fieldError: {\n errorMessage: this.validationErrorMessage || 'error',\n },\n }\n : null;\n }\n\n public onChange(event) {\n let newValue: any;\n\n if (event.target) {\n // Ignore, if TAB, Shift + Tab key combinations are used\n if (event.keyCode === 9 || event.keyCode === 16) {\n return;\n }\n\n newValue = event.target.value;\n\n if (this.isCheckbox) {\n newValue = event.target.checked;\n }\n\n if (this.isNumber) {\n newValue = this.inputValue;\n }\n if (this.isSelect) {\n if (event.target.value === 'null' || event.target.value === '') {\n newValue = null;\n } else {\n const value: string = event.target.value;\n if (isNaN(Number(value)) || this.isSelectStringValue) {\n newValue = value;\n } else {\n newValue = Number(value);\n }\n }\n }\n if (this.isRadio) {\n if (!this.isRadioDeselect) {\n newValue = this.formControlValue;\n } else {\n if (this.isRadioOptionChecked && event.target.value === this.formControlValue) {\n newValue = null;\n this._formControl.setValue(null, { emitEvent: true });\n } else {\n newValue = this.formControlValue;\n }\n }\n }\n\n if (this.isNumber || this.maxlength) {\n this.lastAutoCorrectedValue = newValue;\n }\n } else {\n newValue = event;\n }\n\n this.propagateChange(newValue);\n this.modelChange.emit(newValue);\n }\n\n public onTouched(event) {\n this.touched.emit(event);\n this.propagateTouched();\n this.updateFormGroupValidationStatus();\n }\n\n public onFocus(event) {\n this.focus.emit(event);\n }\n\n public get selectValue(): string {\n let valueItem = null;\n if (this.selectOptions) {\n valueItem = this.selectOptions.find((item) => item[this.selectKeyName] === this.inputValue);\n }\n if (valueItem) {\n return valueItem[this.selectValueName];\n } else {\n return null;\n }\n }\n\n protected updateAriaInvalid() {\n this.ariaInvalid = !this.isMaxLengthValid || (this._formControl && this._formControl.touched && this._formControl.invalid);\n }\n\n private updateFormGroupValidationStatus() {\n if (this._formControl && this.uxFormGroupComponent && this._formControl.dirty) {\n this.uxFormGroupComponent.isValid = !this._formControl.invalid;\n }\n }\n\n private updateSelectHasOptions() {\n if (this.isSelect && this.selectOptions) {\n this.selectOptions.forEach((item) => {\n if (item.options) {\n this.isSelectHasOptions = true;\n return;\n }\n });\n }\n }\n\n private propagateChange = (_: any) => {};\n\n private propagateTouched = () => {};\n}\n\n/**\n * @deprecated This class 'UxFormControlComponentModule' is deprecated as of version 10.0.0.\n * Will be removed in v17.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n UxControlFeedbackComponentModule,\n FormsModule,\n UxMaxlengthModule,\n UxAutoResizeModule,\n UxCleaveModule,\n TranslateModule,\n ],\n providers: [DecimalPipe, Clipboard, StringToNumberPipe],\n exports: [UxFormControlComponent, RemoveIdDirective, StringToNumberPipe],\n declarations: [UxFormControlComponent, RemoveIdDirective, StringToNumberPipe],\n})\nexport class UxFormControlComponentModule {}\n","<ng-container *ngIf=\"isInputText && !isReadOnly\">\n <span attr.data-e2e=\"{{ e2eAttr }}-tf-rw\">\n <input\n #inputRef\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"text\"\n [(ngModel)]=\"inputValue\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\" />\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isTextarea && !isReadOnly\">\n <span attr.data-e2e=\"{{ e2eAttr }}-ta-rw\">\n <textarea\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n [(ngModel)]=\"inputValue\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [attr.rows]=\"rows\"\n [minRows]=\"minRows\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n [uxAutoResize]=\"isTextareaAutoresize\">\n </textarea>\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isSelect && !isReadOnly\">\n <select\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-form-control ux-form-control__custom-select {{ inputStyleClass }}\"\n [(ngModel)]=\"inputValue\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-rw\">\n <ng-container *ngIf=\"selectOptions\">\n <option *ngIf=\"!selectNoBlankLine\" [value]=\"'' || null\" class=\"ux-u-color-grey\">{{ placeholderLabel }}</option>\n <ng-template [ngIf]=\"isSelectHasOptions\">\n <ng-template ngFor let-item [ngForOf]=\"selectOptions\">\n <optgroup *ngIf=\"item.options\" label=\"{{ item.value }}\" class=\"ux-u-font-regular\">\n <option\n *ngFor=\"let opt of item.options\"\n [value]=\"opt[selectKeyName]\"\n [selected]=\"inputValue === opt[selectKeyName]\">\n {{ opt[selectValueName] }}\n </option>\n </optgroup>\n <option *ngIf=\"!item.options\" [value]=\"item[selectKeyName]\" [selected]=\"inputValue === item[selectKeyName]\">\n {{ item[selectValueName] }}\n </option>\n </ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"!isSelectHasOptions\">\n <option *ngFor=\"let opt of selectOptions\" [value]=\"opt[selectKeyName]\" [selected]=\"inputValue === opt[selectKeyName]\">\n {{ opt[selectValueName] }}\n </option>\n </ng-template>\n </ng-container>\n <ng-content *ngIf=\"!selectOptions\"></ng-content>\n </select>\n</ng-container>\n\n<ng-container *ngIf=\"isReadOnly && isSelect\">\n <!-- <input type=\"text\" role=\"combobox\" [attr.aria-readonly]=\"true\" readonly=\"readonly\" id=\"{{generatedId}}\" class=\"ux-form-control__read-only {{inputStyleClass}}\" [value]=\"selectValue\" [tabindex]=\"tabindex\" /> -->\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-ro\">\n {{ selectValue === '' || !selectValue ? emptyValueTextOnReadOnly : selectValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isCheckbox && !isReadOnly\">\n <input\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"checkbox\"\n class=\"ux-input__checkbox {{ styleClass }}\"\n [(ngModel)]=\"inputValue\"\n (click)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-cb-rw\" />\n <label for=\"{{ generatedId }}\" *ngIf=\"checkboxLabel\">{{ checkboxLabel }}</label>\n <label for=\"{{ generatedId }}\" role=\"presentation\" *ngIf=\"!checkboxLabel\">&nbsp;</label>\n</ng-container>\n\n<ng-container *ngIf=\"isCheckbox && isReadOnly\">\n <input\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-input__checkbox {{ styleClass }}\"\n type=\"checkbox\"\n [checked]=\"inputValue\"\n onclick=\"return false;\"\n [tabindex]=\"tabindex\"\n readonly=\"readonly\"\n aria-readonly=\"true\"\n attr.data-e2e=\"{{ e2eAttr }}-cb-ro\" />\n <label for=\"{{ generatedId }}\" *ngIf=\"checkboxLabel\">{{ checkboxLabel }}</label>\n <label for=\"{{ generatedId }}\" role=\"presentation\" *ngIf=\"!checkboxLabel\">&nbsp;</label>\n</ng-container>\n\n<ng-container *ngIf=\"isRadio && !isReadOnly\">\n <input\n #radioElement\n #formControlRef\n id=\"{{ generatedId }}\"\n class=\"ux-input__radio {{ styleClass }}\"\n type=\"radio\"\n [checked]=\"checked\"\n [name]=\"formControlName + groupId\"\n [value]=\"formControlValue\"\n (click)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"isDisabled\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\"\n attr.data-e2e=\"{{ e2eAttr }}-ra-rw\" />\n <label for=\"{{ generatedId }}\" class=\"radio-label\">{{ radioLabel || '&nbsp;' }}</label>\n</ng-container>\n\n<ng-container *ngIf=\"isRadio && isReadOnly && isRadioOptionChecked\">\n <div\n *ngIf=\"radioLabel\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ radioLabel }}\n </div>\n <div\n *ngIf=\"!radioLabel\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ inputValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isReadOnly && !isCheckbox && !isNumber && !isSelect && !isRadio && !isTextarea\">\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n {{ inputValue === '' || !inputValue ? emptyValueTextOnReadOnly : inputValue }}\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isNumber\">\n <div\n *ngIf=\"isReadOnly\"\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-sel-ro\">\n {{ inputRef.value === '' || !inputRef.value ? emptyValueTextOnReadOnly : inputRef.value }}\n </div>\n <span [hidden]=\"isReadOnly\" attr.data-e2e=\"{{ e2eAttr }}-num-rw\">\n <input\n #inputRef\n #formControlRef\n id=\"{{ generatedId }}\"\n type=\"text\"\n [uxCleave]=\"cleaveOptions\"\n [readOnly]=\"isReadOnly\"\n [(ngModel)]=\"inputValue\"\n [isModelNumber]=\"true\"\n class=\"ux-form-control {{ inputStyleClass }}\"\n (change)=\"onChange($event)\"\n (keyup)=\"onChange($event)\"\n (blur)=\"onTouched($event)\"\n (focus)=\"onFocus($event)\"\n placeholder=\"{{ placeholderLabel }}\"\n [disabled]=\"isDisabled\"\n [uxMaxlength]=\"maxlength\"\n (validityChange)=\"OnMaxLengthValidityChange($event)\"\n [isShowMaxlengthCounter]=\"isShowMaxlengthCounter\"\n [tabindex]=\"tabindex\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"isRequired\" />\n </span>\n</ng-container>\n\n<ng-container *ngIf=\"isTextarea && isReadOnly\">\n <div\n id=\"{{ generatedId }}\"\n class=\"ux-form-group--read-only {{ inputStyleClass }}\"\n [tabindex]=\"tabindex\"\n attr.data-e2e=\"{{ e2eAttr }}-ro\">\n <pre>{{ inputValue === '' || !inputValue ? emptyValueTextOnReadOnly : inputValue }}</pre>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!isFieldValid && !hasFormGroupParent\">\n <ux-control-feedback\n *ngIf=\"validationErrorMessage\"\n typeClass=\"{{ validationErrorType ? validationErrorType : 'danger' }}\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n {{\n validationErrorMessage && $any(validationErrorMessage).id\n ? ($any(validationErrorMessage).id | translate : $any(validationErrorMessage).params)\n : validationErrorMessage\n }}\n </ux-control-feedback>\n</ng-container>\n\n<ng-container *ngIf=\"!isMaxLengthValid\">\n <ux-control-feedback *ngIf=\"maxLengthValidationErrorMessage\" typeClass=\"danger\" attr.data-e2e=\"{{ e2eAttr }}\">\n {{ maxLengthValidationErrorMessage }}\n </ux-control-feedback>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -205,7 +205,7 @@ class EuiInputNumberComponent extends InputDirective {
205
205
  }
206
206
  onKeyDown(e) {
207
207
  // check if it's a single symbol and not Special like (Ctrl, backspace etc)
208
- if (e?.key.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {
208
+ if (e?.key?.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {
209
209
  // stop event propagation if key pressed is not a number or locale character or minus sign
210
210
  if (Number.isNaN(Number.parseInt(e.key, 10)) &&
211
211
  this.isMinusAllowed(e.key) &&
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-input-number.mjs","sources":["../../eui-input-number/eui-input-number.component.ts","../../eui-input-number/eui-number-control.directive.ts","../../eui-input-number/eui-input-number.module.ts","../../eui-input-number/eui-components-eui-input-number.ts"],"sourcesContent":["import {\n Optional,\n LOCALE_ID,\n Inject,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n Injector,\n} from '@angular/core';\nimport { LocaleService, LocaleState } from '@eui/core';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { type CleaveOptions } from 'cleave.js/options';\nimport Cleave from 'cleave.js';\nimport { CleaveEventOnChange } from './models/cleave-event-onchange.model';\nimport { InputDirective } from '@eui/components/shared';\nimport { DOCUMENT, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { NgControl } from '@angular/forms';\n\nexport interface CleaveInstance extends Cleave {\n initSwapHiddenInput?: () => void;\n initNumeralFormatter?: () => void;\n initTimeFormatter?: () => void;\n initDateFormatter?: () => void;\n initPhoneFormatter?: () => void;\n updateCreditCardPropsByValue?: () => void;\n updateValueState?: () => void;\n callOnValueChanged?: () => void;\n onChange?: (event?: Event) => void;\n onCut?: (event?: Event) => void;\n onFocus?: (event?: Event) => void;\n onCopy?: (event?: Event) => void;\n onKeyDown?: (event?: Event) => void;\n onChangeListener?: (event?: Event) => void;\n onKeyDownListener?: (event?: Event) => void;\n onFocusListener?: (event?: Event) => void;\n onCutListener?: (event?: Event) => void;\n onCopyListener?: (event?: Event) => void;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[euiInputNumber]',\n styleUrls: ['./styles/_index.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: EuiClearableDirective,\n inputs: ['euiClearable', 'readonly', 'disabled'],\n },\n {\n directive: EuiLoadingDirective,\n inputs: ['euiLoading', 'readonly'],\n },\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(blur)': 'onTouched()',\n },\n})\nexport class EuiInputNumberComponent extends InputDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n /**\n * The minimum number can be entered. Blocks user's input if not in range.\n */\n @Input()\n public get min(): number {\n return this._min;\n }\n public set min(value: NumberInput) {\n this._min = coerceNumberProperty(value);\n }\n /**\n * The maximum number can be entered. Blocks user's input if not in range.\n */\n @Input()\n public get max(): number {\n return this._max;\n }\n public set max(value: NumberInput) {\n this._max = coerceNumberProperty(value);\n }\n /** Adds leading zero to a number. Formatting will not work.\n * e.g. with leadingZero=3 input number 5 => 005\n */\n @Input()\n public get leadingZero(): number {\n return this._leadingZero;\n }\n public set leadingZero(value: NumberInput) {\n this._leadingZero = coerceNumberProperty(value);\n }\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n\n public set isInvalid(state: BooleanInput) {\n this.setInvalid(state);\n }\n @HostBinding('class')\n public get cssClasses(): string {\n return [super.getCssClasses('eui-input-number'), this._isInvalid ? 'eui-input-number--invalid' : ''].join(' ').trim();\n }\n\n /** how many digits for the decimal part */\n @Input()\n get fractionDigits(): number {\n return this._fractionDigits;\n }\n set fractionDigits(value: NumberInput) {\n this._fractionDigits = coerceNumberProperty(value);\n }\n /** how many digits for the integer part */\n @Input()\n get digits(): number {\n return this._digits;\n }\n set digits(value: NumberInput) {\n this._digits = coerceNumberProperty(value);\n }\n @Input()\n get fillFraction(): boolean {\n return this._fillFraction;\n }\n set fillFraction(value: BooleanInput) {\n this._fillFraction = coerceBooleanProperty(value);\n }\n /** rounds a number with more than two decimals UP */\n @Input()\n get roundUp(): number {\n return this._roundUp;\n }\n set roundUp(value: NumberInput) {\n this._roundUp = coerceNumberProperty(value);\n }\n protected _isInvalid: boolean;\n /**\n * does not format the and do a thousand grouping of number\n */\n @Input()\n get noFormat(): boolean {\n return this._noFormat;\n }\n set noFormat(value: BooleanInput) {\n this._noFormat = coerceBooleanProperty(value);\n }\n protected _noFormat: boolean;\n @Input() styleClass: string;\n @HostBinding('attr.type') protected type = 'eui-number';\n @Input() value: string;\n protected _roundUp: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onChangeCallback: (_: any) => void;\n cleaveInstance: CleaveInstance;\n private _min: number;\n private _max: number;\n\n private _leadingZero = 0;\n /** holds instance of cleave */\n /** options for the Cleave instance */\n private options: CleaveOptions;\n private _fractionDigits = 0;\n private _digits: number;\n private _fillFraction: boolean;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _renderer: Renderer2,\n private cd: ChangeDetectorRef,\n @Optional() private localeService: LocaleService,\n @Inject(LOCALE_ID) private locale_id: string,\n injector: Injector,\n @Inject(DOCUMENT) private document: Document,\n ) {\n super(_elementRef, _renderer, injector);\n\n // set default options\n this.options = {\n numeral: true,\n };\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n\n // instantiate cleave\n if (!this.control) {\n this.initCleave();\n }\n\n // subscribe to localization service and listen for locale change. De-construction of locale should happen here!\n this.localeService?.getState().subscribe((state: LocaleState) => {\n this.options = this.getCleaveOptsBasedOnLocale(state?.id);\n\n // update the options on the cleave instance\n this.updateOptions(true);\n });\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'rootClassName', 'eui-input-number');\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.hasOwn(changes, 'value')) {\n this._elementRef.nativeElement.value = this.value;\n if (this.cleaveInstance) {\n this.cleaveInstance.setRawValue(this.value);\n }\n }\n if (Object.hasOwn(changes, 'fractionDigits')) {\n this.options = { ...this.options, numeralDecimalScale: this.fractionDigits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'noFormat')) {\n this.options = { ...this.options, numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand' };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'fillFraction') && this.cleaveInstance) {\n this.applyFractionFill(this.cleaveInstance.getRawValue());\n }\n if (Object.hasOwn(changes, 'digits')) {\n this.options = { ...this.options, numeralIntegerScale: this.digits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'min')) {\n if (changes['min'].currentValue >= 0) {\n if (this.cleaveInstance) {\n // take care of the sign symbol\n this.cleaveInstance.setRawValue(Math.abs(Number(this.cleaveInstance.getRawValue())).toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'roundUp')) {\n if (changes['roundUp'].currentValue > 0) {\n if (this.cleaveInstance) {\n let number = Number.parseFloat(this.cleaveInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n this.cleaveInstance.setRawValue(number.toString());\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // destroy cleave instance\n if (this.cleaveInstance) {\n this.cleaveInstance.destroy();\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: any = (_: any): void => {\n if (this.control && (_ !== null || _ !== undefined)) {\n // parse number\n // const value = Number(_);\n // run on next MicroTask to avoid NG0100 error TODO: deeper investigation\n // Promise.resolve().then(() => this.control.viewToModelUpdate(value));\n // in case control is FormControl\n // this.control?.control.setValue(isNaN(value) ? null : value, { emitEvent: false, emitModelToViewChange: false });\n }\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTouched: any = (): void => {\n this.control?.control.markAsTouched();\n };\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n // get the value from clipboard\n const value = (event.clipboardData || window['clipboardData']).getData('text');\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, { ...this.options, numeralDecimalScale: 8 });\n cloneInstance.setRawValue(value.toString());\n let number = Number.parseFloat(cloneInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n if (!Number.isNaN(number)) {\n this.cleaveInstance.setRawValue(number.toString());\n // TODO: investigate in the future how can this be avoided\n setTimeout(() => {\n // this.writeValue(number.toString());\n }, 0);\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(e: KeyboardEvent): void {\n // check if it's a single symbol and not Special like (Ctrl, backspace etc)\n if (e?.key.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {\n // stop event propagation if key pressed is not a number or locale character or minus sign\n if (\n Number.isNaN(Number.parseInt(e.key, 10)) &&\n this.isMinusAllowed(e.key) &&\n e.key !== getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)\n ) {\n e.stopPropagation();\n e.preventDefault();\n // stop event propagation if key pressed exceeds the min/max value range\n } else if (!Number.isNaN(Number.parseInt(e.key, 10)) && this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n } else if (this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n // protect decimal symbol deletion in case fillFraction is on\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const element = this._elementRef.nativeElement;\n // position of caret\n const pos = element.selectionStart;\n // get character about to be deleted\n const char = element.value.charAt(pos - 1);\n // in case the char is the decimal symbol prevent deletion and move caret in front\n if (char === getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)) {\n e.stopPropagation();\n e.preventDefault();\n element.setSelectionRange(pos - 1, pos - 1);\n } else if (this.isOutSideRange(e)) {\n // don't allow insertion that will put number out of range\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n\n @HostListener('focusout')\n protected onFocusout(): void {\n // in case fillFraction feature is on and there's no integer part add leading 0\n if (this.fillFraction && this.cleaveInstance.getRawValue().match(/^\\.[0-9]+/g)) {\n this.cleaveInstance.setRawValue('0' + this.cleaveInstance.getRawValue());\n }\n\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const number = Number.parseFloat(this.cleaveInstance.getRawValue());\n this.cleaveInstance.setRawValue(this.decimalAdjust(number, this.roundUp * -1).toString());\n }\n\n // in case min is set and value is less than min reset to the min value\n if (this.min && Number.parseFloat(this.cleaveInstance.getRawValue()) < this.min) {\n this.cleaveInstance.setRawValue(this.min.toString());\n }\n }\n\n protected setInvalid(state?: BooleanInput): void {\n // in case it's controlled by NgControl override\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : coerceBooleanProperty(state);\n\n // set BaseDirective Attribute\n super.euiDanger = this._isInvalid;\n }\n\n /**\n * @Override setPlaceholder setPlaceholderAttribute of InputDirective\n * Updates the placeholder value based on current number format and given value.\n * If value passed contains characters it doesn't format placeholder.\n * */\n protected setPlaceholderAttribute(value: string | number = 999999.9999): void {\n // if value is a number, format the value based on current number format\n if (typeof value === 'number' && !isNaN(value)) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, this.options);\n // BEWARE: by the time your setRawValue cleave options have changed thus number formatting\n cloneInstance.setRawValue(value.toString());\n // set the value with current format as placeholder\n super.setPlaceholderAttribute(cloneInstance.getFormattedValue());\n } else if (typeof value === 'string') {\n super.setPlaceholderAttribute(value.toString());\n } else if (isNaN(value)) {\n value = this._elementRef.nativeElement.placeholder;\n super.setPlaceholderAttribute(value.toString());\n }\n }\n\n /**\n * instantiate Cleave.js\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initCleave(onChangeCallback?: (obj: any) => any): void {\n // change the cleave prototype function to intercept onCut callback\n // and allow based on the event bubbling and disabled state\n // TIP: change behavior of onCut to stop in case bubble is canceled\n // TODO: See relevant issue https://github.com/nosir/cleave.js/issues/675\n const _onCut = Cleave.prototype['onCut'];\n Cleave.prototype['onCut'] = function (e: Event): void {\n // eslint-disable-next-line no-invalid-this\n if (!e.cancelBubble && !this.element.disabled) {\n // eslint-disable-next-line no-invalid-this\n _onCut.call(this, e);\n }\n };\n\n // in case options is undefined\n const opts: CleaveOptions = { ...this.options };\n\n // set the onValue change listener to keep the value at readOnly element in sync\n opts.onValueChanged = onChangeCallback || this.onValueChanged.bind(this);\n\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const number = Number.parseFloat(this._elementRef.nativeElement.value);\n this._elementRef.nativeElement.value = this.decimalAdjust(number, this.roundUp * -1);\n }\n\n // create the Cleave instance with the new or updated options\n this.cleaveInstance = new Cleave(this._elementRef.nativeElement, opts);\n }\n\n /**\n * Updates the cleave options by destroying the current instance and creating another one while keeping the previous\n * value.\n */\n private updateOptions(localeUpdated = false): void {\n if (this.cleaveInstance) {\n // the value before destroying cleave instance\n const previousValue = this.cleaveInstance.getRawValue();\n\n // update the Cleave instance with the new or updated options\n this.cleaveInstance.properties = {\n ...this.cleaveInstance.properties,\n ...this.options,\n initValue: previousValue,\n };\n\n // init number formatter with updated options\n this.cleaveInstance.initNumeralFormatter();\n\n // In case previous settings where numeralDecimalMark='.' with value 1000.99, and they changed to\n // numeralDecimalMark=','; set initValue to 1000.99 or even 1000,99 will not be reflected and cleave will\n // remove the decimal part. Set of the value after initialization causes reformat of number and works.\n this.cleaveInstance.setRawValue(previousValue);\n\n // parse number\n const number = this.parseNumber(this._elementRef.nativeElement.placeholder || undefined, localeUpdated);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(number);\n }\n }\n\n /**\n * Callback function of the Cleave instance that is invoked when value is changed.\n *\n * @param event type of CleaveEventOnChange\n */\n private onValueChanged(event: CleaveEventOnChange): void {\n const { target } = event;\n\n if (this.fillFraction) {\n this.applyFractionFill(target.rawValue);\n }\n this.onChange(Number.parseFloat(target.rawValue));\n // fill leading zero\n if (this.leadingZero) {\n const size = this.leadingZero > this.digits && this.digits > 0 ? this.digits : this.leadingZero;\n this._elementRef.nativeElement.value = this.padZero(event.target.rawValue, size);\n }\n }\n\n /**\n * responsible to extract all locale information needed to build CleaveOptions related to number format.\n *\n * @param id The id of the locale\n */\n private getCleaveOptsBasedOnLocale(id: string): CleaveOptions {\n if (!id || id === '') {\n throw new Error('Locale id cannot be empty or undefined');\n }\n const opts: CleaveOptions = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(id, NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(id, NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand', // TODO: implement based on locale\n };\n\n return { ...this.options, ...opts };\n }\n\n /**\n * Applies the fill of decimal part with zeros in case decimal part of given number has\n * size less than the max fraction digits.\n *\n * @param number\n * @param cleaveInstance\n * @private\n */\n private applyFractionFill(number: string, cleaveInstance: CleaveInstance = this.cleaveInstance): void {\n // if fill fraction is enabled and there's cleave instance\n if (this.fillFraction) {\n if (this.cleaveInstance) {\n number = number?.toString();\n if (number === '' || !number) {\n return;\n }\n const hasDecimal = number.split('.').length > 1;\n // in case there's already decimal point in number\n if (hasDecimal) {\n const decimalSize = number.split('.')[1].length;\n // if size of decimal part of number is less than the max fraction digits\n if (decimalSize < this._fractionDigits) {\n number = number + new Array(this._fractionDigits - decimalSize).fill(0).join('');\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n // in case there's not, force it by filling it as much zero as the fraction digits\n } else if (this.fractionDigits > 0) {\n number = `${number}.${new Array(this._fractionDigits).fill(0).join('')}`;\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n }\n }\n }\n\n /**\n * Parses a given formatted number and returns it as a number.\n *\n * @param value The formatted number you want to parse e.g. 111,888.22\n * @param userPrevLocaleState Use previous locale state to parse the value. By default, is false\n * @private\n */\n private parseNumber(value: string, userPrevLocaleState = false): number {\n // locale state\n const locale = userPrevLocaleState ? this.localeService?.previousLocale : this.localeService?.currentLocale || this.locale_id;\n // get decimal and group symbols\n const decimalSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Decimal);\n const groupSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Group);\n // replace symbols to parse number\n const parsedNumber = value?.split(groupSymbol).join('').split(decimalSymbol).join('.');\n return Number.parseFloat(parsedNumber);\n }\n\n /**\n * Pad leading zero to the number\n *\n * @param num The number to add leading zero to\n * @param size Number of number's leading zero\n * @private\n */\n private padZero(num, size): string {\n num = num.toString();\n // get integer and decimal part\n // eslint-disable-next-line prefer-const\n let [integer, decimal] = num.split('.');\n while (integer.length < size) {\n integer = '0' + integer;\n }\n return decimal ? `${integer}.${decimal}` : integer;\n }\n\n /**\n * checks whether the min symbol is allowed. It is allowed when minus symbol\n * provided and min input is undefined or min provided and is negative.\n *\n * @param key The key string coming from an event\n */\n private isMinusAllowed(key: string): boolean {\n return !this.min || this.min < 0 ? key !== '-' : true;\n }\n\n /**\n * check whether the key entered is inside the min and\n * max range. Returns true if it's out of range.\n *\n * @param e A keyboard event\n */\n private isOutSideRange(e: KeyboardEvent): boolean {\n if (!this.cleaveInstance) {\n return false;\n }\n // get caret position\n const pos = e.target['selectionStart'];\n // get caret position (in case there's text selected)\n const endPos = e.target['selectionEnd'];\n // get current value (formatted)\n let value = e.target['value'];\n // remove key from value\n if (e.key === 'Delete' || e.key === 'Backspace') {\n // check if there's selection of text to be removed\n if (pos !== endPos) {\n value = e.target['value'].substring(0, pos) + e.target['value'].substring(endPos, e.target['value'].length);\n } else {\n value = e.target['value'].substring(0, pos - 1) + e.target['value'].substring(endPos, e.target['value'].length);\n }\n } else {\n // add key to the value\n value = [value.slice(0, pos), e.key, value.slice(endPos)].join('');\n }\n\n // create a Cleave instance to extract the number from formatted value\n const cleave: CleaveInstance = new Cleave(this.document.createElement('input'), { ...this.options });\n cleave.setRawValue(value);\n const number = Number(cleave.getRawValue());\n // destroy cleave instance\n cleave.destroy();\n return this.min >= 0 ? false : this.min > number || this.max < number;\n }\n\n /**\n * Decimal adjustment of a number.\n *\n * @param value The number.\n * @param exp The exponent (the 10 logarithm of the adjustment base).\n * @returns The adjusted value.\n */\n private decimalAdjust(value: number, exp: number): number {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math.round(value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n let cleaned = value.toString().split('e');\n value = Math.round(+(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] - exp : -exp)));\n // Shift back\n cleaned = value.toString().split('e');\n return +(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] + exp : exp));\n }\n}\n","import { Directive, ElementRef, forwardRef, OnInit, Optional } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CleaveInstance, EuiInputNumberComponent } from './eui-input-number.component';\nimport Cleave from 'cleave.js';\n\n@Directive({\n selector: 'input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiInputNumberDirective),\n multi: true,\n },\n ],\n})\nexport class EuiInputNumberDirective implements ControlValueAccessor, OnInit {\n /** hold a copy of the value */\n private value: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (t: any) => void;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() private euiNumberComponent: EuiInputNumberComponent,\n ) {}\n\n ngOnInit(): void {\n this.euiNumberComponent['initCleave'](this.valueChanges.bind(this));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(obj: any): void {\n const cleave: CleaveInstance = new Cleave(document.createElement('input'), { ...this.euiNumberComponent['options'] });\n cleave.setRawValue(obj);\n if (this.euiNumberComponent.fillFraction && obj !== '' && obj) {\n this.euiNumberComponent['applyFractionFill'](obj, cleave);\n }\n let valueOfElement: string;\n // fill leading zero\n if (this.euiNumberComponent.leadingZero) {\n const size =\n this.euiNumberComponent.leadingZero > this.euiNumberComponent.digits && this.euiNumberComponent.digits > 0\n ? this.euiNumberComponent.digits\n : this.euiNumberComponent.leadingZero;\n valueOfElement = this.euiNumberComponent['padZero'](cleave.getFormattedValue(), size);\n } else {\n valueOfElement = cleave.getFormattedValue();\n }\n this.elementRef.nativeElement.value = valueOfElement;\n this.value = Number.parseFloat(cleave.getRawValue());\n cleave.destroy();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = (t): void => {\n this.value = t;\n fn(t);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.euiNumberComponent.disabled = isDisabled;\n }\n\n private onTouched(): void {\n // this.euiNumberComponent.isInvalid = this.control.invalid;\n }\n\n private valueChanges(event): void {\n const { target } = event;\n\n this.euiNumberComponent['onValueChanged'](event);\n const numberCoerce = Number.parseFloat(target.rawValue);\n if (this.value !== numberCoerce && this.onChange) {\n this.onChange(isNaN(numberCoerce) ? null : numberCoerce);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiInputNumberComponent } from './eui-input-number.component';\nimport { EuiInputNumberDirective } from './eui-number-control.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n})\nexport class EuiInputNumberDirectiveModule {}\n\n// @NgModule({\n// imports: [CommonModule],\n// declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n// exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n// })\n// export class EuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiInputNumberComponent"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-input-number.mjs","sources":["../../eui-input-number/eui-input-number.component.ts","../../eui-input-number/eui-number-control.directive.ts","../../eui-input-number/eui-input-number.module.ts","../../eui-input-number/eui-components-eui-input-number.ts"],"sourcesContent":["import {\n Optional,\n LOCALE_ID,\n Inject,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n Injector,\n} from '@angular/core';\nimport { LocaleService, LocaleState } from '@eui/core';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { type CleaveOptions } from 'cleave.js/options';\nimport Cleave from 'cleave.js';\nimport { CleaveEventOnChange } from './models/cleave-event-onchange.model';\nimport { InputDirective } from '@eui/components/shared';\nimport { DOCUMENT, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { NgControl } from '@angular/forms';\n\nexport interface CleaveInstance extends Cleave {\n initSwapHiddenInput?: () => void;\n initNumeralFormatter?: () => void;\n initTimeFormatter?: () => void;\n initDateFormatter?: () => void;\n initPhoneFormatter?: () => void;\n updateCreditCardPropsByValue?: () => void;\n updateValueState?: () => void;\n callOnValueChanged?: () => void;\n onChange?: (event?: Event) => void;\n onCut?: (event?: Event) => void;\n onFocus?: (event?: Event) => void;\n onCopy?: (event?: Event) => void;\n onKeyDown?: (event?: Event) => void;\n onChangeListener?: (event?: Event) => void;\n onKeyDownListener?: (event?: Event) => void;\n onFocusListener?: (event?: Event) => void;\n onCutListener?: (event?: Event) => void;\n onCopyListener?: (event?: Event) => void;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[euiInputNumber]',\n styleUrls: ['./styles/_index.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: EuiClearableDirective,\n inputs: ['euiClearable', 'readonly', 'disabled'],\n },\n {\n directive: EuiLoadingDirective,\n inputs: ['euiLoading', 'readonly'],\n },\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(blur)': 'onTouched()',\n },\n})\nexport class EuiInputNumberComponent extends InputDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n /**\n * The minimum number can be entered. Blocks user's input if not in range.\n */\n @Input()\n public get min(): number {\n return this._min;\n }\n public set min(value: NumberInput) {\n this._min = coerceNumberProperty(value);\n }\n /**\n * The maximum number can be entered. Blocks user's input if not in range.\n */\n @Input()\n public get max(): number {\n return this._max;\n }\n public set max(value: NumberInput) {\n this._max = coerceNumberProperty(value);\n }\n /** Adds leading zero to a number. Formatting will not work.\n * e.g. with leadingZero=3 input number 5 => 005\n */\n @Input()\n public get leadingZero(): number {\n return this._leadingZero;\n }\n public set leadingZero(value: NumberInput) {\n this._leadingZero = coerceNumberProperty(value);\n }\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n\n public set isInvalid(state: BooleanInput) {\n this.setInvalid(state);\n }\n @HostBinding('class')\n public get cssClasses(): string {\n return [super.getCssClasses('eui-input-number'), this._isInvalid ? 'eui-input-number--invalid' : ''].join(' ').trim();\n }\n\n /** how many digits for the decimal part */\n @Input()\n get fractionDigits(): number {\n return this._fractionDigits;\n }\n set fractionDigits(value: NumberInput) {\n this._fractionDigits = coerceNumberProperty(value);\n }\n /** how many digits for the integer part */\n @Input()\n get digits(): number {\n return this._digits;\n }\n set digits(value: NumberInput) {\n this._digits = coerceNumberProperty(value);\n }\n @Input()\n get fillFraction(): boolean {\n return this._fillFraction;\n }\n set fillFraction(value: BooleanInput) {\n this._fillFraction = coerceBooleanProperty(value);\n }\n /** rounds a number with more than two decimals UP */\n @Input()\n get roundUp(): number {\n return this._roundUp;\n }\n set roundUp(value: NumberInput) {\n this._roundUp = coerceNumberProperty(value);\n }\n protected _isInvalid: boolean;\n /**\n * does not format the and do a thousand grouping of number\n */\n @Input()\n get noFormat(): boolean {\n return this._noFormat;\n }\n set noFormat(value: BooleanInput) {\n this._noFormat = coerceBooleanProperty(value);\n }\n protected _noFormat: boolean;\n @Input() styleClass: string;\n @HostBinding('attr.type') protected type = 'eui-number';\n @Input() value: string;\n protected _roundUp: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onChangeCallback: (_: any) => void;\n cleaveInstance: CleaveInstance;\n private _min: number;\n private _max: number;\n\n private _leadingZero = 0;\n /** holds instance of cleave */\n /** options for the Cleave instance */\n private options: CleaveOptions;\n private _fractionDigits = 0;\n private _digits: number;\n private _fillFraction: boolean;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _renderer: Renderer2,\n private cd: ChangeDetectorRef,\n @Optional() private localeService: LocaleService,\n @Inject(LOCALE_ID) private locale_id: string,\n injector: Injector,\n @Inject(DOCUMENT) private document: Document,\n ) {\n super(_elementRef, _renderer, injector);\n\n // set default options\n this.options = {\n numeral: true,\n };\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n\n // instantiate cleave\n if (!this.control) {\n this.initCleave();\n }\n\n // subscribe to localization service and listen for locale change. De-construction of locale should happen here!\n this.localeService?.getState().subscribe((state: LocaleState) => {\n this.options = this.getCleaveOptsBasedOnLocale(state?.id);\n\n // update the options on the cleave instance\n this.updateOptions(true);\n });\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'rootClassName', 'eui-input-number');\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.hasOwn(changes, 'value')) {\n this._elementRef.nativeElement.value = this.value;\n if (this.cleaveInstance) {\n this.cleaveInstance.setRawValue(this.value);\n }\n }\n if (Object.hasOwn(changes, 'fractionDigits')) {\n this.options = { ...this.options, numeralDecimalScale: this.fractionDigits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'noFormat')) {\n this.options = { ...this.options, numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand' };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'fillFraction') && this.cleaveInstance) {\n this.applyFractionFill(this.cleaveInstance.getRawValue());\n }\n if (Object.hasOwn(changes, 'digits')) {\n this.options = { ...this.options, numeralIntegerScale: this.digits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'min')) {\n if (changes['min'].currentValue >= 0) {\n if (this.cleaveInstance) {\n // take care of the sign symbol\n this.cleaveInstance.setRawValue(Math.abs(Number(this.cleaveInstance.getRawValue())).toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'roundUp')) {\n if (changes['roundUp'].currentValue > 0) {\n if (this.cleaveInstance) {\n let number = Number.parseFloat(this.cleaveInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n this.cleaveInstance.setRawValue(number.toString());\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // destroy cleave instance\n if (this.cleaveInstance) {\n this.cleaveInstance.destroy();\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: any = (_: any): void => {\n if (this.control && (_ !== null || _ !== undefined)) {\n // parse number\n // const value = Number(_);\n // run on next MicroTask to avoid NG0100 error TODO: deeper investigation\n // Promise.resolve().then(() => this.control.viewToModelUpdate(value));\n // in case control is FormControl\n // this.control?.control.setValue(isNaN(value) ? null : value, { emitEvent: false, emitModelToViewChange: false });\n }\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTouched: any = (): void => {\n this.control?.control.markAsTouched();\n };\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n // get the value from clipboard\n const value = (event.clipboardData || window['clipboardData']).getData('text');\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, { ...this.options, numeralDecimalScale: 8 });\n cloneInstance.setRawValue(value.toString());\n let number = Number.parseFloat(cloneInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n if (!Number.isNaN(number)) {\n this.cleaveInstance.setRawValue(number.toString());\n // TODO: investigate in the future how can this be avoided\n setTimeout(() => {\n // this.writeValue(number.toString());\n }, 0);\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(e: KeyboardEvent): void {\n // check if it's a single symbol and not Special like (Ctrl, backspace etc)\n if (e?.key?.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {\n // stop event propagation if key pressed is not a number or locale character or minus sign\n if (\n Number.isNaN(Number.parseInt(e.key, 10)) &&\n this.isMinusAllowed(e.key) &&\n e.key !== getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)\n ) {\n e.stopPropagation();\n e.preventDefault();\n // stop event propagation if key pressed exceeds the min/max value range\n } else if (!Number.isNaN(Number.parseInt(e.key, 10)) && this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n } else if (this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n // protect decimal symbol deletion in case fillFraction is on\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const element = this._elementRef.nativeElement;\n // position of caret\n const pos = element.selectionStart;\n // get character about to be deleted\n const char = element.value.charAt(pos - 1);\n // in case the char is the decimal symbol prevent deletion and move caret in front\n if (char === getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)) {\n e.stopPropagation();\n e.preventDefault();\n element.setSelectionRange(pos - 1, pos - 1);\n } else if (this.isOutSideRange(e)) {\n // don't allow insertion that will put number out of range\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n\n @HostListener('focusout')\n protected onFocusout(): void {\n // in case fillFraction feature is on and there's no integer part add leading 0\n if (this.fillFraction && this.cleaveInstance.getRawValue().match(/^\\.[0-9]+/g)) {\n this.cleaveInstance.setRawValue('0' + this.cleaveInstance.getRawValue());\n }\n\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const number = Number.parseFloat(this.cleaveInstance.getRawValue());\n this.cleaveInstance.setRawValue(this.decimalAdjust(number, this.roundUp * -1).toString());\n }\n\n // in case min is set and value is less than min reset to the min value\n if (this.min && Number.parseFloat(this.cleaveInstance.getRawValue()) < this.min) {\n this.cleaveInstance.setRawValue(this.min.toString());\n }\n }\n\n protected setInvalid(state?: BooleanInput): void {\n // in case it's controlled by NgControl override\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : coerceBooleanProperty(state);\n\n // set BaseDirective Attribute\n super.euiDanger = this._isInvalid;\n }\n\n /**\n * @Override setPlaceholder setPlaceholderAttribute of InputDirective\n * Updates the placeholder value based on current number format and given value.\n * If value passed contains characters it doesn't format placeholder.\n * */\n protected setPlaceholderAttribute(value: string | number = 999999.9999): void {\n // if value is a number, format the value based on current number format\n if (typeof value === 'number' && !isNaN(value)) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, this.options);\n // BEWARE: by the time your setRawValue cleave options have changed thus number formatting\n cloneInstance.setRawValue(value.toString());\n // set the value with current format as placeholder\n super.setPlaceholderAttribute(cloneInstance.getFormattedValue());\n } else if (typeof value === 'string') {\n super.setPlaceholderAttribute(value.toString());\n } else if (isNaN(value)) {\n value = this._elementRef.nativeElement.placeholder;\n super.setPlaceholderAttribute(value.toString());\n }\n }\n\n /**\n * instantiate Cleave.js\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initCleave(onChangeCallback?: (obj: any) => any): void {\n // change the cleave prototype function to intercept onCut callback\n // and allow based on the event bubbling and disabled state\n // TIP: change behavior of onCut to stop in case bubble is canceled\n // TODO: See relevant issue https://github.com/nosir/cleave.js/issues/675\n const _onCut = Cleave.prototype['onCut'];\n Cleave.prototype['onCut'] = function (e: Event): void {\n // eslint-disable-next-line no-invalid-this\n if (!e.cancelBubble && !this.element.disabled) {\n // eslint-disable-next-line no-invalid-this\n _onCut.call(this, e);\n }\n };\n\n // in case options is undefined\n const opts: CleaveOptions = { ...this.options };\n\n // set the onValue change listener to keep the value at readOnly element in sync\n opts.onValueChanged = onChangeCallback || this.onValueChanged.bind(this);\n\n // in case round UP is enabled\n if (this._roundUp > 0) {\n const number = Number.parseFloat(this._elementRef.nativeElement.value);\n this._elementRef.nativeElement.value = this.decimalAdjust(number, this.roundUp * -1);\n }\n\n // create the Cleave instance with the new or updated options\n this.cleaveInstance = new Cleave(this._elementRef.nativeElement, opts);\n }\n\n /**\n * Updates the cleave options by destroying the current instance and creating another one while keeping the previous\n * value.\n */\n private updateOptions(localeUpdated = false): void {\n if (this.cleaveInstance) {\n // the value before destroying cleave instance\n const previousValue = this.cleaveInstance.getRawValue();\n\n // update the Cleave instance with the new or updated options\n this.cleaveInstance.properties = {\n ...this.cleaveInstance.properties,\n ...this.options,\n initValue: previousValue,\n };\n\n // init number formatter with updated options\n this.cleaveInstance.initNumeralFormatter();\n\n // In case previous settings where numeralDecimalMark='.' with value 1000.99, and they changed to\n // numeralDecimalMark=','; set initValue to 1000.99 or even 1000,99 will not be reflected and cleave will\n // remove the decimal part. Set of the value after initialization causes reformat of number and works.\n this.cleaveInstance.setRawValue(previousValue);\n\n // parse number\n const number = this.parseNumber(this._elementRef.nativeElement.placeholder || undefined, localeUpdated);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(number);\n }\n }\n\n /**\n * Callback function of the Cleave instance that is invoked when value is changed.\n *\n * @param event type of CleaveEventOnChange\n */\n private onValueChanged(event: CleaveEventOnChange): void {\n const { target } = event;\n\n if (this.fillFraction) {\n this.applyFractionFill(target.rawValue);\n }\n this.onChange(Number.parseFloat(target.rawValue));\n // fill leading zero\n if (this.leadingZero) {\n const size = this.leadingZero > this.digits && this.digits > 0 ? this.digits : this.leadingZero;\n this._elementRef.nativeElement.value = this.padZero(event.target.rawValue, size);\n }\n }\n\n /**\n * responsible to extract all locale information needed to build CleaveOptions related to number format.\n *\n * @param id The id of the locale\n */\n private getCleaveOptsBasedOnLocale(id: string): CleaveOptions {\n if (!id || id === '') {\n throw new Error('Locale id cannot be empty or undefined');\n }\n const opts: CleaveOptions = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(id, NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(id, NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand', // TODO: implement based on locale\n };\n\n return { ...this.options, ...opts };\n }\n\n /**\n * Applies the fill of decimal part with zeros in case decimal part of given number has\n * size less than the max fraction digits.\n *\n * @param number\n * @param cleaveInstance\n * @private\n */\n private applyFractionFill(number: string, cleaveInstance: CleaveInstance = this.cleaveInstance): void {\n // if fill fraction is enabled and there's cleave instance\n if (this.fillFraction) {\n if (this.cleaveInstance) {\n number = number?.toString();\n if (number === '' || !number) {\n return;\n }\n const hasDecimal = number.split('.').length > 1;\n // in case there's already decimal point in number\n if (hasDecimal) {\n const decimalSize = number.split('.')[1].length;\n // if size of decimal part of number is less than the max fraction digits\n if (decimalSize < this._fractionDigits) {\n number = number + new Array(this._fractionDigits - decimalSize).fill(0).join('');\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n // in case there's not, force it by filling it as much zero as the fraction digits\n } else if (this.fractionDigits > 0) {\n number = `${number}.${new Array(this._fractionDigits).fill(0).join('')}`;\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n }\n }\n }\n\n /**\n * Parses a given formatted number and returns it as a number.\n *\n * @param value The formatted number you want to parse e.g. 111,888.22\n * @param userPrevLocaleState Use previous locale state to parse the value. By default, is false\n * @private\n */\n private parseNumber(value: string, userPrevLocaleState = false): number {\n // locale state\n const locale = userPrevLocaleState ? this.localeService?.previousLocale : this.localeService?.currentLocale || this.locale_id;\n // get decimal and group symbols\n const decimalSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Decimal);\n const groupSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Group);\n // replace symbols to parse number\n const parsedNumber = value?.split(groupSymbol).join('').split(decimalSymbol).join('.');\n return Number.parseFloat(parsedNumber);\n }\n\n /**\n * Pad leading zero to the number\n *\n * @param num The number to add leading zero to\n * @param size Number of number's leading zero\n * @private\n */\n private padZero(num, size): string {\n num = num.toString();\n // get integer and decimal part\n // eslint-disable-next-line prefer-const\n let [integer, decimal] = num.split('.');\n while (integer.length < size) {\n integer = '0' + integer;\n }\n return decimal ? `${integer}.${decimal}` : integer;\n }\n\n /**\n * checks whether the min symbol is allowed. It is allowed when minus symbol\n * provided and min input is undefined or min provided and is negative.\n *\n * @param key The key string coming from an event\n */\n private isMinusAllowed(key: string): boolean {\n return !this.min || this.min < 0 ? key !== '-' : true;\n }\n\n /**\n * check whether the key entered is inside the min and\n * max range. Returns true if it's out of range.\n *\n * @param e A keyboard event\n */\n private isOutSideRange(e: KeyboardEvent): boolean {\n if (!this.cleaveInstance) {\n return false;\n }\n // get caret position\n const pos = e.target['selectionStart'];\n // get caret position (in case there's text selected)\n const endPos = e.target['selectionEnd'];\n // get current value (formatted)\n let value = e.target['value'];\n // remove key from value\n if (e.key === 'Delete' || e.key === 'Backspace') {\n // check if there's selection of text to be removed\n if (pos !== endPos) {\n value = e.target['value'].substring(0, pos) + e.target['value'].substring(endPos, e.target['value'].length);\n } else {\n value = e.target['value'].substring(0, pos - 1) + e.target['value'].substring(endPos, e.target['value'].length);\n }\n } else {\n // add key to the value\n value = [value.slice(0, pos), e.key, value.slice(endPos)].join('');\n }\n\n // create a Cleave instance to extract the number from formatted value\n const cleave: CleaveInstance = new Cleave(this.document.createElement('input'), { ...this.options });\n cleave.setRawValue(value);\n const number = Number(cleave.getRawValue());\n // destroy cleave instance\n cleave.destroy();\n return this.min >= 0 ? false : this.min > number || this.max < number;\n }\n\n /**\n * Decimal adjustment of a number.\n *\n * @param value The number.\n * @param exp The exponent (the 10 logarithm of the adjustment base).\n * @returns The adjusted value.\n */\n private decimalAdjust(value: number, exp: number): number {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math.round(value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n let cleaned = value.toString().split('e');\n value = Math.round(+(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] - exp : -exp)));\n // Shift back\n cleaned = value.toString().split('e');\n return +(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] + exp : exp));\n }\n}\n","import { Directive, ElementRef, forwardRef, OnInit, Optional } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CleaveInstance, EuiInputNumberComponent } from './eui-input-number.component';\nimport Cleave from 'cleave.js';\n\n@Directive({\n selector: 'input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiInputNumberDirective),\n multi: true,\n },\n ],\n})\nexport class EuiInputNumberDirective implements ControlValueAccessor, OnInit {\n /** hold a copy of the value */\n private value: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (t: any) => void;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() private euiNumberComponent: EuiInputNumberComponent,\n ) {}\n\n ngOnInit(): void {\n this.euiNumberComponent['initCleave'](this.valueChanges.bind(this));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(obj: any): void {\n const cleave: CleaveInstance = new Cleave(document.createElement('input'), { ...this.euiNumberComponent['options'] });\n cleave.setRawValue(obj);\n if (this.euiNumberComponent.fillFraction && obj !== '' && obj) {\n this.euiNumberComponent['applyFractionFill'](obj, cleave);\n }\n let valueOfElement: string;\n // fill leading zero\n if (this.euiNumberComponent.leadingZero) {\n const size =\n this.euiNumberComponent.leadingZero > this.euiNumberComponent.digits && this.euiNumberComponent.digits > 0\n ? this.euiNumberComponent.digits\n : this.euiNumberComponent.leadingZero;\n valueOfElement = this.euiNumberComponent['padZero'](cleave.getFormattedValue(), size);\n } else {\n valueOfElement = cleave.getFormattedValue();\n }\n this.elementRef.nativeElement.value = valueOfElement;\n this.value = Number.parseFloat(cleave.getRawValue());\n cleave.destroy();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = (t): void => {\n this.value = t;\n fn(t);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.euiNumberComponent.disabled = isDisabled;\n }\n\n private onTouched(): void {\n // this.euiNumberComponent.isInvalid = this.control.invalid;\n }\n\n private valueChanges(event): void {\n const { target } = event;\n\n this.euiNumberComponent['onValueChanged'](event);\n const numberCoerce = Number.parseFloat(target.rawValue);\n if (this.value !== numberCoerce && this.onChange) {\n this.onChange(isNaN(numberCoerce) ? null : numberCoerce);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiInputNumberComponent } from './eui-input-number.component';\nimport { EuiInputNumberDirective } from './eui-number-control.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n})\nexport class EuiInputNumberDirectiveModule {}\n\n// @NgModule({\n// imports: [CommonModule],\n// declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n// exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n// })\n// export class EuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiInputNumberComponent"],"mappings":"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"}