{"version":3,"file":"input-number.vue2.mjs","sources":["../../../../../packages/components/input-number/src/input-number.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElInputNumber'\n});\n</script>\n<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(inputNumberSize),\n      ns.is('disabled', inputNumberDisabled),\n      ns.is('without-controls', !controls)\n    ]\"\n    @dragstart.prevent\n  >\n    <el-input\n      ref=\"input\"\n      type=\"number\"\n      :step=\"step\"\n      v-model=\"userInput\"\n      :placeholder=\"placeholder\"\n      :disabled=\"inputNumberDisabled\"\n      :size=\"inputNumberSize\"\n      :max=\"max\"\n      :min=\"min\"\n      :clearable=\"clearable\"\n      @keydown.up.prevent=\"increase\"\n      @keydown.down.prevent=\"decrease\"\n      @blur=\"handleBlur\"\n      @focus=\"emit('focus', $event)\"\n      @change=\"handleInputChange\"\n    >\n      <template\n        v-if=\"append !== false && (append || $slots.append || money)\"\n        #append\n      >\n        <slot name=\"append\">\n          {{ append || '元' }}\n        </slot>\n      </template>\n    </el-input>\n\n    <template v-if=\"controls\">\n      <span\n        @click=\"decrease\"\n        role=\"button\"\n        :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n      >\n        <el-icon>\n          <ArrowDown />\n        </el-icon>\n      </span>\n\n      <span\n        @click=\"increase\"\n        role=\"button\"\n        :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n      >\n        <el-icon>\n          <ArrowUp />\n        </el-icon>\n      </span>\n    </template>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, watch, shallowRef, nextTick } from 'vue'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { useFormItem, useNamespace } from '@element-ultra/hooks'\nimport ElInput from '@element-ultra/components/input'\nimport { ArrowUp, ArrowDown } from 'icon-ultra'\nimport { inputNumberProps, inputNumberEmits } from './input-number'\nimport type { ComponentPublicInstance } from 'vue'\nimport { plus, minus, mul, divide } from '@element-ultra/utils'\n\n// 数值精度\n// 将计算的数值同时去掉所有小数点\n\n\nconst props = defineProps(inputNumberProps)\nconst emit = defineEmits(inputNumberEmits)\n\nconst input = ref<ComponentPublicInstance<typeof ElInput>>()\n\nconst { formItem, formDisabled, formSize } = useFormItem()\nconst ns = useNamespace('input-number')\n\nconst inputNumberDisabled = computed(() => {\n  return props.disabled ?? formDisabled.value\n})\nconst inputNumberSize = computed(() => {\n  return props.size ?? formSize.value\n})\n\n/**\n * 获取合法的值\n * 在 min - max值之间\n * 符合精度\n */\nfunction getValidValue(value: number): number\nfunction getValidValue(): undefined\nfunction getValidValue(value?: number): number | undefined\nfunction getValidValue(value?: number) {\n  if (value === undefined) {\n    return value\n  }\n  // 确保在最大值最小值之间\n  let { min, max, precision, multiple } = props\n  min = divide(min, multiple)\n  max = divide(max, multiple)\n  if (value < min) {\n    value = min\n  }\n  if (value > max) {\n    value = max\n  }\n  // 确保精度\n  if (precision === undefined || ~~precision < 0) return value\n\n  let factor = Math.pow(10, precision)\n  // 转化成整数计算\n  let ret = Math.round(value * factor) / factor\n\n  return ret\n}\n\nconst _increase = () => {\n  return plus(divide(props.modelValue ?? 0, props.multiple), props.step)\n}\n\nconst _decrease = () => {\n  return minus(divide(props.modelValue ?? 0, props.multiple), props.step)\n}\n\nconst increase = () => {\n  if (inputNumberDisabled.value || maxDisabled.value) return\n  changedByEvent.value = true\n  emitValue(_increase())\n  nextTick(() => setUserInput())\n  changedByEvent.value = true\n}\nconst decrease = () => {\n  if (inputNumberDisabled.value || minDisabled.value) return\n  changedByEvent.value = true\n  emitValue(_decrease())\n  nextTick(() => setUserInput())\n  changedByEvent.value = true\n}\n\nconst minDisabled = computed(\n  () => _decrease() < divide(props.min, props.multiple)\n)\nconst maxDisabled = computed(\n  () => _increase() > divide(props.max, props.multiple)\n)\n\nconst userInput = shallowRef('')\nconst setUserInput = () => {\n  const { modelValue, money, multiple } = props\n\n  if (!modelValue && modelValue !== 0) {\n    userInput.value = ''\n    return\n  }\n\n  // 输入值 = 输出值(modelValue) / 输出倍数(multiple)\n  const inputValue = getValidValue(divide(modelValue, multiple))\n\n  if (money) {\n    const isNegative = (inputValue ?? 0) < 0\n\n    let valStr = Math.abs(inputValue) + ''\n    let [valIntStr, valDotStr] = valStr.split('.')\n\n    let group: string[] = []\n    let i = valIntStr.length\n    while (i > 0) {\n      group.unshift(valIntStr.slice(i - 3 > 0 ? i - 3 : 0, i) + '')\n      i -= 3\n    }\n    valStr = group.join(',')\n\n    if (valDotStr) {\n      valStr += `.${valDotStr}`\n    }\n    userInput.value = isNegative ? '-' + valStr : valStr\n  } else {\n    userInput.value = inputValue + ''\n  }\n}\n\nconst emitValue = (newVal?: number) => {\n  const oldVal = props.modelValue\n\n  // 有值\n  if (newVal !== undefined) {\n    newVal = getValidValue(newVal)\n  }\n\n  const newValWithMultiple =\n    newVal !== undefined ? mul(newVal, props.multiple) : newVal\n  if (oldVal === newValWithMultiple) return\n\n  emit('update:modelValue', newValWithMultiple)\n  emit('input', newValWithMultiple)\n  emit('change', newValWithMultiple, oldVal)\n}\n\nconst handleInputChange = (value: string) => {\n  changedByEvent.value = true\n  value = value.replace(/,/g, '')\n  let numberValue = value ? +value : undefined\n  if (!Number.isNaN(numberValue)) {\n    emitValue(numberValue)\n  }\n  setUserInput()\n  changedByEvent.value = false\n}\n\nconst handleBlur = (event: FocusEvent) => {\n  emit('blur', event)\n  formItem?.validate()\n}\n\n/** 非事件(用户操作)改变的值的变化 */\nconst changedByEvent = shallowRef(false)\nwatch(\n  () => props.modelValue,\n  v => {\n    if (changedByEvent.value) return\n    setUserInput()\n  },\n  { immediate: true }\n)\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":"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"}