{"version":3,"file":"libs-ui-components-inputs-input.mjs","sources":["../../../../../../libs-ui/components/inputs/input/src/defines/index-iframe-area.define.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.html","../../../../../../libs-ui/components/inputs/input/src/libs-ui-components-inputs-input.ts"],"sourcesContent":["import { IIframeTextareaCustomStyle } from '../interfaces/focus-and-blur-event.interface';\n\nexport const indexInputHtml = (customStyle: IIframeTextareaCustomStyle) => `\n<!DOCTYPE html>\n<html>\n  <head>\n    <base href=\"/\" />\n  </head>\n  <style type=\"text/css\">\n  \t::-webkit-scrollbar {\n\t    width: 8px;\n\t    height: 8px;  \n\t    cursor: default;\n\t}\n\t    \n\t::-webkit-scrollbar-track {\n\t    border-radius: 0;\n\t    background: #fff;\n\t}\n\n\t    \n\t::-webkit-scrollbar-track:hover {\n\t    background: rgba(78, 78, 78, 0.05);\n\t}\n\n\t::-webkit-scrollbar-track:focus {\n\t    background: #b3b3b3;\n\t}\n\n\t::-webkit-scrollbar-track:checked {\n\t    background: #b3b3b3;\n\t}\n\t  \n\t    \n\t::-webkit-scrollbar-thumb {\n\t    border-radius: 0;\n\t    background: rgba(78, 78, 78, 0.15);\n\t    box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:hover {\n\t    background: #dadada;\n\t    box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:focus {\n\t    background: #b3b3b3;\n\t    box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:checked {\n\t    background: #b3b3b3;\n\t    box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\tbody{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n\n\ttextarea{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tresize: none;\n\t\tborder: none;\n\t\tborder: ${customStyle.borderColor ? ' 1px solid #e6e7ea;' : 'none'};\n\t\twidth: 100%;\n\t\tborder-radius: ${customStyle.borderRadius ?? '4px'};\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: ${customStyle.lineHeight ?? '16px'};\n\t\theight: ${customStyle.height ?? 'auto'};\n\t\tcolor: ${customStyle.color ?? '#4e4e4e'};\n\t\tpadding: ${customStyle.padding ?? '6px 12px'};\n\t\tbackground-color: ${customStyle.backgroundColor ?? '#fff'};\n\t\tfont-size: ${customStyle.fontSize ?? '12px'};\n\t\tfont-family:var(--libs-ui-font-family-name) !important;\n\t\toverflow: hidden;\n\t\tmargin: 0;\n\t\tresize: none;\n\t}\n\t${\n    customStyle.borderColor\n      ? `textarea:focus:not(:read-only):not(:disabled) {\n\t\tborder: 1px solid ${customStyle.borderColor};\n\t}`\n      : ''\n  }\n\n\ttextarea::-webkit-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-moz-placeholder {\n\t\t/* Firefox 18- */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea::-moz-placeholder {\n\t\t/* Firefox 19+ */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-ms-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:focus {\n    \toutline: none;\n\t}\n\t*, ::after, ::before {\n    \tbox-sizing: border-box;\n\t}\n \n  </style>\n\n  <body>\n\t  <textarea></textarea>\n  </body>\n</html>`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, TemplateRef, computed, effect, inject, input, model, output, signal, untracked, viewChild } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ISort, LibsUiComponentsButtonsSortComponent } from '@libs-ui/components-buttons-sort';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { IEvent, IEventCustom, IString, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiConfigProjectService } from '@libs-ui/services-config-project';\nimport { UtilsCache, UtilsKeyCodeConstant, UtilsLanguageConstants, formatNumber, isNil, isTypeFile, removeEmoji, setCaretPosition, uuid, viewDataNumberByLanguage } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { debounceTime, filter, mergeMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { indexInputHtml } from './defines/index-iframe-area.define';\nimport { IFocusAndBlurEvent, IIframeTextareaCustomStyle } from './interfaces/focus-and-blur-event.interface';\nimport { IInputFunctionControlEvent } from './interfaces/function-control-event.interface';\nimport { TYPE_DATA_TYPE_INPUT, TYPE_INPUT, TYPE_INPUT_RESIZE_MODE, TYPE_MODE_INPUT, TYPE_TAG_INPUT } from './interfaces/input.interface';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'libs_ui-components-inputs-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  standalone: true,\n  imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSortComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsInputComponent implements OnInit, OnDestroy {\n  // #region PROPERTY\n  protected disableAsc = signal(false);\n  protected disableDesc = signal(false);\n  protected htmlIframeArea = signal<SafeHtml | undefined>(undefined);\n  protected countDisplay = computed(this.countDisplayComputed.bind(this));\n  protected maxLengthDisplay = computed(() => `${viewDataNumberByLanguage(this.maxLength() || 0, false)}`);\n  protected paddingRightCustom = signal<number | undefined>(undefined);\n  protected inputIframeRef = signal<ElementRef | undefined>(undefined);\n\n  private readonly DEFAULT_MAX_HEIGHT_TEXT_AREA = 250;\n  private charFirstIsZero = signal<boolean>(false);\n  private preHeightArea = signal<number>(0);\n  private iframeRef: HTMLIFrameElement | undefined;\n  private dataTextPaste = signal<string>('');\n  private onDestroy = new Subject<void>();\n\n  // #region INPUT\n  readonly tagInput = input<TYPE_TAG_INPUT, TYPE_TAG_INPUT | undefined>('input', { transform: (value) => value || 'input' });\n  readonly dataType = input<TYPE_DATA_TYPE_INPUT, TYPE_DATA_TYPE_INPUT | undefined>('string', { transform: (val) => val || 'string' });\n  readonly typeInput = input<TYPE_INPUT, TYPE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n  readonly modeInput = input<TYPE_MODE_INPUT, TYPE_MODE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n\n  readonly tabInsertContentTagInput = input<boolean>(false);\n  readonly textAreaEnterNotNewLine = input<boolean>(false);\n  readonly emitEmptyInDataTypeNumber = input<boolean | undefined>(false);\n  readonly keepZeroInTypeInt = input<boolean>(false);\n  readonly autoAddZeroLessThan10InTypeInt = input<boolean | undefined>(false);\n  readonly ignoreBlockInputMaxValue = input<boolean>();\n  readonly maxValueNumber = model<number>();\n  readonly minValueNumber = model<number>();\n  readonly fixedFloat = model<number>();\n  readonly acceptNegativeValue = model<boolean | undefined>(false);\n  readonly valueUpDownNumber = input<number | undefined>();\n  readonly classInclude = input<string, string>(' w-full ', { transform: (value) => value || ' w-full ' });\n  readonly maxLength = model<number | undefined>();\n  readonly readonly = input<boolean | undefined>(false);\n  readonly disable = input<boolean | undefined>(false);\n  readonly noBorder = input<boolean>();\n  readonly backgroundNone = input<boolean | undefined>(false);\n  readonly borderError = input<boolean>(false);\n  readonly useColorModeExist = input<boolean | undefined>(false);\n  readonly placeholder = input<string, string>(' ', { transform: (value) => value || ' ' });\n  readonly keepPlaceholderOnly = input<boolean | undefined>(false);\n  readonly value = model<string | number>('');\n  readonly autoRemoveEmoji = input<boolean | undefined>(false);\n  readonly defaultHeight = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n  readonly minHeightTextArea = input<number | undefined>();\n  readonly maxHeightTextArea = input<number, number | undefined>(this.DEFAULT_MAX_HEIGHT_TEXT_AREA, { transform: (value) => value || this.DEFAULT_MAX_HEIGHT_TEXT_AREA });\n  readonly focusTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n  readonly selectAllTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n  readonly blurTimeOut = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n  readonly zIndexPopoverContent = input<number, number | undefined>(10, { transform: (value) => value || 10 });\n  readonly classContainerInput = input<string, string | undefined>('w-full', { transform: (value) => value || 'w-full' });\n  readonly showCount = input<boolean>();\n  readonly ignoreStopPropagationEvent = input<boolean>();\n  readonly resize = input<TYPE_INPUT_RESIZE_MODE, TYPE_INPUT_RESIZE_MODE>('vertical', { transform: (value) => value || 'vertical' });\n  readonly templateLeftBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n  readonly templateRightBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n  readonly classContainerBottomInput = input<string | undefined, string | undefined>(' ', { transform: (value) => value || ' ' });\n  readonly ignoreWidthInput100 = input<boolean>();\n  readonly iframeTextareaCustomStyle = input<IIframeTextareaCustomStyle>();\n\n  readonly iconLeftClass = input<string, string | undefined>('', { transform: (value) => value || '' });\n  readonly popoverContentIconLeft = input<string, string | undefined>('', { transform: (value) => value || '' });\n  readonly iconRightClass = input<string | undefined>();\n  readonly popoverContentIconRight = input<string, string | undefined>('', { transform: (value) => value || '' });\n  readonly resetAutoCompletePassword = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n  readonly acceptOnlyClickIcon = input<boolean | undefined>(false);\n  readonly setIconRightColorSameColorDisableReadOnly = input<boolean | undefined>(false);\n  readonly onlyAcceptNegativeValue = input<boolean | undefined>(false);\n  readonly maxLengthNumberCount = model<number | undefined>();\n  readonly focusInput = input<boolean>(false);\n\n  // #region OUTPUT\n  readonly outHeightAreaChange = output<{ isChange: boolean; height: number }>();\n  readonly outChange = output<any>();\n  readonly outFocusAndBlurEvent = output<IFocusAndBlurEvent>();\n  readonly outEnterEvent = output<IEvent>();\n  readonly outInputEvent = output<IEvent>(); // emit pure event input\n  readonly outIconLeft = output<string>();\n  readonly outIconRight = output<string>();\n  readonly outFunctionsControl = output<IInputFunctionControlEvent>();\n  readonly outFilesDrop = output<Array<File>>();\n  readonly outFileDrop = output<File>();\n  readonly outChangeValueByButtonUpDown = output<void>();\n\n  /* VIEW CHILD */\n  protected inputRef = viewChild<ElementRef>('inputRef');\n  protected textCountRef = viewChild<ElementRef>('textCountRef');\n  protected elementRightRef = viewChild<ElementRef>('elementRightRef');\n\n  // #region INJECT\n  private renderer = inject(Renderer2);\n  private configProjectService = inject(LibsUiConfigProjectService);\n  private translateService = inject(TranslateService);\n  private sanitizer = inject(DomSanitizer);\n\n  constructor() {\n    effect(\n      () => {\n        if (this.onlyAcceptNegativeValue()) {\n          this.acceptNegativeValue.set(true);\n        }\n        if (!this.Element) {\n          return;\n        }\n\n        if (this.dataType() === 'string') {\n          if (this.Element.value !== this.value()) {\n            this.init();\n          }\n\n          return;\n        }\n        this.updateMaxLengthMinMaxValueByDataType();\n        const value = this.parseValueByDataType(this.Element.value);\n\n        if ((this.Element.value !== '' && value === this.value()) || (this.Element.value === '' && this.emitEmptyInDataTypeNumber() && this.value() === undefined)) {\n          return;\n        }\n        this.init();\n      },\n      { allowSignalWrites: true }\n    );\n    effect(() => {\n      if (this.Element) {\n        this.onDestroy.next();\n        untracked(() => this.afterViewInit());\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.htmlIframeArea.set(this.sanitizer.bypassSecurityTrustHtml(indexInputHtml(this.iframeTextareaCustomStyle() || { borderColor: this.noBorder() ? '' : `${this.configProjectService.colorStepContrastFromOrigin(20)?.light}` })));\n  }\n\n  afterViewInit() {\n    if (!this.Element) {\n      return;\n    }\n    this.outHeightAreaChange.emit({ isChange: false, height: this.Element?.scrollHeight });\n    this.outFunctionsControl.emit(this.FunctionsControl);\n    this.init();\n\n    this.initEvent('focus', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'focus', event: e }));\n    this.initEvent('blur', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'blur', event: e }));\n    const mouseDownEvent = this.initEvent('mousedown', this.ignoreStopPropagationEvent()).pipe(take(1));\n    const keyDownEvent = this.initEvent('keydown', this.ignoreStopPropagationEvent());\n    const inputEvent = this.initEvent('input', this.ignoreStopPropagationEvent());\n    const cutEvent = this.initEvent('cut', this.ignoreStopPropagationEvent());\n    const pasteEvent = this.initEvent('paste', this.ignoreStopPropagationEvent());\n    const keyupEvent = this.initEvent('keyup', this.ignoreStopPropagationEvent());\n\n    this.initEvent('click', this.ignoreStopPropagationEvent() ?? true).subscribe();\n    this.initEvent('dragover', this.ignoreStopPropagationEvent())\n      .pipe(\n        tap((event: IEvent) => {\n          event.preventDefault();\n          event.stopPropagation();\n          if (event.dataTransfer) {\n            event.dataTransfer.dropEffect = 'copy';\n          }\n        })\n      )\n      .subscribe();\n\n    this.initEvent('drop', this.ignoreStopPropagationEvent()).subscribe(this.checkAndEmitFiles.bind(this));\n    pasteEvent.subscribe(this.checkAndEmitFiles.bind(this));\n\n    this.combineObservable(mouseDownEvent, pasteEvent);\n    this.combineObservable(mouseDownEvent, cutEvent);\n    keyDownEvent\n      .pipe(\n        take(1),\n        tap((e: IEvent) => this.checkTypeNumber(e, 'key')),\n        mergeMap(() => inputEvent),\n        tap((e: IEvent) => this.checkTypeNumber(e, 'data'))\n      )\n      .subscribe((e: IEvent) => {\n        if (this.dataType() === 'string' && this.maxLength() && (e.inputType === 'insertCompositionText' || e.inputType === 'insertText') && e.target.value?.length > (this.maxLength() || 0)) {\n          e.target.value = e.target.value.slice(0, this.maxLength());\n        }\n        this.processEventAndEmitValue(e);\n      });\n\n    keyupEvent\n      .pipe(\n        filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER),\n        filter((event: IEvent) => !this.textAreaEnterNotNewLine() || (this.textAreaEnterNotNewLine() && !event.shiftKey))\n      )\n      .subscribe((event: IEvent) => this.outEnterEvent.emit(event));\n\n    if (this.dataType() === 'string' && (this.tagInput() !== 'input' || (this.tagInput() === 'input' && this.tabInsertContentTagInput()))) {\n      keyDownEvent\n        .pipe(\n          filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.TAB),\n          tap((event: IEvent) => event.preventDefault()),\n          filter((event: IEvent) => !event.target.value || !this.maxLength() || event.target.value.length < (this.maxLength() || 25)),\n          tap((event: IEvent) => {\n            if (this.readonly() || this.disable()) {\n              return;\n            }\n            this.insetValueToSelectionStart('\\t', event);\n          })\n        )\n        .subscribe();\n    }\n\n    if (this.textAreaEnterNotNewLine()) {\n      keyDownEvent\n        .pipe(\n          filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER && !event.shiftKey),\n          tap((e: IEvent) => e.preventDefault())\n        )\n        .subscribe();\n    }\n\n    this.countDisplayComputed();\n  }\n\n  // #region FUNCTIONS\n  public get FunctionsControl(): IInputFunctionControlEvent {\n    return {\n      focus: this.focus.bind(this),\n      blur: this.blur.bind(this),\n      insertContent: this.addDataToSelectionInput.bind(this),\n      resetValue: this.resetValue.bind(this),\n      getElementValue: this.getElementValue.bind(this),\n      checkAndDisableUpDownButton: this.checkAndDisableUpDownButton.bind(this),\n      selectAllContent: this.selectAllContent.bind(this),\n    };\n  }\n\n  private updateMaxLengthMinMaxValueByDataType() {\n    if (this.dataType() === 'int' || this.dataType() === 'float') {\n      this.maxLength.update((value) => {\n        return !value || value > 21 ? 21 : value;\n      });\n      this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n      this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n    }\n    if (this.dataType() === 'bigint') {\n      this.maxLength.update((value) => (!value || value > 25 ? 25 : value));\n      this.fixedFloat.update((value) => value ?? 4);\n      this.maxLengthNumberCount.update((value) => value ?? 19);\n    }\n  }\n\n  private async getElementValue() {\n    return this.Element?.value;\n  }\n\n  private checkAndEmitFiles(event: IEvent) {\n    const files = event.dataTransfer?.files || event.clipboardData?.files;\n    const text = (event.clipboardData || (window as any).clipboardData)?.getData('text');\n\n    this.dataTextPaste.set(text);\n    if (!files || !files.length) {\n      return;\n    }\n    if (!text) {\n      event.preventDefault();\n    }\n    event.stopPropagation();\n    const fileList = [];\n\n    for (const file of Array.from(files)) {\n      if (isTypeFile(file)) {\n        this.outFileDrop.emit(file);\n        fileList.push(file);\n      }\n    }\n    this.outFilesDrop.emit(fileList);\n  }\n\n  private insetValueToSelectionStart(text: string, event: IEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.Element.setRangeText(text, this.Element.selectionStart, this.Element.selectionStart, 'end');\n    this.processEventAndEmitValue(event);\n  }\n\n  private get Element() {\n    return this.inputIframeRef()?.nativeElement || this.inputRef()?.nativeElement;\n  }\n\n  protected handlerChangeValue(data: ISort) {\n    data.reset();\n    if (this.disable() || this.readonly()) {\n      return;\n    }\n    const operator = data.mode === 'asc' ? 1 : -1;\n    let value = +this.value() || 0;\n    const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n    const splitValue = (this.value() || this.minValueNumber() || 0).toString().split(separator);\n    const dataBehindSeparator = splitValue?.[1];\n\n    if (this.dataType() === 'bigint') {\n      value = +(splitValue?.[0] || 0);\n    }\n    value = value + (this.valueUpDownNumber() ?? 1) * operator;\n    if (!this.acceptNegativeValue() && value < 0) {\n      value = 0;\n    }\n    const dataEmit = this.dataType() === 'bigint' ? `${value}${dataBehindSeparator ? separator : ''}${dataBehindSeparator}` : value;\n    this.value.set(dataEmit);\n    this.outChange.emit(dataEmit);\n    this.outChangeValueByButtonUpDown.emit();\n    this.checkAndDisableUpDownButton(value);\n  }\n\n  protected handlerEventIconLeft(e: Event, eventName: string) {\n    e.stopPropagation();\n    if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n      return;\n    }\n    this.outIconLeft.emit(eventName);\n  }\n\n  protected handlerEventIconRight(e: Event, eventName: string) {\n    e.stopPropagation();\n    if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n      return;\n    }\n    this.outIconRight.emit(eventName);\n  }\n\n  private async checkAndDisableUpDownButton(value: number) {\n    if (this.dataType() !== 'int' && this.dataType() !== 'float' && this.dataType() !== 'bigint') {\n      return;\n    }\n    this.disableAsc.set(false);\n    this.disableDesc.set(false);\n    this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n    this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n    value = value ?? 0;\n\n    if (!isNil(this.maxValueNumber()) && value >= (this.maxValueNumber() ?? Number.MAX_SAFE_INTEGER)) {\n      this.disableAsc.set(true);\n    }\n\n    if (!isNil(this.minValueNumber()) && value <= (this.minValueNumber() || 0)) {\n      this.disableDesc.set(true);\n    }\n  }\n\n  protected initEvent(eventName: string, ignoreStopPropagationEvent?: boolean): Observable<IEvent> {\n    return fromEvent<IEvent>(this.Element, eventName).pipe(\n      tap((e: IEvent) => {\n        if (!ignoreStopPropagationEvent) {\n          e.stopPropagation();\n        }\n        this.outInputEvent.emit(e);\n      }),\n      takeUntil(this.onDestroy)\n    );\n  }\n\n  private convertValue(value: string) {\n    if (value && this.dataType() === 'bigint') {\n      const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n      let [int, decimal] = value.split(separator);\n      const decimalSplit = decimal ? decimal.split('') : [];\n      const decimalEveryZero = decimalSplit.every((item) => item === '0');\n\n      if (int === '-0' && (!decimal || decimalEveryZero)) {\n        int = '0';\n      }\n      if (!decimal || decimalEveryZero) {\n        decimal = '0';\n      }\n      if (decimalSplit.some((item) => item !== '0')) {\n        const decimalReverse = decimalSplit.reverse().join('');\n\n        decimal = decimalReverse\n          .replace(/(^[0]+)/, '')\n          .split('')\n          .reverse()\n          .join('');\n      }\n\n      return `${int}${separator}${decimal}`;\n    }\n\n    return value;\n  }\n\n  private init() {\n    if (!this.maxLength()) {\n      this.updateMaxLengthMinMaxValueByDataType();\n    }\n    if (!this.Element) {\n      return;\n    }\n    let elementValue = this.convertValue(`${this.value() ?? ''}`);\n\n    if (this.dataType() !== 'string') {\n      elementValue = elementValue.replace(new RegExp(`[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`, 'g'), '');\n      if (UtilsCache.getLang() === UtilsLanguageConstants.EN) {\n        elementValue = elementValue.replace(/[,]/, '');\n      }\n    }\n    this.Element.value = elementValue;\n\n    const eventFake: IEventCustom = {\n      preventDefault: () => {\n        return;\n      },\n      target: this.Element,\n      data: elementValue,\n      fakeEvent: true,\n    };\n\n    this.checkTypeNumber(eventFake, 'data');\n    this.processEventAndEmitValue(eventFake);\n  }\n\n  private processEventAndEmitValue(e: IEvent | IEventCustom): void {\n    const value: any = this.parseValueByDataType(e.target.value);\n\n    if (this.dataType() !== 'string' && !this.ignoreBlockInputMaxValue() && !isNil(this.maxValueNumber()) && value > (this.maxValueNumber() || 0) && this.value() < value) {\n      const valueDisplay = viewDataNumberByLanguage(`${this.value()}`.replace(/[.]/g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n      e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n      return this.processEventAndEmitValue(e);\n    }\n    if (this.dataType() !== 'string' && isNil(value)) {\n      e.target.value = 0;\n\n      return this.processEventAndEmitValue(e);\n    }\n\n    if (e.fakeEvent && (`${this.value() ?? ''}` === `${value}` || (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === ''))) {\n      this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n\n      setTimeout(() => {\n        this.calculatorHeightTextArea(e);\n      }, 250);\n\n      return;\n    }\n    this.value.set(value);\n    if (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === '') {\n      const dataEmit = this.dataType() === 'string' ? '' : undefined;\n      this.value.set(dataEmit as any);\n    }\n    this.outChange.emit(this.value());\n    this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n    this.calculatorHeightTextArea(e);\n  }\n\n  private checkMaxLengthNumberAndSetValue(valueDisplay: string, e: IEvent | IEventCustom): boolean {\n    if (isNil(this.value()) || (+this.value() > 0 && this.parseValueByDataType(valueDisplay) < this.value()) || (+this.value() < 0 && this.parseValueByDataType(valueDisplay) > this.value())) {\n      return false;\n    }\n    const valueCompare = formatNumber(valueDisplay).toString();\n    const numbers = valueCompare.split('.');\n    let lengthValueCompare = 0;\n    let maxLength = this.acceptNegativeValue() && typeof +this.value() === 'number' && +this.value() < 0 ? (this.maxLength() || 21) + 1 : this.maxLength() || 21;\n\n    if (this.dataType() === 'float') {\n      maxLength--;\n    }\n    if (numbers && numbers[0]) {\n      lengthValueCompare = viewDataNumberByLanguage(`${numbers[0]}`.replace(/[.]/g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14).length;\n    }\n    if (numbers && numbers[1]) {\n      lengthValueCompare += 1 + numbers[1].length;\n    }\n    if (maxLength && lengthValueCompare >= maxLength) {\n      const valueDisplay = viewDataNumberByLanguage((lengthValueCompare === maxLength ? valueCompare : `${this.value()}`).replace(/[.]/g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n      e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n      return true;\n    }\n\n    return false;\n  }\n\n  private checkTypeNumber(e: IEvent | IEventCustom, fieldName: string) {\n    const currentLang = UtilsCache.getLang();\n    const separator = currentLang === UtilsLanguageConstants.VI ? '.' : ',';\n    const separatorRevert = currentLang === UtilsLanguageConstants.VI ? ',' : '.';\n    let valueTarget: IString = e.target.value;\n    const selectionStart = e.target.selectionStart - 1;\n    const { data, keyCode } = e;\n\n    this.charFirstIsZero.set(false);\n    if (valueTarget.charAt(0) === '0') {\n      this.charFirstIsZero.set(true);\n    }\n\n    if (this.dataType() === 'string') {\n      if (this.autoRemoveEmoji()) {\n        e.target.value = removeEmoji(valueTarget);\n      }\n\n      return;\n    }\n    if (/[0-9]/g.test(data) && valueTarget.charAt(selectionStart + 1) === '-') {\n      valueTarget = valueTarget.replaceAt(0, '') as IString;\n    }\n    let strRegex = `[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`;\n\n    if (new RegExp(strRegex, 'gi').test((e as any)[fieldName]) && keyCode !== UtilsKeyCodeConstant.BACKSPACE) {\n      e.preventDefault();\n      e.target.value = valueTarget = e.target.value.replace(new RegExp(strRegex, 'gi'), '') as IString;\n    }\n    if (!e.fakeEvent) {\n      switch (data) {\n        case separator:\n          valueTarget = valueTarget.replace(new RegExp(`[${separator}]`, 'gi'), '') as IString;\n          break;\n\n        case separatorRevert: {\n          if (currentLang === UtilsLanguageConstants.VI && this.dataType() === 'int') {\n            e.target.value = valueTarget.replace(new RegExp(`[${separatorRevert}]`, 'gi'), '') as IString;\n\n            return;\n          }\n          if (valueTarget === separatorRevert) {\n            e.target.value = '';\n\n            return;\n          }\n          if (valueTarget && valueTarget.length === 2 && valueTarget.charAt(0) === '-' && data && !/[0-9]/g.test(data)) {\n            e.target.value = '-';\n\n            return;\n          }\n          const occurrencesByCharacter = valueTarget.occurrencesByCharacter(separatorRevert);\n\n          if (occurrencesByCharacter > 1) {\n            valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n            break;\n          }\n          let maxLength = this.dataType() === 'float' ? (this.maxLength() || 21) - 1 : this.maxLength() || 21;\n\n          if (valueTarget.indexOf('-') >= 0) {\n            maxLength++;\n          }\n          if (occurrencesByCharacter === 1 && valueTarget.length === maxLength && valueTarget.indexOf(separatorRevert) === valueTarget.length - 1) {\n            valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n            break;\n          }\n          if (this.onlyAcceptNegativeValue() && valueTarget === `0${separatorRevert}`) {\n            e.target.value = '0';\n            break;\n          }\n          const valueBeforeFormat = e.target.value;\n          const valueAfterFormat = viewDataNumberByLanguage(e.target.value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n          if (valueBeforeFormat === valueAfterFormat) {\n            return;\n          }\n          e.target.value = valueAfterFormat;\n        }\n      }\n      valueTarget = formatNumber(valueTarget) as IString;\n    }\n    const indexesOfDash = valueTarget.indexesOfCharacter?.('-') || [];\n\n    if (indexesOfDash.length) {\n      const [firstIndex, secondIndex] = indexesOfDash;\n      const indexReplace = firstIndex || secondIndex; // firstIndex=0 thì ko xóa\n\n      if (indexReplace) {\n        valueTarget = valueTarget.replaceAll(indexReplace, '-', '') as IString;\n      }\n    }\n    if (this.acceptNegativeValue() && valueTarget === '-') {\n      e.target.value = valueTarget;\n\n      return;\n    }\n    switch (this.dataType()) {\n      case 'int': {\n        strRegex = `[^0-9${this.acceptNegativeValue() ? '-' : ''}]`;\n        if (!e.fakeEvent) {\n          valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n          const maxTotalNumber = valueTarget.includes('-') ? 17 : 16;\n\n          if (valueTarget.length > maxTotalNumber) {\n            valueTarget = valueTarget.slice(0, maxTotalNumber) as IString;\n          }\n          if (Math.abs(parseInt(valueTarget)) > (this.maxValueNumber() ?? 9007199254740991)) {\n            valueTarget = valueTarget.slice(0, maxTotalNumber - 1) as IString;\n          }\n          if (this.onlyAcceptNegativeValue() && valueTarget[0] !== '-' && valueTarget[0] !== '0') {\n            valueTarget = '' as IString;\n          }\n          if (valueTarget && /(^-)?(^[0]+)/.test(valueTarget)) {\n            const id = uuid();\n\n            valueTarget = valueTarget.replace(/(^-)?(^[0]+)/, `$1${id}`).replace(id, '0') as IString;\n          }\n          if (valueTarget === '-0') {\n            valueTarget = '0' as IString;\n          }\n          if (valueTarget && /(^[0])([1-9])([0-9]+)?/.test(valueTarget)) {\n            valueTarget = valueTarget.replace(/(^[0])([1-9])([0-9]+)?/, '$2$3') as IString;\n          }\n          const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n          if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n            break;\n          }\n          e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n          break;\n        }\n        const indexOfDot = valueTarget.indexOf('.');\n        const indexOfComma = valueTarget.indexOf(',');\n        let indexChoose = indexOfDot;\n\n        if (indexOfDot < 0 || indexOfDot > indexOfComma) {\n          indexChoose = indexOfComma;\n        }\n        if (indexChoose >= 0) {\n          valueTarget = valueTarget.substring(0, indexChoose) as IString;\n        }\n        const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n        if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n          break;\n        }\n        e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n        break;\n      }\n\n      case 'float':\n\n      // eslint-disable-next-line no-fallthrough\n      case 'bigint':\n        this.getValueFormat(e, valueTarget, separator, separatorRevert, currentLang);\n        break;\n    }\n    if (valueTarget === 'NaN') {\n      e.target.value = '' as IString;\n    }\n    if (e.fakeEvent || data === undefined) {\n      return;\n    }\n    this.setCaretPosition(e, selectionStart + 1);\n  }\n\n  private getValueFormat(e: IEvent | IEventCustom, valueTarget: IString, separator: '.' | ',', separatorRevert: '.' | ',', currentLang: string) {\n    let strRegex = `[^0-9${separator}${currentLang === UtilsLanguageConstants.EN ? '.' : ''}${this.acceptNegativeValue() ? '-' : ''}]`;\n\n    if (!e.fakeEvent) {\n      valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n    }\n    const indexesOfSeparator = valueTarget.indexesOfCharacter(separator);\n    const [firstIndex, secondIndex] = indexesOfSeparator;\n\n    if (secondIndex) {\n      valueTarget = e.target.value.replaceAll(secondIndex, separator, '');\n    }\n    if (firstIndex && valueTarget.substring(firstIndex + 1).length >= (this.fixedFloat() ?? 14)) {\n      valueTarget = valueTarget.substring(0, firstIndex + (this.fixedFloat() ?? 14) + 1) as IString;\n    }\n    strRegex = `[${separator}]`;\n    valueTarget = valueTarget.replace(new RegExp(strRegex, 'g'), separatorRevert) as IString;\n    let valueFormat = '';\n    let [fontSeparatorNumber, behindSeparatorNumber] = valueTarget.split(separatorRevert);\n    let maxFontTotalNumber = fontSeparatorNumber && fontSeparatorNumber.includes('-') ? 16 : 15;\n\n    if (this.dataType() === 'bigint') {\n      maxFontTotalNumber = (this.maxLengthNumberCount() ?? 19) - (this.fixedFloat() ?? 4) + (fontSeparatorNumber.includes('-') ? 1 : 0);\n    }\n    const fontOverMaxTotalNumber = fontSeparatorNumber && fontSeparatorNumber.length >= maxFontTotalNumber;\n\n    if (fontOverMaxTotalNumber) {\n      fontSeparatorNumber = fontSeparatorNumber.slice(0, maxFontTotalNumber) as IString;\n      if (this.dataType() === 'float') {\n        behindSeparatorNumber = '';\n      }\n    }\n    switch (this.dataType()) {\n      case 'float':\n        if (!fontOverMaxTotalNumber && behindSeparatorNumber && behindSeparatorNumber.length) {\n          behindSeparatorNumber = behindSeparatorNumber.slice(0, maxFontTotalNumber - fontSeparatorNumber.length);\n        }\n        behindSeparatorNumber = `${behindSeparatorNumber ?? ''}`;\n        break;\n\n      case 'bigint':\n        if (behindSeparatorNumber && behindSeparatorNumber.length && behindSeparatorNumber.length > (this.fixedFloat() ?? 4)) {\n          behindSeparatorNumber = behindSeparatorNumber.slice(0, this.fixedFloat() ?? 4);\n        }\n        break;\n    }\n    const indexOfSeparatorRevert = valueTarget.indexOf(separatorRevert);\n\n    if (this.onlyAcceptNegativeValue() && fontSeparatorNumber[0] !== '-' && fontSeparatorNumber[0] !== '0') {\n      fontSeparatorNumber = '';\n    }\n    if (this.onlyAcceptNegativeValue() && indexOfSeparatorRevert >= 0 && fontSeparatorNumber[0] !== '-') {\n      fontSeparatorNumber = '0';\n      behindSeparatorNumber = this.dataType() === 'bigint' ? '0' : '';\n    }\n    if (fontSeparatorNumber && /(^-)([0]+)/.test(fontSeparatorNumber)) {\n      const id = uuid();\n\n      fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)([0]+)/, `$1${id}`).replace(id, '0');\n    }\n    if (fontSeparatorNumber && /(^[0]+)/.test(fontSeparatorNumber)) {\n      fontSeparatorNumber = fontSeparatorNumber.replace(/(^[0]+)/, '0');\n    }\n    if (/(^-)([0]+)([1-9])([0-9.]+)?/.test(fontSeparatorNumber)) {\n      fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)([0]+)([1-9])([0-9.]+)?/, '$1$3$4');\n    }\n    if (/(^[0]+)([1-9])([0-9.]+)?/.test(fontSeparatorNumber)) {\n      fontSeparatorNumber = fontSeparatorNumber.replace(/(^[0]+)([1-9])([0-9.]+)?/, '$2$3');\n    }\n    switch (this.dataType()) {\n      case 'float':\n        if (/(^[0]{6})/.test(behindSeparatorNumber)) {\n          behindSeparatorNumber = behindSeparatorNumber.replace(/(^[0]{6})/, '00000');\n        }\n        break;\n\n      case 'bigint':\n        if (/(^[0]{4})/.test(behindSeparatorNumber)) {\n          behindSeparatorNumber = behindSeparatorNumber.replace(/(^[0]{4})/, '0000');\n        }\n        break;\n    }\n    if (fontSeparatorNumber) {\n      fontSeparatorNumber = viewDataNumberByLanguage(fontSeparatorNumber, this.acceptNegativeValue(), this.fixedFloat() ?? (this.dataType() === 'bigint' ? 4 : 14));\n    }\n    const hasSeparatorRevert = (this.dataType() === 'bigint' ? true : !fontOverMaxTotalNumber) && indexOfSeparatorRevert >= 0;\n\n    valueFormat = `${fontSeparatorNumber ?? ''}${hasSeparatorRevert ? separatorRevert : ''}${behindSeparatorNumber ?? ''}`;\n    if (valueFormat && this.onlyAcceptNegativeValue() && valueFormat[0] !== '-' && valueFormat[0] !== '0') {\n      valueFormat = '0';\n    }\n    if (this.checkMaxLengthNumberAndSetValue(valueFormat, e)) {\n      valueTarget = e.target.value;\n\n      return;\n    }\n    valueTarget = e.target.value = valueFormat as IString;\n  }\n\n  private getCheckZero(value: number, targetCurrent: string): string {\n    let zero = '';\n\n    if (this.dataType() !== 'int') {\n      return zero;\n    }\n\n    if (this.charFirstIsZero() && this.keepZeroInTypeInt() && value !== 0) {\n      zero = '0';\n    }\n\n    if (this.charFirstIsZero() && this.autoAddZeroLessThan10InTypeInt() && ((value > 0 && value < 10 && !/(^0)+/.test(`${targetCurrent}`)) || (targetCurrent && targetCurrent.match(/^[0]{2,}$/)?.length && value === 0))) {\n      zero = '0';\n    }\n\n    return zero;\n  }\n\n  private setCaretPosition(e: IEvent | IEventCustom, selectionStart: number) {\n    const { keyCode, inputType } = e;\n\n    if (keyCode === UtilsKeyCodeConstant.UP_ARROW || keyCode === UtilsKeyCodeConstant.DOWN_ARROW || keyCode === UtilsKeyCodeConstant.LEFT_ARROW || keyCode === UtilsKeyCodeConstant.RIGHT_ARROW) {\n      return;\n    }\n    const valueTarget = e.target.value.replace('-', '');\n    let value = UtilsCache.getLang() === UtilsLanguageConstants.VI ? `${this.value() || 0}`.replace('.', ',') : `${this.value() || 0}`;\n\n    value = viewDataNumberByLanguage(value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n    value = `${value}`.replace('-', '');\n\n    if (value === valueTarget && value !== '0' && value !== '-') {\n      setCaretPosition(this.Element, selectionStart);\n\n      return;\n    }\n\n    let factor = 0;\n    const distance = valueTarget.length - value.length;\n    if (distance < -1) {\n      factor = -1;\n    }\n    if (distance > 1) {\n      factor = 1;\n    }\n    selectionStart += factor;\n    if (inputType === 'insertFromPaste' && this.dataTextPaste()) {\n      const dataTextDisplay = `${viewDataNumberByLanguage(this.dataTextPaste(), this.acceptNegativeValue(), this.fixedFloat() ?? 14)}`;\n      const indexes: Array<number> = e.target.value.indexesByString(dataTextDisplay);\n\n      selectionStart -= factor;\n\n      if (indexes.some((index) => index === selectionStart) || !indexes.length) {\n        return setCaretPosition(this.Element, selectionStart);\n      }\n\n      let newSelectionStart = indexes[0];\n\n      for (const index of indexes) {\n        let replaceValue = formatNumber(`${valueTarget.substring(0, index)}${valueTarget.substring(index + dataTextDisplay.length + 1, valueTarget.length)}`);\n\n        replaceValue = viewDataNumberByLanguage(replaceValue, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n        if (value === replaceValue) {\n          newSelectionStart = index;\n          break;\n        }\n      }\n\n      if (newSelectionStart >= 0) {\n        selectionStart = newSelectionStart + dataTextDisplay.length + 1;\n\n        return setCaretPosition(this.Element, selectionStart);\n      }\n    }\n\n    setCaretPosition(this.Element, selectionStart);\n  }\n\n  private parseValueByDataType(value: string): number | string {\n    switch (this.dataType()) {\n      case 'string':\n        return value;\n\n      case 'int':\n        if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n          return 0;\n        }\n\n        return +formatNumber(value);\n\n      case 'float':\n        if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n          return 0;\n        }\n\n        return parseFloat((+formatNumber(value)).toFixed(this.fixedFloat() ?? 14));\n\n      case 'bigint':\n        if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n          return '0';\n        }\n\n        return formatNumber(value);\n    }\n  }\n\n  private calculatorHeightTextArea(e: IEvent | IEventCustom) {\n    if (this.tagInput() === 'input') {\n      return;\n    }\n    const target = e.target;\n\n    target.style.overflow = 'hidden';\n    target.style.height = `${this.defaultHeight()}px`;\n    const { scrollHeight } = target;\n\n    const height = scrollHeight + 2; //  border top + bottom = 2\n\n    if (!this.preHeightArea() && this.preHeightArea() !== height) {\n      this.outHeightAreaChange.emit({ isChange: true, height: height });\n    }\n\n    if (height > (this.maxHeightTextArea() ?? 32)) {\n      target.style.overflow = 'auto';\n    }\n    if (this.iframeRef) {\n      this.iframeRef.style.height = `${height}px`;\n    }\n    target.style.height = `${height}px`;\n    this.preHeightArea.set(height);\n  }\n\n  private combineObservable(mouseDownEvent: Observable<IEvent>, observableMerge: Observable<IEvent>) {\n    mouseDownEvent\n      .pipe(\n        mergeMap(() => observableMerge),\n        debounceTime(0),\n        tap((e: IEvent) => this.checkTypeNumber(e, 'key'))\n      )\n      .subscribe((e: IEvent) => this.processEventAndEmitValue(e));\n  }\n\n  private async focus(emitEvent?: boolean) {\n    setTimeout(() => {\n      this.Element?.focus();\n      if (emitEvent) {\n        this.outFocusAndBlurEvent.emit({ name: 'focus', event: { target: this.Element } as unknown as IEvent });\n      }\n    }, this.focusTimeOut());\n  }\n\n  private async blur(emitEvent?: boolean) {\n    setTimeout(() => {\n      this.Element?.blur();\n      if (emitEvent) {\n        this.outFocusAndBlurEvent.emit({ name: 'blur', event: { target: this.Element } as unknown as IEvent });\n      }\n    }, this.blurTimeOut());\n  }\n\n  private async addDataToSelectionInput(data: string | number) {\n    const target = this.Element;\n    const selectionStart = target.selectionStart;\n\n    const value = this.Element.value;\n    const beforeValue = value.substring(0, selectionStart);\n    const afterValue = value.substring(selectionStart);\n\n    this.Element.value = `${beforeValue}${data}${afterValue}`;\n    setCaretPosition(this.Element, selectionStart + data.toString().length);\n    const eventFake: IEventCustom = {\n      preventDefault: () => {\n        return;\n      },\n      target: this.Element,\n      data: '',\n      fakeEvent: true,\n    };\n\n    this.processEventAndEmitValue(eventFake);\n  }\n\n  protected handlerOnLoad(e: Event, element: HTMLIFrameElement) {\n    e.stopPropagation();\n    this.iframeRef = element;\n    const iframe: any = element.contentWindow || element.contentDocument;\n    this.configProjectService.setupFontFamily(iframe.document);\n\n    this.inputIframeRef.set({ nativeElement: iframe.document.getElementsByTagName('TEXTAREA')[0] });\n    if (this.Element) {\n      this.renderer.setAttribute(this.Element, 'placeholder', this.translateService.instant(this.placeholder()));\n      if (this.disable()) {\n        this.renderer.setAttribute(this.Element, 'disabled', 'true');\n      }\n      this.afterViewInit();\n    }\n  }\n\n  private async resetValue() {\n    const value = '';\n\n    this.Element.value = value;\n    this.value.set(value);\n    this.outChange.emit(value);\n  }\n\n  private countDisplayComputed() {\n    if ((this.dataType() !== 'string' && this.valueUpDownNumber()) || !isNil(this.iconRightClass())) {\n      setTimeout(() => {\n        this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n      });\n    }\n    if (!this.showCount() || this.dataType() !== 'string' || typeof this.value() !== 'string') {\n      return '0';\n    }\n    setTimeout(() => {\n      this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n      if (this.showCount()) {\n        if (this.textCountRef()) {\n          this.paddingRightCustom.set(this.textCountRef()?.nativeElement.clientWidth + 16);\n        }\n\n        if (this.tagInput() === 'input') {\n          this.paddingRightCustom.update((value) => {\n            return value + (this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0);\n          });\n        }\n      }\n    });\n\n    return `${viewDataNumberByLanguage((this.value() as string).length, false)}`;\n  }\n\n  private async selectAllContent() {\n    setTimeout(() => {\n      this.Element?.select();\n    }, this.selectAllTimeOut());\n  }\n\n  ngOnDestroy(): void {\n    this.onDestroy.next();\n    this.onDestroy.complete();\n  }\n}\n","<div\n  [class]=\"'flex relative !text-[#9ca2ad] ' + classContainerInput()\"\n  [class.libs-ui-components-input-textarea-container]=\"tagInput() === 'textarea' && resize() === 'auto'\">\n  @if (tagInput() === 'input') {\n    <input\n      #inputRef\n      [class.libs-ui-readonly]=\"readonly()\"\n      [class.libs-ui-readonly-background]=\"readonly()\"\n      [class.libs-ui-disable]=\"disable()\"\n      [class.libs-ui-disable-background]=\"disable()\"\n      [style.height.px]=\"defaultHeight()\"\n      [style.minHeight.px]=\"defaultHeight()\"\n      [style.paddingRight.px.important]=\"paddingRightCustom()\"\n      [class.w-full]=\"!ignoreWidthInput100()\"\n      [class]=\"'libs-ui-input libs-ui-font-h5r ' + classInclude()\"\n      [class.border-primary-focus-general]=\"focusInput()\"\n      [class.libs-ui-input-not-border]=\"noBorder()\"\n      [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n      [class.libs-ui-border-error-general]=\"borderError()\"\n      [class.text-[#29c7cc]]=\"useColorModeExist()\"\n      [class.!pl-[40px]]=\"iconLeftClass()\"\n      [attr.maxLength]=\"maxLength() || undefined\"\n      [placeholder]=\"placeholder() | translate\"\n      [attr.type]=\"typeInput()\"\n      [attr.inputmode]=\"modeInput()\"\n      [readonly]=\"readonly()\"\n      [disabled]=\"disable()\"\n      [autocomplete]=\"resetAutoCompletePassword() ? 'new-password' : ''\" />\n  }\n  @if (tagInput() === 'textarea') {\n    @if (resize() === 'auto') {\n      <div class=\"libs-ui-components-input-textarea-container-resize-icon\"></div>\n    }\n    <textarea\n      #inputRef\n      [class.libs-ui-readonly]=\"readonly()\"\n      [class.libs-ui-readonly-background]=\"readonly()\"\n      [class.libs-ui-disable]=\"disable()\"\n      [class.libs-ui-disable-background]=\"disable()\"\n      [style.height.px]=\"defaultHeight()\"\n      [style.minHeight.px]=\"minHeightTextArea() ?? defaultHeight()\"\n      [style.paddingRight.px.important]=\"paddingRightCustom()\"\n      [style.maxHeight.px]=\"maxHeightTextArea()\"\n      [style.resize]=\"resize()\"\n      [class.w-full]=\"!ignoreWidthInput100()\"\n      [class]=\"'libs-ui-input libs-ui-font-h5r libs-ui-cursor-auto ' + classInclude()\"\n      [class.libs-ui-input-not-border]=\"noBorder()\"\n      [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n      [class.libs-ui-border-error-general]=\"borderError()\"\n      [class.text-[#29c7cc]]=\"useColorModeExist()\"\n      [class.pl-[32px]]=\"iconLeftClass()\"\n      [attr.maxLength]=\"maxLength() || undefined\"\n      [placeholder]=\"placeholder() | translate\"\n      [readonly]=\"readonly()\"\n      [disabled]=\"disable()\"></textarea>\n  }\n\n  @if (tagInput() === 'iframe-textarea' && htmlIframeArea()) {\n    <span class=\"d-none\"></span>\n    <iframe\n      #iframeRef\n      [style.maxHeight.px]=\"maxHeightTextArea()\"\n      [style.height.px]=\"defaultHeight()\"\n      [srcdoc]=\"htmlIframeArea()\"\n      class=\"w-full\"\n      frameBorder=\"0\"\n      (load)=\"handlerOnLoad($event, iframeRef)\"></iframe>\n  }\n  @if (iconLeftClass()) {\n    <libs_ui-components-popover\n      [ignoreShowPopover]=\"!popoverContentIconLeft()\"\n      [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconLeft(), zIndex: zIndexPopoverContent() }\">\n      <i\n        [attr.tagInput]=\"tagInput()\"\n        [class]=\"iconLeftClass() + ' libs-ui-input-icon-left !text-[#9ca2ad]'\"\n        (click)=\"handlerEventIconLeft($event, 'click')\"></i>\n    </libs_ui-components-popover>\n  }\n  <div\n    #elementRightRef\n    class=\"absolute flex items-center h-full top-0 right-0\">\n    @if (value() && placeholder().trim() && keepPlaceholderOnly()) {\n      <span [class]=\"'libs-ui-input-placeholder-custom libs-ui-font-h5r'\">\n        {{ placeholder() }}\n      </span>\n    }\n    @if (dataType() !== 'string' && valueUpDownNumber()) {\n      <libs_ui-components-buttons-sort\n        class=\"mr-[12px]\"\n        [disableAsc]=\"disableAsc()\"\n        [disableDesc]=\"disableDesc()\"\n        [attr.tagInput]=\"tagInput()\"\n        [onlyEmit]=\"true\"\n        [disable]=\"disable() || readonly()\"\n        (outChange)=\"handlerChangeValue($event)\" />\n    }\n    @if (iconRightClass()) {\n      <libs_ui-components-popover\n        class=\"flex\"\n        [ignoreShowPopover]=\"!popoverContentIconRight()\"\n        [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconRight(), zIndex: zIndexPopoverContent() }\">\n        <i\n          [attr.tagInput]=\"tagInput()\"\n          [class.text-[#6a7383]]=\"(!disable() && !readonly()) || acceptOnlyClickIcon()\"\n          [class.text-[#cdd0d6]]=\"((disable() || readonly()) && !acceptOnlyClickIcon()) || setIconRightColorSameColorDisableReadOnly()\"\n          [class]=\"iconRightClass() + ' libs-ui-input-icon-right'\"\n          (click)=\"handlerEventIconRight($event, 'click')\"></i>\n      </libs_ui-components-popover>\n    }\n  </div>\n  <div\n    class=\"libs-ui-input-text-bottom {{ classContainerBottomInput() }}\"\n    [style.right.px]=\"(tagInput() === 'input' ? elementRightRef.clientWidth || 0 : 0) + 8\">\n    @if (templateLeftBottomInput(); as templateLeftBottomInput) {\n      <ng-container *ngTemplateOutlet=\"templateLeftBottomInput\" />\n    }\n    <div\n      #textCountRef\n      class=\"text-[#9ca2ad] libs-ui-font-h7r\"\n      [class.hidden]=\"dataType() !== 'string' || !showCount()\">\n      <span>{{ countDisplay() }}</span>\n      @if (maxLength()) {\n        <span>/{{ maxLengthDisplay() }}</span>\n      }\n    </div>\n    @if (templateRightBottomInput(); as templateRightBottomInput) {\n      <ng-container *ngTemplateOutlet=\"templateRightBottomInput\" />\n    }\n  </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}