{"version":3,"file":"ng-devui-input-number.mjs","sources":["../../devui/input-number/input-number.component.ts","../../devui/input-number/input-number.component.html","../../devui/input-number/input-number.module.ts","../../devui/input-number/ng-devui-input-number.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DevConfigService, WithConfig } from 'ng-devui/utils';\r\nimport { fromEvent, Observable, Subscription } from 'rxjs';\r\n\r\nconst INPUT_NUMBER_CONTROL_VALUE_ACCESSOR: any = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => InputNumberComponent),\r\n  multi: true,\r\n};\r\n\r\nexport type InputSizeType = '' | 'sm' | 'lg';\r\n\r\n@Component({\r\n  selector: 'd-input-number',\r\n  templateUrl: './input-number.component.html',\r\n  styleUrls: ['./input-number.component.scss'],\r\n  providers: [INPUT_NUMBER_CONTROL_VALUE_ACCESSOR],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class InputNumberComponent implements ControlValueAccessor, OnChanges, OnDestroy, AfterViewInit {\r\n  @Input() step = 1;\r\n  @Input() disabled = false;\r\n  @Input() size: InputSizeType = '';\r\n  @Input() decimalLimit;\r\n  @Input() autoFocus = false;\r\n  @Input() allowEmpty = false;\r\n  @Input() placeholder = '';\r\n  @Input() maxLength = 0;\r\n  @Input() reg: RegExp | string;\r\n  @Input() @WithConfig() styleType = 'default';\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n  @Output() afterValueChanged = new EventEmitter<number>();\r\n  @Output() whileValueChanging = new EventEmitter<number>();\r\n  @ViewChild('incButton', { static: true }) incButton: ElementRef;\r\n  @ViewChild('decButton', { static: true }) decButton: ElementRef;\r\n  @ViewChild('inputElement', { static: true }) inputElement: ElementRef;\r\n\r\n  private value: number;\r\n  private _min: number = Number.MIN_SAFE_INTEGER;\r\n  private _max: number = Number.MAX_SAFE_INTEGER;\r\n  private incListener: Observable<any>;\r\n  private decListener: Observable<any>;\r\n  private incAction: Subscription;\r\n  private decAction: Subscription;\r\n  disabledInc = false;\r\n  disabledDec = false;\r\n  lastEmittedValue: number;\r\n  lastValue: number;\r\n  document: Document;\r\n\r\n  @Input() set min(val) {\r\n    if (val || val === 0) {\r\n      this._min = val;\r\n    }\r\n  }\r\n  get min() {\r\n    return this._min;\r\n  }\r\n\r\n  @Input() set max(val) {\r\n    if (val || val === 0) {\r\n      this._max = val;\r\n    }\r\n  }\r\n  get max() {\r\n    return this._max;\r\n  }\r\n\r\n  private onTouchedCallback = () => {};\r\n\r\n  private onChangeCallback = (v: any) => {};\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService,\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChangeCallback = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouchedCallback = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n    this.toggleDisabled(isDisabled);\r\n  }\r\n\r\n  writeValue(newValue: any): void {\r\n    this.lastEmittedValue = newValue;\r\n    this.setValue(this.ensureValueInRange(newValue));\r\n  }\r\n\r\n  private valueMustBeValid(value: number): boolean {\r\n    return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\r\n  }\r\n\r\n  private clamp(min: number, n: number, max: number) {\r\n    // 兼容writeValue时的undefined\r\n    let currentValue = max !== undefined ? Math.min(n, max) : n;\r\n    currentValue = min !== undefined ? Math.max(min, currentValue) : currentValue;\r\n    return currentValue;\r\n  }\r\n\r\n  private ensureValueInRange(value: number | null | undefined): number {\r\n    let safeValue;\r\n    if (this.allowEmpty && (value === null || value === undefined)) {\r\n      safeValue = null;\r\n    } else if (!this.valueMustBeValid(value)) {\r\n      safeValue = 0;\r\n    } else {\r\n      let currentValue = value;\r\n      if (!value) {\r\n        currentValue = 0;\r\n      }\r\n      safeValue = this.clamp(this.min, currentValue, this.max);\r\n    }\r\n    return safeValue;\r\n  }\r\n\r\n  private setValue(value: number | null): void {\r\n    this.value = value;\r\n    this.lastValue = value;\r\n    if (this.allowEmpty && value === null) {\r\n      this.subscribeDecAction();\r\n      this.subscribeIncAction();\r\n    } else {\r\n      if (!this.canDecrease()) {\r\n        this.unsubscribeDecAction();\r\n      } else {\r\n        this.subscribeDecAction();\r\n      }\r\n      if (!this.canIncrease()) {\r\n        this.unsubscribeIncAction();\r\n      } else {\r\n        this.subscribeIncAction();\r\n      }\r\n    }\r\n    this.renderer.setProperty(this.inputElement.nativeElement, 'value', value);\r\n    this.disabledDec = this.value === this.min;\r\n    this.disabledInc = this.value === this.max;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.registerListeners();\r\n    this.subscribeActions();\r\n    setTimeout(() => {\r\n      this.toggleDisabled(this.disabled);\r\n      if (!this.disabled) {\r\n        if (this.autoFocus) {\r\n          this.el.nativeElement.click();\r\n          this.inputElement.nativeElement.focus();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (Object.prototype.hasOwnProperty.call(changes, 'min') || Object.prototype.hasOwnProperty.call(changes, 'max')) {\r\n      this.checkRangeValues(this.min, this.max);\r\n      if (this.value < this.min) {\r\n        this.setValue(this.min);\r\n      } else if (this.value > this.max) {\r\n        this.setValue(this.max);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubscribeActions();\r\n  }\r\n\r\n  registerListeners() {\r\n    if (this.incButton && this.incButton.nativeElement) {\r\n      this.incListener = fromEvent(this.incButton.nativeElement, 'click');\r\n    }\r\n    if (this.decButton && this.decButton.nativeElement) {\r\n      this.decListener = fromEvent(this.decButton.nativeElement, 'click');\r\n    }\r\n  }\r\n\r\n  subscribeActions() {\r\n    this.subscribeIncAction();\r\n    this.subscribeDecAction();\r\n  }\r\n\r\n  subscribeIncAction() {\r\n    if (this.incListener && !this.incAction) {\r\n      this.incAction = this.incListener.subscribe(this.increaseValue);\r\n    }\r\n  }\r\n\r\n  subscribeDecAction() {\r\n    if (this.decListener && !this.decAction) {\r\n      this.decAction = this.decListener.subscribe(this.decreaseValue);\r\n    }\r\n  }\r\n\r\n  unsubscribeActions() {\r\n    this.unsubscribeIncAction();\r\n    this.unsubscribeDecAction();\r\n  }\r\n\r\n  unsubscribeIncAction() {\r\n    if (this.incListener && this.incAction) {\r\n      this.incAction.unsubscribe();\r\n      this.incAction = null;\r\n      this.disabledInc = true;\r\n    }\r\n  }\r\n\r\n  unsubscribeDecAction() {\r\n    if (this.incListener && this.decAction) {\r\n      this.decAction.unsubscribe();\r\n      this.decAction = null;\r\n      this.disabledDec = true;\r\n    }\r\n  }\r\n\r\n  private increaseValue = () => {\r\n    this.inDecreaseValue('increase');\r\n  };\r\n\r\n  private decreaseValue = () => {\r\n    this.inDecreaseValue('decrease');\r\n  };\r\n\r\n  private inDecreaseValue(type: string) {\r\n    const canContinue = type === 'increase' ? this.canIncrease() : this.canDecrease();\r\n    if (canContinue) {\r\n      if (this.allowEmpty && (this.value === null || this.value === undefined)) {\r\n        this.updateValue(0);\r\n      } else {\r\n        const decimals = this.getMaxDecimals(this.value);\r\n        const floatValue = type === 'increase' ? this.value + this.step : this.value - this.step;\r\n        if (this.matchReg(String(floatValue))) {\r\n          let value;\r\n          if (floatValue < 0) {\r\n            value = Math.ceil(floatValue * Number(`1e+${decimals}`) - Number('1e-12')) / Number(`1e+${decimals}`);\r\n          } else {\r\n            value = Math.floor(floatValue * Number(`1e+${decimals}`) + Number('1e-12')) / Number(`1e+${decimals}`);\r\n          }\r\n          this.updateValue(value);\r\n        }\r\n      }\r\n      this.inputElement.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  private matchReg(value) {\r\n    if (this.reg && !value.match(new RegExp(this.reg))) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  private canIncrease() {\r\n    if (this.allowEmpty && (this.value === null || this.value === undefined)) {\r\n      return this.min + this.step <= this.max;\r\n    } else {\r\n      return this.value + this.step <= this.max;\r\n    }\r\n  }\r\n\r\n  private canDecrease() {\r\n    if (this.allowEmpty && (this.value === null || this.value === undefined)) {\r\n      return this.min + this.step <= this.max;\r\n    } else {\r\n      return this.value - this.step >= this.min;\r\n    }\r\n  }\r\n\r\n  private toggleDisabled(disabled: boolean) {\r\n    if (disabled) {\r\n      this.unsubscribeActions();\r\n    } else {\r\n      this.disabledDec = this.value === this.min;\r\n      this.disabledInc = this.value === this.max;\r\n      this.subscribeActions();\r\n    }\r\n  }\r\n\r\n  ensureValueIsValid(event: Event) {\r\n    event.stopPropagation();\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    const newValue = (event.target as any).value;\r\n    const parseValue = parseFloat(newValue as string);\r\n    let result;\r\n    if (this.allowEmpty && newValue === '') {\r\n      result = null;\r\n    } else if (!isNaN(parseValue)) {\r\n      result = parseValue;\r\n    } else {\r\n      result = this.value;\r\n    }\r\n    result = this.ensureValueInRange(result);\r\n    this.notifyWhileValueChanging(result);\r\n    this.updateValue(result);\r\n    const blurEvent = new Event('blur', { bubbles: false, cancelable: true });\r\n    this.el.nativeElement.dispatchEvent(blurEvent);\r\n    this.onTouchedCallback();\r\n  }\r\n\r\n  private checkRangeValues(minValue, maxValue) {\r\n    if (maxValue < minValue) {\r\n      throw new Error(`max value must be greater than or equal to min value`);\r\n    }\r\n  }\r\n\r\n  private getDecimals(value: number): number {\r\n    const valueString = value.toString();\r\n    const integerLength = valueString.indexOf('.') + 1;\r\n    return valueString.length - integerLength;\r\n  }\r\n\r\n  private getMaxDecimals(currentValue) {\r\n    const stepPrecision = this.getDecimals(this.step);\r\n    const currentValuePrecision = this.getDecimals(currentValue as number);\r\n    if (!currentValue) {\r\n      return stepPrecision;\r\n    }\r\n    if (this.decimalLimit !== undefined && this.decimalLimit !== null) {\r\n      return this.decimalLimit;\r\n    }\r\n    return Math.max(currentValuePrecision, stepPrecision);\r\n  }\r\n\r\n  handleKeyDown(event: KeyboardEvent) {\r\n    this.handleBackspace(event);\r\n    this.keyBoardControl(event);\r\n  }\r\n\r\n  protectInput(event: Event) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    const target: any = event.target;\r\n    let value = target.value;\r\n    let input;\r\n    let selectionStart = target.selectionStart;\r\n    let selectionEnd = target.selectionEnd;\r\n    if ((event as any).clipboardData) {\r\n      input = (event as any).clipboardData.getData('text');\r\n      value = value.substring(0, selectionStart) + input + value.substring(selectionEnd);\r\n      event.preventDefault();\r\n    } else {\r\n      input = (event as any).data;\r\n      if (input === undefined || input === null) {\r\n        return;\r\n      }\r\n      selectionStart = selectionStart - input.length;\r\n      selectionEnd = selectionEnd - input.length;\r\n    }\r\n    if (this.maxLength && value.length > this.maxLength) {\r\n      this.setValue(this.lastValue);\r\n      return;\r\n    }\r\n    if (!this.matchReg(value)) {\r\n      this.setValue(this.lastValue);\r\n      return;\r\n    } else if (\r\n      value === '-' ||\r\n      value.match(/^\\s*(-|\\+)?\\d+\\.$/) ||\r\n      value.match(/^\\s*(-|\\+)?\\d+\\.[0-9]*0$/) ||\r\n      value.match(/^\\s*(-|\\+)0+$/)\r\n    ) {\r\n      // indeterminate state\r\n      return;\r\n    } else if (value.match(/^\\s*(-|\\+)?(\\d+|(\\d*(\\.\\d*)))$/)) {\r\n      if (this.decimalLimit !== undefined && this.decimalLimit !== null) {\r\n        if (value < 0) {\r\n          value = Math.ceil(value * Number(`1e+${this.decimalLimit}`) - Number('1e-12')) / Number(`1e+${this.decimalLimit}`);\r\n        } else {\r\n          value = Math.floor(value * Number(`1e+${this.decimalLimit}`) + Number('1e-12')) / Number(`1e+${this.decimalLimit}`);\r\n        }\r\n      }\r\n      value = parseFloat(value as string);\r\n      if (!isNaN(value)) {\r\n        this.setValue(value);\r\n        this.notifyWhileValueChanging(value);\r\n        // updateValue会使输入游标跳到最后，这里设置输入游标归位\r\n        if (input !== null) {\r\n          setTimeout(() => {\r\n            target.setSelectionRange(selectionStart + input.length, selectionStart + input.length);\r\n          }, 0);\r\n        }\r\n        return;\r\n      }\r\n    } else {\r\n      this.setValue(value.slice(0, value.length - 1));\r\n      setTimeout(() => {\r\n        target.setSelectionRange(selectionStart, selectionStart);\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  private notifyValueChange() {\r\n    this.afterValueChanged.emit(this.value);\r\n    this.onChangeCallback(this.value);\r\n  }\r\n\r\n  private notifyWhileValueChanging(value) {\r\n    this.whileValueChanging.emit(value);\r\n  }\r\n\r\n  private updateValue(value) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.setValue(value);\r\n    if (this.lastEmittedValue !== value) {\r\n      this.lastEmittedValue = value;\r\n      this.notifyValueChange();\r\n    }\r\n  }\r\n\r\n  handleBackspace(event: KeyboardEvent) {\r\n    if (event.key === 'Backspace') {\r\n      const target: any = event.target;\r\n      const oldValue = target.value;\r\n      const selectionStart = target.selectionStart;\r\n      const selectionEnd = target.selectionEnd;\r\n      let newValue = oldValue.substring(0, selectionStart - 1) + oldValue.substring(selectionEnd);\r\n      if (newValue !== '-' && !newValue.match(/^\\s*(-|\\+)?\\d+\\.$/)) {\r\n        newValue = newValue === '' ? null : newValue;\r\n        this.notifyWhileValueChanging(newValue);\r\n      }\r\n    }\r\n  }\r\n\r\n  keyBoardControl(event: KeyboardEvent) {\r\n    const key = event.key;\r\n    if (key === 'ArrowUp' || key === 'Up') {\r\n      event.preventDefault();\r\n      this.increaseValue();\r\n    } else if (key === 'ArrowDown' || key === 'Down') {\r\n      event.preventDefault();\r\n      this.decreaseValue();\r\n    } else if (key === 'Enter') {\r\n      this.inputElement.nativeElement.blur();\r\n    }\r\n  }\r\n}\r\n","<div\n  class=\"input-control-buttons\"\n  [ngClass]=\"{\n    disabled: disabled,\n    'devui-input-number-lg': size === 'lg',\n    'devui-input-number-sm': size === 'sm',\n    'devui-gray-style': styleType === 'gray'\n  }\"\n>\n  <span class=\"input-control-button input-control-inc\" [ngClass]=\"{ disabled: disabledInc }\" #incButton>\n    <svg\n      class=\"devui-svg-icon-arrow\"\n      width=\"1em\"\n      height=\"1em\"\n      viewBox=\"0 0 16 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M12.1464466,6.85355339 L8.35355339,10.6464466 C8.15829124,10.8417088 7.84170876,10.8417088 7.64644661,10.6464466 L3.85355339,6.85355339 C3.65829124,6.65829124 3.65829124,6.34170876 3.85355339,6.14644661 C3.94732158,6.05267842 4.07449854,6 4.20710678,6 L11.7928932,6 C12.0690356,6 12.2928932,6.22385763 12.2928932,6.5 C12.2928932,6.63260824 12.2402148,6.7597852 12.1464466,6.85355339 Z\"\n          fill-rule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  </span>\n  <span class=\"input-control-button input-control-dec\" [ngClass]=\"{ disabled: disabledDec }\" #decButton>\n    <svg\n      class=\"devui-svg-icon-arrow\"\n      width=\"1em\"\n      height=\"1em\"\n      viewBox=\"0 0 16 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M12.1464466,6.85355339 L8.35355339,10.6464466 C8.15829124,10.8417088 7.84170876,10.8417088 7.64644661,10.6464466 L3.85355339,6.85355339 C3.65829124,6.65829124 3.65829124,6.34170876 3.85355339,6.14644661 C3.94732158,6.05267842 4.07449854,6 4.20710678,6 L11.7928932,6 C12.0690356,6 12.2928932,6.22385763 12.2928932,6.5 C12.2928932,6.63260824 12.2402148,6.7597852 12.1464466,6.85355339 Z\"\n          fill-rule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  </span>\n</div>\n<div\n  class=\"input-container\"\n  [ngClass]=\"{\n    'devui-input-number-lg': size === 'lg',\n    'devui-input-number-sm': size === 'sm',\n    'devui-gray-style': styleType === 'gray'\n  }\"\n>\n  <input\n    class=\"input-box devui-input\"\n    [ngClass]=\"{ disabled: disabled }\"\n    [placeholder]=\"placeholder\"\n    [attr.readonly]=\"disabled ? '' : null\"\n    (keydown)=\"handleKeyDown($event)\"\n    (input)=\"protectInput($event)\"\n    (blur)=\"ensureValueIsValid($event)\"\n    (paste)=\"protectInput($event)\"\n    #inputElement\n  />\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputNumberComponent } from './input-number.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  exports: [InputNumberComponent],\n  declarations: [InputNumberComponent],\n  providers: [],\n})\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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"}