{"version":3,"file":"input-number4.mjs","sources":["../../../../../../packages/components/input-number/src/input-number.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(inputNumberSize),\n      ns.is('disabled', inputNumberDisabled),\n      ns.is('without-controls', !controls),\n      ns.is('controls-right', controlsAtRight),\n    ]\"\n    @dragstart.prevent\n  >\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"decrease\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.decrease')\"\n      :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n      @keydown.enter=\"decrease\"\n    >\n      <el-icon>\n        <arrow-down v-if=\"controlsAtRight\" />\n        <minus v-else />\n      </el-icon>\n    </span>\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"increase\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.increase')\"\n      :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n      @keydown.enter=\"increase\"\n    >\n      <el-icon>\n        <arrow-up v-if=\"controlsAtRight\" />\n        <plus v-else />\n      </el-icon>\n    </span>\n    <el-input\n      :id=\"id\"\n      ref=\"input\"\n      type=\"number\"\n      :step=\"step\"\n      :model-value=\"displayValue\"\n      :placeholder=\"placeholder\"\n      :disabled=\"inputNumberDisabled\"\n      :size=\"inputNumberSize\"\n      :max=\"max\"\n      :min=\"min\"\n      :name=\"name\"\n      :label=\"label\"\n      :validate-event=\"false\"\n      @keydown.up.prevent=\"increase\"\n      @keydown.down.prevent=\"decrease\"\n      @blur=\"handleBlur\"\n      @focus=\"handleFocus\"\n      @input=\"handleInput\"\n      @change=\"handleInputChange\"\n    />\n  </div>\n</template>\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  onMounted,\n  onUpdated,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { isNil } from 'lodash-unified'\n\nimport { ElIcon } from '@element-plus/components/icon'\nimport { RepeatClick } from '@element-plus/directives'\nimport {\n  useDisabled,\n  useFormItem,\n  useLocale,\n  useNamespace,\n  useSize,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { debugWarn, isNumber, isString, isUndefined } from '@element-plus/utils'\nimport { ArrowDown, ArrowUp, Minus, Plus } from '@element-plus/icons-vue'\nimport { inputNumberEmits, inputNumberProps } from './input-number'\n\nimport type { ComponentPublicInstance } from 'vue'\n\ninterface IData {\n  currentValue: number | null | undefined\n  userInput: null | number | string\n}\n\nexport default defineComponent({\n  name: 'ElInputNumber',\n  components: {\n    ElInput,\n    ElIcon,\n    ArrowUp,\n    ArrowDown,\n    Plus,\n    Minus,\n  },\n  directives: {\n    RepeatClick,\n  },\n  props: inputNumberProps,\n  emits: inputNumberEmits,\n  setup(props, { emit }) {\n    const input = ref<ComponentPublicInstance<typeof ElInput>>()\n    const data = reactive<IData>({\n      currentValue: props.modelValue,\n      userInput: null,\n    })\n    const { t } = useLocale()\n    const { formItem } = useFormItem()\n    const ns = useNamespace('input-number')\n\n    const minDisabled = computed(\n      () =>\n        isNumber(props.modelValue) &&\n        ensurePrecision(props.modelValue, -1) < props.min\n    )\n    const maxDisabled = computed(\n      () =>\n        isNumber(props.modelValue) &&\n        ensurePrecision(props.modelValue) > props.max\n    )\n\n    const numPrecision = computed(() => {\n      const stepPrecision = getPrecision(props.step)\n      if (!isUndefined(props.precision)) {\n        if (stepPrecision > props.precision) {\n          debugWarn(\n            'InputNumber',\n            'precision should not be less than the decimal places of step'\n          )\n        }\n        return props.precision\n      } else {\n        return Math.max(getPrecision(props.modelValue), stepPrecision)\n      }\n    })\n    const controlsAtRight = computed(() => {\n      return props.controls && props.controlsPosition === 'right'\n    })\n\n    const inputNumberSize = useSize()\n    const inputNumberDisabled = useDisabled()\n\n    const displayValue = computed(() => {\n      if (data.userInput !== null) {\n        return data.userInput\n      }\n      let currentValue: number | string | undefined | null = data.currentValue\n      if (isNil(currentValue)) return ''\n      if (isNumber(currentValue)) {\n        if (Number.isNaN(currentValue)) return ''\n        if (!isUndefined(props.precision)) {\n          currentValue = currentValue.toFixed(props.precision)\n        }\n      }\n      return currentValue\n    })\n    const toPrecision = (num: number, pre?: number) => {\n      if (isUndefined(pre)) pre = numPrecision.value\n      const digits = num.toString().split('.')\n      if (digits.length > 1) {\n        const integer = digits[0]\n        const decimal = Math.round(+digits[1] / 10 ** (digits[1].length - pre))\n        return Number.parseFloat(`${integer}.${decimal}`)\n      }\n      return Number.parseFloat(`${Math.round(num * 10 ** pre) / 10 ** pre}`)\n    }\n    const getPrecision = (value: number | null | undefined) => {\n      if (isNil(value)) return 0\n      const valueString = value.toString()\n      const dotPosition = valueString.indexOf('.')\n      let precision = 0\n      if (dotPosition !== -1) {\n        precision = valueString.length - dotPosition - 1\n      }\n      return precision\n    }\n    const ensurePrecision = (val: number, coefficient: 1 | -1 = 1) => {\n      if (!isNumber(val)) return data.currentValue\n      // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n      return toPrecision(val + props.step * coefficient)\n    }\n    const increase = () => {\n      if (inputNumberDisabled.value || maxDisabled.value) return\n      const value = props.modelValue || 0\n      const newVal = ensurePrecision(value)\n      setCurrentValue(newVal)\n    }\n    const decrease = () => {\n      if (inputNumberDisabled.value || minDisabled.value) return\n      const value = props.modelValue || 0\n      const newVal = ensurePrecision(value, -1)\n      setCurrentValue(newVal)\n    }\n    const verifyValue = (\n      value: number | string | null | undefined,\n      update?: boolean\n    ): number | null | undefined => {\n      const { max, min, step, precision, stepStrictly, valueOnClear } = props\n      let newVal = Number(value)\n      if (isNil(value) || Number.isNaN(newVal)) {\n        return null\n      }\n      if (value === '') {\n        if (valueOnClear === null) {\n          return null\n        }\n        newVal = isString(valueOnClear)\n          ? { min, max }[valueOnClear]\n          : valueOnClear\n      }\n      if (stepStrictly) {\n        newVal = Math.round(newVal / step) * step\n      }\n      if (!isUndefined(precision)) {\n        newVal = toPrecision(newVal, precision)\n      }\n      if (newVal > max || newVal < min) {\n        newVal = newVal > max ? max : min\n        update && emit('update:modelValue', newVal)\n      }\n      return newVal\n    }\n    const setCurrentValue = (value: number | string | null | undefined) => {\n      const oldVal = data.currentValue\n      const newVal = verifyValue(value)\n      if (oldVal === newVal) return\n      data.userInput = null\n      emit('update:modelValue', newVal)\n      emit('input', newVal)\n      emit('change', newVal, oldVal)\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n      data.currentValue = newVal\n    }\n    const handleInput = (value: string) => {\n      return (data.userInput = value)\n    }\n    const handleInputChange = (value: string) => {\n      const newVal = value !== '' ? Number(value) : ''\n      if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n        setCurrentValue(newVal)\n      }\n      data.userInput = null\n    }\n\n    const focus = () => {\n      input.value?.focus?.()\n    }\n\n    const blur = () => {\n      input.value?.blur?.()\n    }\n\n    const handleFocus = (event: MouseEvent | FocusEvent) => {\n      emit('focus', event)\n    }\n\n    const handleBlur = (event: MouseEvent | FocusEvent) => {\n      emit('blur', event)\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n\n    watch(\n      () => props.modelValue,\n      (value) => {\n        data.currentValue = verifyValue(value, true)\n        data.userInput = null\n      },\n      { immediate: true }\n    )\n    onMounted(() => {\n      const { min, max, modelValue } = props\n      const innerInput = input.value?.input as HTMLInputElement\n      innerInput.setAttribute('role', 'spinbutton')\n      if (Number.isFinite(max)) {\n        innerInput.setAttribute('aria-valuemax', String(max))\n      } else {\n        innerInput.removeAttribute('aria-valuemax')\n      }\n      if (Number.isFinite(min)) {\n        innerInput.setAttribute('aria-valuemin', String(min))\n      } else {\n        innerInput.removeAttribute('aria-valuemin')\n      }\n      innerInput.setAttribute('aria-valuenow', String(data.currentValue))\n      innerInput.setAttribute(\n        'aria-disabled',\n        String(inputNumberDisabled.value)\n      )\n      if (!isNumber(modelValue) && modelValue != null) {\n        let val: number | null = Number(modelValue)\n        if (Number.isNaN(val)) {\n          val = null\n        }\n        emit('update:modelValue', val)\n      }\n    })\n    onUpdated(() => {\n      const innerInput = input.value?.input\n      innerInput?.setAttribute('aria-valuenow', data.currentValue)\n    })\n    return {\n      t,\n      input,\n      displayValue,\n      handleInput,\n      handleInputChange,\n      controlsAtRight,\n      decrease,\n      increase,\n      inputNumberSize,\n      inputNumberDisabled,\n      maxDisabled,\n      minDisabled,\n      focus,\n      blur,\n      handleFocus,\n      handleBlur,\n      ns,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_normalizeClass","_withModifiers","_withDirectives","_createBlock","_createCommentVNode","_createVNode","_withKeys"],"mappings":"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"}