{"version":3,"file":"ng-zorro-antd-input-number.mjs","sources":["../../components/input-number/input-number.component.ts","../../components/input-number/input-number.module.ts","../../components/input-number/public-api.ts","../../components/input-number/ng-zorro-antd-input-number.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { BooleanInput, NzSizeLDSType, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { InputBoolean, isNotNil } from 'ng-zorro-antd/core/util';\n\n@Component({\n  selector: 'nz-input-number',\n  exportAs: 'nzInputNumber',\n  template: `\n    <div class=\"ant-input-number-handler-wrap\">\n      <span\n        unselectable=\"unselectable\"\n        class=\"ant-input-number-handler ant-input-number-handler-up\"\n        (mousedown)=\"up($event)\"\n        (mouseup)=\"stop()\"\n        (mouseleave)=\"stop()\"\n        [class.ant-input-number-handler-up-disabled]=\"disabledUp\"\n      >\n        <i nz-icon nzType=\"up\" class=\"ant-input-number-handler-up-inner\"></i>\n      </span>\n      <span\n        unselectable=\"unselectable\"\n        class=\"ant-input-number-handler ant-input-number-handler-down\"\n        (mousedown)=\"down($event)\"\n        (mouseup)=\"stop()\"\n        (mouseleave)=\"stop()\"\n        [class.ant-input-number-handler-down-disabled]=\"disabledDown\"\n      >\n        <i nz-icon nzType=\"down\" class=\"ant-input-number-handler-down-inner\"></i>\n      </span>\n    </div>\n    <div class=\"ant-input-number-input-wrap\">\n      <input\n        #inputElement\n        autocomplete=\"off\"\n        class=\"ant-input-number-input\"\n        [attr.id]=\"nzId\"\n        [attr.autofocus]=\"nzAutoFocus ? 'autofocus' : null\"\n        [disabled]=\"nzDisabled\"\n        [attr.min]=\"nzMin\"\n        [attr.max]=\"nzMax\"\n        [placeholder]=\"nzPlaceHolder\"\n        [attr.step]=\"nzStep\"\n        [attr.inputmode]=\"nzInputMode\"\n        [ngModel]=\"displayValue\"\n        (ngModelChange)=\"onModelChange($event)\"\n      />\n    </div>\n  `,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NzInputNumberComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ant-input-number',\n    '[class.ant-input-number-focused]': 'isFocused',\n    '[class.ant-input-number-lg]': `nzSize === 'large'`,\n    '[class.ant-input-number-sm]': `nzSize === 'small'`,\n    '[class.ant-input-number-disabled]': 'nzDisabled',\n    '[class.ant-input-number-rtl]': `dir === 'rtl'`\n  }\n})\nexport class NzInputNumberComponent implements ControlValueAccessor, AfterViewInit, OnChanges, OnInit, OnDestroy {\n  static ngAcceptInputType_nzDisabled: BooleanInput;\n  static ngAcceptInputType_nzAutoFocus: BooleanInput;\n\n  private autoStepTimer?: number;\n  private parsedValue?: string | number;\n  private value?: number;\n  private destroy$ = new Subject<void>();\n  displayValue?: string | number;\n  isFocused = false;\n  disabledUp = false;\n  disabledDown = false;\n  dir: Direction = 'ltr';\n  onChange: OnChangeType = () => {};\n  onTouched: OnTouchedType = () => {};\n  @Output() readonly nzBlur = new EventEmitter();\n  @Output() readonly nzFocus = new EventEmitter();\n  @ViewChild('inputElement', { static: true }) inputElement!: ElementRef<HTMLInputElement>;\n  @Input() nzSize: NzSizeLDSType = 'default';\n  @Input() nzMin: number = -Infinity;\n  @Input() nzMax: number = Infinity;\n  @Input() nzParser = (value: string): string =>\n    value\n      .trim()\n      .replace(/。/g, '.')\n      .replace(/[^\\w\\.-]+/g, '');\n  @Input() nzPrecision?: number;\n  @Input() nzPrecisionMode: 'cut' | 'toFixed' | ((value: number | string, precision?: number) => number) = 'toFixed';\n  @Input() nzPlaceHolder = '';\n  @Input() nzStep = 1;\n  @Input() nzInputMode: string = 'decimal';\n  @Input() nzId: string | null = null;\n  @Input() @InputBoolean() nzDisabled = false;\n  @Input() @InputBoolean() nzAutoFocus = false;\n  @Input() nzFormatter: (value: number) => string | number = value => value;\n\n  onModelChange(value: string): void {\n    this.parsedValue = this.nzParser(value);\n    this.inputElement.nativeElement.value = `${this.parsedValue}`;\n    const validValue = this.getCurrentValidValue(this.parsedValue);\n    this.setValue(validValue);\n  }\n\n  getCurrentValidValue(value: string | number): number {\n    let val = value;\n    if (val === '') {\n      val = '';\n    } else if (!this.isNotCompleteNumber(val)) {\n      val = `${this.getValidValue(val)}`;\n    } else {\n      val = this.value!;\n    }\n    return this.toNumber(val);\n  }\n\n  // '1.' '1x' 'xx' '' => are not complete numbers\n  isNotCompleteNumber(num: string | number): boolean {\n    return (\n      isNaN(num as number) ||\n      num === '' ||\n      num === null ||\n      !!(num && num.toString().indexOf('.') === num.toString().length - 1)\n    );\n  }\n\n  getValidValue(value?: string | number): string | number | undefined {\n    let val = parseFloat(value as string);\n    // https://github.com/ant-design/ant-design/issues/7358\n    if (isNaN(val)) {\n      return value;\n    }\n    if (val < this.nzMin) {\n      val = this.nzMin;\n    }\n    if (val > this.nzMax) {\n      val = this.nzMax;\n    }\n    return val;\n  }\n\n  toNumber(num: string | number): number {\n    if (this.isNotCompleteNumber(num)) {\n      return num as number;\n    }\n    const numStr = String(num);\n    if (numStr.indexOf('.') >= 0 && isNotNil(this.nzPrecision)) {\n      if (typeof this.nzPrecisionMode === 'function') {\n        return this.nzPrecisionMode(num, this.nzPrecision);\n      } else if (this.nzPrecisionMode === 'cut') {\n        const numSplit = numStr.split('.');\n        numSplit[1] = numSplit[1].slice(0, this.nzPrecision);\n        return Number(numSplit.join('.'));\n      }\n      return Number(Number(num).toFixed(this.nzPrecision));\n    }\n    return Number(num);\n  }\n\n  getRatio(e: KeyboardEvent): number {\n    let ratio = 1;\n    if (e.metaKey || e.ctrlKey) {\n      ratio = 0.1;\n    } else if (e.shiftKey) {\n      ratio = 10;\n    }\n    return ratio;\n  }\n\n  down(e: MouseEvent | KeyboardEvent, ratio?: number): void {\n    if (!this.isFocused) {\n      this.focus();\n    }\n    this.step('down', e, ratio);\n  }\n\n  up(e: MouseEvent | KeyboardEvent, ratio?: number): void {\n    if (!this.isFocused) {\n      this.focus();\n    }\n    this.step('up', e, ratio);\n  }\n\n  getPrecision(value: number): number {\n    const valueString = value.toString();\n    if (valueString.indexOf('e-') >= 0) {\n      return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n    }\n    let precision = 0;\n    if (valueString.indexOf('.') >= 0) {\n      precision = valueString.length - valueString.indexOf('.') - 1;\n    }\n    return precision;\n  }\n\n  // step={1.0} value={1.51}\n  // press +\n  // then value should be 2.51, rather than 2.5\n  // if this.props.precision is undefined\n  // https://github.com/react-component/input-number/issues/39\n  getMaxPrecision(currentValue: string | number, ratio: number): number {\n    if (isNotNil(this.nzPrecision)) {\n      return this.nzPrecision;\n    }\n    const ratioPrecision = this.getPrecision(ratio);\n    const stepPrecision = this.getPrecision(this.nzStep);\n    const currentValuePrecision = this.getPrecision(currentValue as number);\n    if (!currentValue) {\n      return ratioPrecision + stepPrecision;\n    }\n    return Math.max(currentValuePrecision, ratioPrecision + stepPrecision);\n  }\n\n  getPrecisionFactor(currentValue: string | number, ratio: number): number {\n    const precision = this.getMaxPrecision(currentValue, ratio);\n    return Math.pow(10, precision);\n  }\n\n  upStep(val: string | number, rat: number): number {\n    const precisionFactor = this.getPrecisionFactor(val, rat);\n    const precision = Math.abs(this.getMaxPrecision(val, rat));\n    let result;\n    if (typeof val === 'number') {\n      result = ((precisionFactor * val + precisionFactor * this.nzStep * rat) / precisionFactor).toFixed(precision);\n    } else {\n      result = this.nzMin === -Infinity ? this.nzStep : this.nzMin;\n    }\n    return this.toNumber(result);\n  }\n\n  downStep(val: string | number, rat: number): number {\n    const precisionFactor = this.getPrecisionFactor(val, rat);\n    const precision = Math.abs(this.getMaxPrecision(val, rat));\n    let result;\n    if (typeof val === 'number') {\n      result = ((precisionFactor * val - precisionFactor * this.nzStep * rat) / precisionFactor).toFixed(precision);\n    } else {\n      result = this.nzMin === -Infinity ? -this.nzStep : this.nzMin;\n    }\n    return this.toNumber(result);\n  }\n\n  step<T extends keyof NzInputNumberComponent>(type: T, e: MouseEvent | KeyboardEvent, ratio: number = 1): void {\n    this.stop();\n    e.preventDefault();\n    if (this.nzDisabled) {\n      return;\n    }\n    const value = this.getCurrentValidValue(this.parsedValue!) || 0;\n    let val = 0;\n    if (type === 'up') {\n      val = this.upStep(value, ratio);\n    } else if (type === 'down') {\n      val = this.downStep(value, ratio);\n    }\n    const outOfRange = val > this.nzMax || val < this.nzMin;\n    if (val > this.nzMax) {\n      val = this.nzMax;\n    } else if (val < this.nzMin) {\n      val = this.nzMin;\n    }\n    this.setValue(val);\n    this.updateDisplayValue(val);\n    this.isFocused = true;\n    if (outOfRange) {\n      return;\n    }\n    this.autoStepTimer = setTimeout(() => {\n      (this[type] as (e: MouseEvent | KeyboardEvent, ratio: number) => void)(e, ratio);\n    }, 300);\n  }\n\n  stop(): void {\n    if (this.autoStepTimer) {\n      clearTimeout(this.autoStepTimer);\n    }\n  }\n\n  setValue(value: number): void {\n    if (`${this.value}` !== `${value}`) {\n      this.onChange(value);\n    }\n    this.value = value;\n    this.parsedValue = value;\n    this.disabledUp = this.disabledDown = false;\n    if (value || value === 0) {\n      const val = Number(value);\n      if (val >= this.nzMax) {\n        this.disabledUp = true;\n      }\n      if (val <= this.nzMin) {\n        this.disabledDown = true;\n      }\n    }\n  }\n\n  updateDisplayValue(value: number): void {\n    const displayValue = isNotNil(this.nzFormatter(value)) ? this.nzFormatter(value) : '';\n    this.displayValue = displayValue;\n    this.inputElement.nativeElement.value = `${displayValue}`;\n  }\n\n  writeValue(value: number): void {\n    this.value = value;\n    this.setValue(value);\n    this.updateDisplayValue(value);\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(fn: OnChangeType): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: OnTouchedType): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.nzDisabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  focus(): void {\n    this.focusMonitor.focusVia(this.inputElement, 'keyboard');\n  }\n\n  blur(): void {\n    this.inputElement.nativeElement.blur();\n  }\n\n  constructor(\n    private ngZone: NgZone,\n    private elementRef: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    private focusMonitor: FocusMonitor,\n    @Optional() private directionality: Directionality\n  ) {}\n\n  ngOnInit(): void {\n    this.focusMonitor\n      .monitor(this.elementRef, true)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(focusOrigin => {\n        if (!focusOrigin) {\n          this.isFocused = false;\n          this.updateDisplayValue(this.value!);\n          this.nzBlur.emit();\n          Promise.resolve().then(() => this.onTouched());\n        } else {\n          this.isFocused = true;\n          this.nzFocus.emit();\n        }\n      });\n\n    this.dir = this.directionality.value;\n    this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n    });\n\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.inputElement.nativeElement, 'keyup')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => this.stop());\n\n      fromEvent<KeyboardEvent>(this.inputElement.nativeElement, 'keydown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => {\n          const { keyCode } = event;\n\n          if (keyCode !== UP_ARROW && keyCode !== DOWN_ARROW && keyCode !== ENTER) {\n            return;\n          }\n\n          this.ngZone.run(() => {\n            if (keyCode === UP_ARROW) {\n              const ratio = this.getRatio(event);\n              this.up(event, ratio);\n              this.stop();\n            } else if (keyCode === DOWN_ARROW) {\n              const ratio = this.getRatio(event);\n              this.down(event, ratio);\n              this.stop();\n            } else {\n              this.updateDisplayValue(this.value!);\n            }\n\n            this.cdr.markForCheck();\n          });\n        });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.nzFormatter && !changes.nzFormatter.isFirstChange()) {\n      const validValue = this.getCurrentValidValue(this.parsedValue!);\n      this.setValue(validValue);\n      this.updateDisplayValue(validValue);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.nzAutoFocus) {\n      this.focus();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.focusMonitor.stopMonitoring(this.elementRef);\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzInputNumberComponent } from './input-number.component';\n\n@NgModule({\n  imports: [BidiModule, CommonModule, FormsModule, NzIconModule],\n  declarations: [NzInputNumberComponent],\n  exports: [NzInputNumberComponent]\n})\nexport class NzInputNumberModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './input-number.component';\nexport * from './input-number.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}