{"version":3,"file":"axulus-uikit-inputnumber.mjs","sources":["../../src/app/components/inputnumber/inputnumber.ts","../../src/app/components/inputnumber/axulus-uikit-inputnumber.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgModule,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonModule } from '@axulus/uikit/button';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { InputTextModule } from '@axulus/uikit/inputtext';\n\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputNumber),\n  multi: true\n};\n@Component({\n  selector: 'p-inputNumber',\n  template: `\n    <span\n      [ngClass]=\"{\n        'p-inputnumber p-component': true,\n        'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n        'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',\n        'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'\n      }\"\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n    >\n      <input\n        #input\n        [ngClass]=\"'p-inputnumber-input'\"\n        [ngStyle]=\"inputStyle\"\n        [class]=\"inputStyleClass\"\n        pInputText\n        [value]=\"formattedValue()\"\n        [attr.placeholder]=\"placeholder\"\n        [attr.title]=\"title\"\n        [attr.id]=\"inputId\"\n        [attr.size]=\"size\"\n        [attr.name]=\"name\"\n        [attr.autocomplete]=\"autocomplete\"\n        [attr.maxlength]=\"maxlength\"\n        [attr.tabindex]=\"tabindex\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-required]=\"ariaRequired\"\n        [disabled]=\"disabled\"\n        [attr.required]=\"required\"\n        [attr.min]=\"min\"\n        [attr.max]=\"max\"\n        [readonly]=\"readonly\"\n        inputmode=\"decimal\"\n        (input)=\"onUserInput($event)\"\n        (keydown)=\"onInputKeyDown($event)\"\n        (keypress)=\"onInputKeyPress($event)\"\n        (paste)=\"onPaste($event)\"\n        (click)=\"onInputClick()\"\n        (focus)=\"onInputFocus($event)\"\n        (blur)=\"onInputBlur($event)\"\n      />\n      <i *ngIf=\"buttonLayout != 'vertical' && showClear && value\" class=\"p-inputnumber-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n      <span class=\"p-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\">\n        <button\n          type=\"button\"\n          pButton\n          [ngClass]=\"{ 'p-inputnumber-button p-inputnumber-button-up': true }\"\n          [class]=\"incrementButtonClass\"\n          [icon]=\"incrementButtonIcon\"\n          [disabled]=\"disabled\"\n          (mousedown)=\"this.onUpButtonMouseDown($event)\"\n          (mouseup)=\"onUpButtonMouseUp()\"\n          (mouseleave)=\"onUpButtonMouseLeave()\"\n          (keydown)=\"onUpButtonKeyDown($event)\"\n          (keyup)=\"onUpButtonKeyUp()\"\n        ></button>\n        <button\n          type=\"button\"\n          pButton\n          [ngClass]=\"{ 'p-inputnumber-button p-inputnumber-button-down': true }\"\n          [class]=\"decrementButtonClass\"\n          [icon]=\"decrementButtonIcon\"\n          [disabled]=\"disabled\"\n          (mousedown)=\"this.onDownButtonMouseDown($event)\"\n          (mouseup)=\"onDownButtonMouseUp()\"\n          (mouseleave)=\"onDownButtonMouseLeave()\"\n          (keydown)=\"onDownButtonKeyDown($event)\"\n          (keyup)=\"onDownButtonKeyUp()\"\n        ></button>\n      </span>\n      <button\n        type=\"button\"\n        pButton\n        [ngClass]=\"{ 'p-inputnumber-button p-inputnumber-button-up': true }\"\n        [class]=\"incrementButtonClass\"\n        [icon]=\"incrementButtonIcon\"\n        *ngIf=\"showButtons && buttonLayout !== 'stacked'\"\n        [disabled]=\"disabled\"\n        (mousedown)=\"this.onUpButtonMouseDown($event)\"\n        (mouseup)=\"onUpButtonMouseUp()\"\n        (mouseleave)=\"onUpButtonMouseLeave()\"\n        (keydown)=\"onUpButtonKeyDown($event)\"\n        (keyup)=\"onUpButtonKeyUp()\"\n      ></button>\n      <button\n        type=\"button\"\n        pButton\n        [ngClass]=\"{ 'p-inputnumber-button p-inputnumber-button-down': true }\"\n        [class]=\"decrementButtonClass\"\n        [icon]=\"decrementButtonIcon\"\n        *ngIf=\"showButtons && buttonLayout !== 'stacked'\"\n        [disabled]=\"disabled\"\n        (mousedown)=\"this.onDownButtonMouseDown($event)\"\n        (mouseup)=\"onDownButtonMouseUp()\"\n        (mouseleave)=\"onDownButtonMouseLeave()\"\n        (keydown)=\"onDownButtonKeyDown($event)\"\n        (keyup)=\"onDownButtonKeyUp()\"\n      ></button>\n    </span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [INPUTNUMBER_VALUE_ACCESSOR],\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./inputnumber.css'],\n  host: {\n    class: 'p-element p-inputwrapper',\n    '[class.p-inputwrapper-filled]': 'filled',\n    '[class.p-inputwrapper-focus]': 'focused',\n    '[class.p-inputnumber-clearable]': 'showClear && buttonLayout != \"vertical\"'\n  }\n})\nexport class InputNumber implements OnInit, ControlValueAccessor {\n  @Input() showButtons: boolean = false;\n\n  @Input() format: boolean = true;\n\n  @Input() buttonLayout: string = 'stacked';\n\n  @Input() inputId: string;\n\n  @Input() styleClass: string;\n\n  @Input() style: any;\n\n  @Input() placeholder: string;\n\n  @Input() size: number;\n\n  @Input() maxlength: number;\n\n  @Input() tabindex: string;\n\n  @Input() title: string;\n\n  @Input() ariaLabel: string;\n\n  @Input() ariaRequired: boolean;\n\n  @Input() name: string;\n\n  @Input() required: boolean;\n\n  @Input() autocomplete: string;\n\n  @Input() min: number;\n\n  @Input() max: number;\n\n  @Input() incrementButtonClass: string;\n\n  @Input() decrementButtonClass: string;\n\n  @Input() incrementButtonIcon: string = 'pi pi-angle-up';\n\n  @Input() decrementButtonIcon: string = 'pi pi-angle-down';\n\n  @Input() readonly: boolean = false;\n\n  @Input() step: number = 1;\n\n  @Input() allowEmpty: boolean = true;\n\n  @Input() locale: string;\n\n  @Input() localeMatcher: string;\n\n  @Input() mode: string = 'decimal';\n\n  @Input() currency: string;\n\n  @Input() currencyDisplay: string;\n\n  @Input() useGrouping: boolean = true;\n\n  @Input() minFractionDigits: number;\n\n  @Input() maxFractionDigits: number;\n\n  @Input() prefix: string;\n\n  @Input() suffix: string;\n\n  @Input() inputStyle: any;\n\n  @Input() inputStyleClass: string;\n\n  @Input() showClear: boolean = false;\n\n  @ViewChild('input') input: ElementRef;\n\n  @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n  @Output() onKeyDown: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  value: number;\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  focused: boolean;\n\n  initialized: boolean;\n\n  groupChar: string = '';\n\n  prefixChar: string = '';\n\n  suffixChar: string = '';\n\n  isSpecialChar: boolean;\n\n  timer: any;\n\n  lastValue: string;\n\n  _numeral: any;\n\n  numberFormat: any;\n\n  _decimal: any;\n\n  _group: any;\n\n  _minusSign: any;\n\n  _currency: any;\n\n  _prefix: any;\n\n  _suffix: any;\n\n  _index: any;\n\n  _disabled: boolean;\n\n  @Input() get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(disabled: boolean) {\n    if (disabled) this.focused = false;\n\n    this._disabled = disabled;\n\n    if (this.timer) this.clearTimer();\n  }\n\n  constructor(public el: ElementRef, private cd: ChangeDetectorRef) {}\n\n  ngOnChanges(simpleChange: SimpleChanges) {\n    const props = [\n      'locale',\n      'localeMatcher',\n      'mode',\n      'currency',\n      'currencyDisplay',\n      'useGrouping',\n      'minFractionDigits',\n      'maxFractionDigits',\n      'prefix',\n      'suffix'\n    ];\n    if (props.some((p) => !!simpleChange[p])) {\n      this.updateConstructParser();\n    }\n  }\n\n  ngOnInit() {\n    this.constructParser();\n\n    this.initialized = true;\n  }\n\n  getOptions() {\n    return {\n      localeMatcher: this.localeMatcher,\n      style: this.mode,\n      currency: this.currency,\n      currencyDisplay: this.currencyDisplay,\n      useGrouping: this.useGrouping,\n      minimumFractionDigits: this.minFractionDigits,\n      maximumFractionDigits: this.maxFractionDigits\n    };\n  }\n\n  constructParser() {\n    this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n    const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n    const index = new Map(numerals.map((d, i) => [d, i]));\n    this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n    this._group = this.getGroupingExpression();\n    this._minusSign = this.getMinusSignExpression();\n    this._currency = this.getCurrencyExpression();\n    this._decimal = this.getDecimalExpression();\n    this._suffix = this.getSuffixExpression();\n    this._prefix = this.getPrefixExpression();\n    this._index = (d) => index.get(d);\n  }\n\n  updateConstructParser() {\n    if (this.initialized) {\n      this.constructParser();\n    }\n  }\n\n  escapeRegExp(text) {\n    return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n  }\n\n  getDecimalExpression() {\n    const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n    return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n  }\n\n  getGroupingExpression() {\n    const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n    this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n    return new RegExp(`[${this.groupChar}]`, 'g');\n  }\n\n  getMinusSignExpression() {\n    const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n    return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n  }\n\n  getCurrencyExpression() {\n    if (this.currency) {\n      const formatter = new Intl.NumberFormat(this.locale, {\n        style: 'currency',\n        currency: this.currency,\n        currencyDisplay: this.currencyDisplay,\n        minimumFractionDigits: 0,\n        maximumFractionDigits: 0\n      });\n      return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n    }\n\n    return new RegExp(`[]`, 'g');\n  }\n\n  getPrefixExpression() {\n    if (this.prefix) {\n      this.prefixChar = this.prefix;\n    } else {\n      const formatter = new Intl.NumberFormat(this.locale, {\n        style: this.mode,\n        currency: this.currency,\n        currencyDisplay: this.currencyDisplay\n      });\n      this.prefixChar = formatter.format(1).split('1')[0];\n    }\n\n    return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n  }\n\n  getSuffixExpression() {\n    if (this.suffix) {\n      this.suffixChar = this.suffix;\n    } else {\n      const formatter = new Intl.NumberFormat(this.locale, {\n        style: this.mode,\n        currency: this.currency,\n        currencyDisplay: this.currencyDisplay,\n        minimumFractionDigits: 0,\n        maximumFractionDigits: 0\n      });\n      this.suffixChar = formatter.format(1).split('1')[1];\n    }\n\n    return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n  }\n\n  formatValue(value) {\n    if (value != null) {\n      if (value === '-') {\n        // Minus sign\n        return value;\n      }\n\n      if (this.format) {\n        let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n        let formattedValue = formatter.format(value);\n        if (this.prefix) {\n          formattedValue = this.prefix + formattedValue;\n        }\n\n        if (this.suffix) {\n          formattedValue = formattedValue + this.suffix;\n        }\n\n        return formattedValue;\n      }\n\n      return value.toString();\n    }\n\n    return '';\n  }\n\n  parseValue(text) {\n    let filteredText = text\n      .replace(this._suffix, '')\n      .replace(this._prefix, '')\n      .trim()\n      .replace(/\\s/g, '')\n      .replace(this._currency, '')\n      .replace(this._group, '')\n      .replace(this._minusSign, '-')\n      .replace(this._decimal, '.')\n      .replace(this._numeral, this._index);\n\n    if (filteredText) {\n      if (filteredText === '-')\n        // Minus sign\n        return filteredText;\n\n      let parsedValue = +filteredText;\n      return isNaN(parsedValue) ? null : parsedValue;\n    }\n\n    return null;\n  }\n\n  repeat(event, interval, dir) {\n    if (this.readonly) {\n      return;\n    }\n\n    let i = interval || 500;\n\n    this.clearTimer();\n    this.timer = setTimeout(() => {\n      this.repeat(event, 40, dir);\n    }, i);\n\n    this.spin(event, dir);\n  }\n\n  spin(event, dir) {\n    let step = this.step * dir;\n    let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n    let newValue = this.validateValue(currentValue + step);\n    if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n      return;\n    }\n\n    this.updateInput(newValue, null, 'spin', null);\n    this.updateModel(event, newValue);\n\n    this.handleOnInput(event, currentValue, newValue);\n  }\n\n  clear() {\n    this.value = null;\n    this.onModelChange(this.value);\n    this.onClear.emit();\n  }\n\n  onUpButtonMouseDown(event) {\n    this.input.nativeElement.focus();\n    this.repeat(event, null, 1);\n    event.preventDefault();\n  }\n\n  onUpButtonMouseUp() {\n    this.clearTimer();\n  }\n\n  onUpButtonMouseLeave() {\n    this.clearTimer();\n  }\n\n  onUpButtonKeyDown(event) {\n    if (event.keyCode === 32 || event.keyCode === 13) {\n      this.repeat(event, null, 1);\n    }\n  }\n\n  onUpButtonKeyUp() {\n    this.clearTimer();\n  }\n\n  onDownButtonMouseDown(event) {\n    this.input.nativeElement.focus();\n    this.repeat(event, null, -1);\n    event.preventDefault();\n  }\n\n  onDownButtonMouseUp() {\n    this.clearTimer();\n  }\n\n  onDownButtonMouseLeave() {\n    this.clearTimer();\n  }\n\n  onDownButtonKeyUp() {\n    this.clearTimer();\n  }\n\n  onDownButtonKeyDown(event) {\n    if (event.keyCode === 32 || event.keyCode === 13) {\n      this.repeat(event, null, -1);\n    }\n  }\n\n  onUserInput(event) {\n    if (this.readonly) {\n      return;\n    }\n\n    if (this.isSpecialChar) {\n      event.target.value = this.lastValue;\n    }\n    this.isSpecialChar = false;\n  }\n\n  onInputKeyDown(event) {\n    if (this.readonly) {\n      return;\n    }\n\n    this.lastValue = event.target.value;\n    if (event.shiftKey || event.altKey) {\n      this.isSpecialChar = true;\n      return;\n    }\n\n    let selectionStart = event.target.selectionStart;\n    let selectionEnd = event.target.selectionEnd;\n    let inputValue = event.target.value;\n    let newValueStr = null;\n\n    if (event.altKey) {\n      event.preventDefault();\n    }\n\n    switch (event.which) {\n      //up\n      case 38:\n        this.spin(event, 1);\n        event.preventDefault();\n        break;\n\n      //down\n      case 40:\n        this.spin(event, -1);\n        event.preventDefault();\n        break;\n\n      //left\n      case 37:\n        if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n          event.preventDefault();\n        }\n        break;\n\n      //right\n      case 39:\n        if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n          event.preventDefault();\n        }\n        break;\n\n      //enter\n      case 13:\n        newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));\n        this.input.nativeElement.value = this.formatValue(newValueStr);\n        this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);\n        this.updateModel(event, newValueStr);\n        break;\n\n      //backspace\n      case 8: {\n        event.preventDefault();\n\n        if (selectionStart === selectionEnd) {\n          const deleteChar = inputValue.charAt(selectionStart - 1);\n          const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n          if (this.isNumeralChar(deleteChar)) {\n            const decimalLength = this.getDecimalLength(inputValue);\n\n            if (this._group.test(deleteChar)) {\n              this._group.lastIndex = 0;\n              newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n            } else if (this._decimal.test(deleteChar)) {\n              this._decimal.lastIndex = 0;\n\n              if (decimalLength) {\n                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n              } else {\n                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n              }\n            } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n              const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n              newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n            } else if (decimalCharIndexWithoutPrefix === 1) {\n              newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n              newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n            } else {\n              newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n            }\n          }\n\n          this.updateValue(event, newValueStr, null, 'delete-single');\n        } else {\n          newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n          this.updateValue(event, newValueStr, null, 'delete-range');\n        }\n\n        break;\n      }\n\n      // del\n      case 46:\n        event.preventDefault();\n\n        if (selectionStart === selectionEnd) {\n          const deleteChar = inputValue.charAt(selectionStart);\n          const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n          if (this.isNumeralChar(deleteChar)) {\n            const decimalLength = this.getDecimalLength(inputValue);\n\n            if (this._group.test(deleteChar)) {\n              this._group.lastIndex = 0;\n              newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n            } else if (this._decimal.test(deleteChar)) {\n              this._decimal.lastIndex = 0;\n\n              if (decimalLength) {\n                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n              } else {\n                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n              }\n            } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n              const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n              newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n            } else if (decimalCharIndexWithoutPrefix === 1) {\n              newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n              newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n            } else {\n              newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n            }\n          }\n\n          this.updateValue(event, newValueStr, null, 'delete-back-single');\n        } else {\n          newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n          this.updateValue(event, newValueStr, null, 'delete-range');\n        }\n        break;\n\n      default:\n        break;\n    }\n\n    this.onKeyDown.emit(event);\n  }\n\n  onInputKeyPress(event) {\n    if (this.readonly) {\n      return;\n    }\n\n    let code = event.which || event.keyCode;\n    let char = String.fromCharCode(code);\n    const isDecimalSign = this.isDecimalSign(char);\n    const isMinusSign = this.isMinusSign(char);\n\n    if (code != 13) {\n      event.preventDefault();\n    }\n\n    if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n      this.insert(event, char, { isDecimalSign, isMinusSign });\n    }\n  }\n\n  onPaste(event) {\n    if (!this.disabled && !this.readonly) {\n      event.preventDefault();\n      let data = (event.clipboardData || window['clipboardData']).getData('Text');\n      if (data) {\n        let filteredData = this.parseValue(data);\n        if (filteredData != null) {\n          this.insert(event, filteredData.toString());\n        }\n      }\n    }\n  }\n\n  allowMinusSign() {\n    return this.min == null || this.min < 0;\n  }\n\n  isMinusSign(char) {\n    if (this._minusSign.test(char) || char === '-') {\n      this._minusSign.lastIndex = 0;\n      return true;\n    }\n\n    return false;\n  }\n\n  isDecimalSign(char) {\n    if (this._decimal.test(char)) {\n      this._decimal.lastIndex = 0;\n      return true;\n    }\n\n    return false;\n  }\n\n  isDecimalMode() {\n    return this.mode === 'decimal';\n  }\n\n  getDecimalCharIndexes(val) {\n    let decimalCharIndex = val.search(this._decimal);\n    this._decimal.lastIndex = 0;\n\n    const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n    const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n    this._decimal.lastIndex = 0;\n\n    return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n  }\n\n  getCharIndexes(val) {\n    const decimalCharIndex = val.search(this._decimal);\n    this._decimal.lastIndex = 0;\n    const minusCharIndex = val.search(this._minusSign);\n    this._minusSign.lastIndex = 0;\n    const suffixCharIndex = val.search(this._suffix);\n    this._suffix.lastIndex = 0;\n    const currencyCharIndex = val.search(this._currency);\n    this._currency.lastIndex = 0;\n\n    return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n  }\n\n  insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n    const minusCharIndexOnText = text.search(this._minusSign);\n    this._minusSign.lastIndex = 0;\n    if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n      return;\n    }\n\n    let selectionStart = this.input.nativeElement.selectionStart;\n    let selectionEnd = this.input.nativeElement.selectionEnd;\n    let inputValue = this.input.nativeElement.value.trim();\n    const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n    let newValueStr;\n\n    if (sign.isMinusSign) {\n      if (selectionStart === 0) {\n        newValueStr = inputValue;\n        if (minusCharIndex === -1 || selectionEnd !== 0) {\n          newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n        }\n\n        this.updateValue(event, newValueStr, text, 'insert');\n      }\n    } else if (sign.isDecimalSign) {\n      if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n        this.updateValue(event, inputValue, text, 'insert');\n      } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n        newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n        this.updateValue(event, newValueStr, text, 'insert');\n      } else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n        newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n        this.updateValue(event, newValueStr, text, 'insert');\n      }\n    } else {\n      const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n      const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n      if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n        if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n          const charIndex =\n            currencyCharIndex >= selectionStart\n              ? currencyCharIndex - 1\n              : suffixCharIndex >= selectionStart\n              ? suffixCharIndex\n              : inputValue.length;\n\n          newValueStr =\n            inputValue.slice(0, selectionStart) +\n            text +\n            inputValue.slice(selectionStart + text.length, charIndex) +\n            inputValue.slice(charIndex);\n          this.updateValue(event, newValueStr, text, operation);\n        }\n      } else {\n        newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n        this.updateValue(event, newValueStr, text, operation);\n      }\n    }\n  }\n\n  insertText(value, text, start, end) {\n    let textSplit = text === '.' ? text : text.split('.');\n\n    if (textSplit.length === 2) {\n      const decimalCharIndex = value.slice(start, end).search(this._decimal);\n      this._decimal.lastIndex = 0;\n      return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);\n    } else if (end - start === value.length) {\n      return this.formatValue(text);\n    } else if (start === 0) {\n      return text + value.slice(end);\n    } else if (end === value.length) {\n      return value.slice(0, start) + text;\n    } else {\n      return value.slice(0, start) + text + value.slice(end);\n    }\n  }\n\n  deleteRange(value, start, end) {\n    let newValueStr;\n\n    if (end - start === value.length) newValueStr = '';\n    else if (start === 0) newValueStr = value.slice(end);\n    else if (end === value.length) newValueStr = value.slice(0, start);\n    else newValueStr = value.slice(0, start) + value.slice(end);\n\n    return newValueStr;\n  }\n\n  initCursor() {\n    let selectionStart = this.input.nativeElement.selectionStart;\n    let inputValue = this.input.nativeElement.value;\n    let valueLength = inputValue.length;\n    let index = null;\n\n    // remove prefix\n    let prefixLength = (this.prefixChar || '').length;\n    inputValue = inputValue.replace(this._prefix, '');\n    selectionStart = selectionStart - prefixLength;\n\n    let char = inputValue.charAt(selectionStart);\n    if (this.isNumeralChar(char)) {\n      return selectionStart + prefixLength;\n    }\n\n    //left\n    let i = selectionStart - 1;\n    while (i >= 0) {\n      char = inputValue.charAt(i);\n      if (this.isNumeralChar(char)) {\n        index = i + prefixLength;\n        break;\n      } else {\n        i--;\n      }\n    }\n\n    if (index !== null) {\n      this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n    } else {\n      i = selectionStart;\n      while (i < valueLength) {\n        char = inputValue.charAt(i);\n        if (this.isNumeralChar(char)) {\n          index = i + prefixLength;\n          break;\n        } else {\n          i++;\n        }\n      }\n\n      if (index !== null) {\n        this.input.nativeElement.setSelectionRange(index, index);\n      }\n    }\n\n    return index || 0;\n  }\n\n  onInputClick() {\n    const currentValue = this.input.nativeElement.value;\n    if (!this.readonly && currentValue !== DomHandler.getSelection()) {\n      this.initCursor();\n    }\n  }\n\n  isNumeralChar(char) {\n    if (\n      char.length === 1 &&\n      (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))\n    ) {\n      this.resetRegex();\n      return true;\n    }\n\n    return false;\n  }\n\n  resetRegex() {\n    this._numeral.lastIndex = 0;\n    this._decimal.lastIndex = 0;\n    this._group.lastIndex = 0;\n    this._minusSign.lastIndex = 0;\n  }\n\n  updateValue(event, valueStr, insertedValueStr, operation) {\n    let currentValue = this.input.nativeElement.value;\n    let newValue = null;\n\n    if (valueStr != null) {\n      newValue = this.parseValue(valueStr);\n      newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n      this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n      this.handleOnInput(event, currentValue, newValue);\n    }\n  }\n\n  handleOnInput(event, currentValue, newValue) {\n    if (this.isValueChanged(currentValue, newValue)) {\n      this.onInput.emit({ originalEvent: event, value: newValue, formattedValue: currentValue });\n    }\n  }\n\n  isValueChanged(currentValue, newValue) {\n    if (newValue === null && currentValue !== null) {\n      return true;\n    }\n\n    if (newValue != null) {\n      let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n      return newValue !== parsedCurrentValue;\n    }\n\n    return false;\n  }\n\n  validateValue(value) {\n    if (value === '-' || value == null) {\n      return null;\n    }\n\n    if (this.min != null && value < this.min) {\n      return this.min;\n    }\n\n    if (this.max != null && value > this.max) {\n      return this.max;\n    }\n\n    return value;\n  }\n\n  updateInput(value, insertedValueStr, operation, valueStr) {\n    insertedValueStr = insertedValueStr || '';\n\n    let inputValue = this.input.nativeElement.value;\n    let newValue = this.formatValue(value);\n    let currentLength = inputValue.length;\n\n    if (newValue !== valueStr) {\n      newValue = this.concatValues(newValue, valueStr);\n    }\n\n    if (currentLength === 0) {\n      this.input.nativeElement.value = newValue;\n      this.input.nativeElement.setSelectionRange(0, 0);\n      const index = this.initCursor();\n      const selectionEnd = index + insertedValueStr.length;\n      this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n    } else {\n      let selectionStart = this.input.nativeElement.selectionStart;\n      let selectionEnd = this.input.nativeElement.selectionEnd;\n      if (this.maxlength && this.maxlength < newValue.length) {\n        return;\n      }\n\n      this.input.nativeElement.value = newValue;\n      let newLength = newValue.length;\n\n      if (operation === 'range-insert') {\n        const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n        const startValueStr = startValue !== null ? startValue.toString() : '';\n        const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n        const sRegex = new RegExp(startExpr, 'g');\n        sRegex.test(newValue);\n\n        const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n        const tRegex = new RegExp(tExpr, 'g');\n        tRegex.test(newValue.slice(sRegex.lastIndex));\n\n        selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n        this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n      } else if (newLength === currentLength) {\n        if (operation === 'insert' || operation === 'delete-back-single')\n          this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n        else if (operation === 'delete-single') this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n        else if (operation === 'delete-range' || operation === 'spin')\n          this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n      } else if (operation === 'delete-back-single') {\n        let prevChar = inputValue.charAt(selectionEnd - 1);\n        let nextChar = inputValue.charAt(selectionEnd);\n        let diff = currentLength - newLength;\n        let isGroupChar = this._group.test(nextChar);\n\n        if (isGroupChar && diff === 1) {\n          selectionEnd += 1;\n        } else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n          selectionEnd += -1 * diff + 1;\n        }\n\n        this._group.lastIndex = 0;\n        this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n      } else if (inputValue === '-' && operation === 'insert') {\n        this.input.nativeElement.setSelectionRange(0, 0);\n        const index = this.initCursor();\n        const selectionEnd = index + insertedValueStr.length + 1;\n        this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n      } else {\n        selectionEnd = selectionEnd + (newLength - currentLength);\n        this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n      }\n    }\n\n    this.input.nativeElement.setAttribute('aria-valuenow', value);\n  }\n\n  concatValues(val1, val2) {\n    if (val1 && val2) {\n      let decimalCharIndex = val2.search(this._decimal);\n      this._decimal.lastIndex = 0;\n\n      if (this.suffixChar) {\n        return (\n          val1.replace(this.suffixChar, '').split(this._decimal)[0] +\n          val2.replace(this.suffixChar, '').slice(decimalCharIndex) +\n          this.suffixChar\n        );\n      } else {\n        return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n      }\n    }\n    return val1;\n  }\n\n  getDecimalLength(value) {\n    if (value) {\n      const valueSplit = value.split(this._decimal);\n\n      if (valueSplit.length === 2) {\n        return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n      }\n    }\n\n    return 0;\n  }\n\n  onInputFocus(event) {\n    this.focused = true;\n    this.onFocus.emit(event);\n  }\n\n  onInputBlur(event) {\n    this.focused = false;\n\n    let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n    this.input.nativeElement.value = this.formatValue(newValue);\n    this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n    this.updateModel(event, newValue);\n\n    this.onBlur.emit(event);\n  }\n\n  formattedValue() {\n    const val = !this.value && !this.allowEmpty ? 0 : this.value;\n    return this.formatValue(val);\n  }\n\n  updateModel(event, value) {\n    if (this.value !== value) {\n      this.value = value;\n      this.onModelChange(value);\n    }\n\n    this.onModelTouched();\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val: boolean): void {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  get filled() {\n    return this.value != null && this.value.toString().length > 0;\n  }\n\n  clearTimer() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n  }\n\n  getFormatter() {\n    return this.numberFormat;\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, InputTextModule, ButtonModule],\n  exports: [InputNumber],\n  declarations: [InputNumber]\n})\nexport class InputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}