{"version":3,"file":"useInputNumber.mjs","sources":["../../src/input-number/useInputNumber.tsx"],"sourcesContent":["import { computed, ref, toRefs, watch } from 'vue';\nimport useCommonClassName from '../hooks/useCommonClassName';\nimport useVModel from '../hooks/useVModel';\nimport { InputNumberValue, TdInputNumberProps } from './type';\n// 计算逻辑，统一到 common 中，方便各框架复用（如超过 16 位的大数处理）\nimport {\n  canAddNumber,\n  canInputNumber,\n  canReduceNumber,\n  getMaxOrMinValidateResult,\n  getStepValue,\n  formatThousandths,\n  canSetValue,\n  formatUnCompleteNumber,\n  largeNumberToFixed,\n} from '../_common/js/input-number/number';\nimport { useFormDisabled } from '../form/hooks';\nimport { TdInputProps } from '../input';\n\n/**\n * 独立一个组件 Hook 方便用户直接使用相关逻辑 自定义任何样式的数字输入框\n */\nexport default function useInputNumber(props: TdInputNumberProps) {\n  const { classPrefix, sizeClassNames, statusClassNames } = useCommonClassName();\n  const { value, modelValue, max, min } = toRefs(props);\n  // 统一处理受控、非受控、语法糖 v-model 等\n  const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n  const inputRef = ref();\n  const userInput = ref('');\n\n  const tDisabled = useFormDisabled();\n\n  const isError = ref<'exceed-maximum' | 'below-minimum'>();\n\n  const disabledReduce = computed(\n    () => tDisabled.value || !canReduceNumber(tValue.value, props.min, props.largeNumber),\n  );\n\n  const disabledAdd = computed(() => tDisabled.value || !canAddNumber(tValue.value, props.max, props.largeNumber));\n\n  const wrapClasses = computed(() => [\n    `${classPrefix.value}-input-number`,\n    sizeClassNames[props.size],\n    {\n      [statusClassNames.disabled]: tDisabled.value,\n      [`${classPrefix.value}-is-controls-right`]: props.theme === 'column',\n      [`${classPrefix.value}-input-number--${props.theme}`]: props.theme,\n      [`${classPrefix.value}-input-number--auto-width`]: props.autoWidth,\n    },\n  ]);\n\n  const reduceClasses = computed(() => [\n    `${classPrefix.value}-input-number__decrease`,\n    { [statusClassNames.disabled]: disabledReduce.value },\n  ]);\n\n  const addClasses = computed(() => [\n    `${classPrefix.value}-input-number__increase`,\n    { [statusClassNames.disabled]: disabledAdd.value },\n  ]);\n\n  const getUserInput = (value: InputNumberValue) => {\n    if (!value && value !== 0) return '';\n    let inputStr = value || value === 0 ? String(value) : '';\n    if (!inputRef.value?.inputRef?.contains(document.activeElement)) {\n      const num = formatUnCompleteNumber(inputStr, {\n        decimalPlaces: props.decimalPlaces,\n        largeNumber: props.largeNumber,\n        isToFixed: true,\n      });\n      inputStr = num || num === 0 ? String(num) : '';\n      if (props.format) {\n        inputStr = String(props.format(value, { fixedNumber: inputStr }));\n      }\n    }\n    return inputStr;\n  };\n\n  watch(\n    tValue,\n    (val) => {\n      const { largeNumber, decimalPlaces } = props;\n      const inputValue = [undefined, null].includes(val) ? '' : String(val);\n      // userInput.value 为非合法数字，则表示用户正在输入，此时无需处理\n      if (!largeNumber && !Number.isNaN(userInput.value)) {\n        if (parseFloat(userInput.value) !== val) {\n          userInput.value = getUserInput(inputValue);\n        }\n        const fixedNumber = Number(largeNumberToFixed(inputValue, decimalPlaces, largeNumber));\n        if (\n          decimalPlaces !== undefined &&\n          ![undefined, null].includes(val) &&\n          Number(fixedNumber) !== Number(tValue.value)\n        ) {\n          setTValue(fixedNumber, { type: 'props', e: undefined });\n        }\n      }\n      if (largeNumber) {\n        userInput.value = getUserInput(inputValue);\n        if (decimalPlaces !== undefined && largeNumberToFixed(inputValue, decimalPlaces, largeNumber) !== val) {\n          setTValue(userInput.value, { type: 'props', e: undefined });\n        }\n      }\n    },\n    { immediate: true },\n  );\n\n  watch(\n    [tValue, max, min],\n    () => {\n      // @ts-ignore 没有输入完成，则无需校验\n      if ([undefined, '', null].includes(tValue.value)) return;\n      const { max, min, largeNumber } = props;\n      const error = getMaxOrMinValidateResult({\n        value: tValue.value,\n        largeNumber,\n        max,\n        min,\n      });\n      isError.value = error;\n      props.onValidate?.({ error });\n    },\n    { immediate: true },\n  );\n\n  const handleStepValue = (op: 'add' | 'reduce') => {\n    const newValue = getStepValue({\n      op,\n      step: props.step,\n      max: props.max,\n      min: props.min,\n      lastValue: tValue.value,\n      largeNumber: props.largeNumber,\n    });\n    const { largeNumber, max, min } = props;\n    const overLimit = getMaxOrMinValidateResult({\n      value: newValue,\n      largeNumber,\n      max,\n      min,\n    });\n    return {\n      overLimit,\n      newValue,\n    };\n  };\n\n  const handleReduce = (e: KeyboardEvent | MouseEvent) => {\n    if (disabledReduce.value || props.readonly) return;\n    const r = handleStepValue('reduce');\n    if (r.overLimit && !props.allowInputOverLimit) return;\n    setTValue(r.newValue, { type: 'reduce', e });\n  };\n\n  const handleAdd = (e: KeyboardEvent | MouseEvent) => {\n    if (disabledAdd.value || props.readonly) return;\n    const r = handleStepValue('add');\n    if (r.overLimit && !props.allowInputOverLimit) return;\n    setTValue(r.newValue, { type: 'add', e });\n  };\n\n  const onInnerInputChange: TdInputProps['onChange'] = (inputValue, { e }) => {\n    // 千分位处理\n    const val = formatThousandths(inputValue);\n\n    if (!canInputNumber(val, props.largeNumber)) return;\n\n    userInput.value = val;\n\n    if (props.largeNumber) {\n      setTValue(val, { type: 'input', e });\n      return;\n    }\n\n    if (canSetValue(String(val), Number(tValue.value))) {\n      const newVal = val === '' ? undefined : Number(val);\n      setTValue(newVal, { type: 'input', e });\n    }\n  };\n\n  const handleBlur = (value: string, ctx: { e: FocusEvent }) => {\n    const { largeNumber, max, min, decimalPlaces } = props;\n    if (!props.allowInputOverLimit && tValue.value !== undefined) {\n      const r = getMaxOrMinValidateResult({ value: tValue.value, largeNumber, max, min });\n      if (r === 'below-minimum') {\n        setTValue(min, { type: 'blur', e: ctx.e });\n        return;\n      }\n      if (r === 'exceed-maximum') {\n        setTValue(max, { type: 'blur', e: ctx.e });\n        return;\n      }\n    }\n    const newValue = formatUnCompleteNumber(value, {\n      decimalPlaces,\n      largeNumber,\n    });\n    userInput.value = getUserInput(newValue);\n\n    if (newValue !== tValue.value) {\n      setTValue(newValue, { type: 'blur', e: ctx.e });\n    }\n    props.onBlur?.(newValue, ctx);\n  };\n\n  const handleFocus = (value: string, ctx: { e: FocusEvent }) => {\n    userInput.value = tValue.value || tValue.value === 0 ? String(tValue.value) : '';\n    props.onFocus?.(value, ctx);\n  };\n\n  const handleKeydown = (value: string, ctx: { e: KeyboardEvent }) => {\n    if (tDisabled.value) return;\n    const { e } = ctx;\n    const keyEvent = {\n      ArrowUp: handleAdd,\n      ArrowDown: handleReduce,\n    };\n    const code = e.code || e.key;\n    if (keyEvent[code] !== undefined) {\n      keyEvent[code](e);\n    }\n    props.onKeydown?.(value, ctx);\n  };\n\n  const handleKeyup = (value: string, ctx: { e: KeyboardEvent }) => {\n    props.onKeyup?.(value, ctx);\n  };\n\n  const handleKeypress = (value: string, ctx: { e: KeyboardEvent }) => {\n    props.onKeypress?.(value, ctx);\n  };\n\n  const handleEnter = (value: string, ctx: { e: KeyboardEvent }) => {\n    userInput.value = getUserInput(value);\n    const newValue = formatUnCompleteNumber(value, {\n      decimalPlaces: props.decimalPlaces,\n      largeNumber: props.largeNumber,\n    });\n    if (newValue !== value && String(newValue) !== value) {\n      setTValue(newValue, { type: 'enter', e: ctx.e });\n    }\n    props.onEnter?.(newValue, ctx);\n  };\n\n  const focus = () => {\n    (inputRef.value as any).focus();\n  };\n\n  const blur = () => {\n    (inputRef.value as any).blur();\n  };\n\n  const listeners = {\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    onKeydown: handleKeydown,\n    onKeyup: handleKeyup,\n    onKeypress: handleKeypress,\n    onEnter: handleEnter,\n    onClick: focus,\n  };\n\n  return {\n    classPrefix,\n    wrapClasses,\n    reduceClasses,\n    addClasses,\n    tDisabled,\n    isError,\n    listeners,\n    userInput,\n    tValue,\n    inputRef,\n    focus,\n    blur,\n    handleReduce,\n    handleAdd,\n    onInnerInputChange,\n  };\n}\n"],"names":["tValue","setTValue","isToFixed","inputStr","fixedNumber","watch","userInput","type","e","immediate","largeNumber","max","min","error","op","value","overLimit","newValue","decimalPlaces","ArrowUp","ArrowDown","keyEvent","inputRef","onBlur","onFocus","onKeydown","onKeyup","onKeypress","onEnter","onClick","classPrefix","wrapClasses","reduceClasses","addClasses","tDisabled","isError","listeners","focus","blur","handleReduce","handleAdd","onInnerInputChange"],"mappings":"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"}