{"version":3,"file":"useInputNumber.mjs","sources":["../../../../components/input-number/hooks/useInputNumber.tsx"],"sourcesContent":["import { computed, ComputedRef, ref, toRefs, watch } from 'vue';\nimport { useVModel, useReadonly, useDisabled, useCommonClassName } from '@tdesign/shared-hooks';\n\nimport { InputNumberValue, TdInputNumberProps } from '../type';\n\n// 计算逻辑，统一到 common 中，方便各框架复用（如超过 16 位的大数处理）\nimport {\n  canAddNumber,\n  canInputNumber,\n  canReduceNumber,\n  getMaxOrMinValidateResult,\n  getStepValue,\n  formatThousandths,\n  canSetValue,\n  formatUnCompleteNumber,\n  largeNumberToFixed,\n} from '@tdesign/common-js/input-number/number';\n\nimport { StrInputProps } from '../../input';\n\n/**\n * 独立一个组件 Hook 方便用户直接使用相关逻辑 自定义任何样式的数字输入框\n */\nexport default function useInputNumber(props: TdInputNumberProps) {\n  const { classPrefix, SIZE, STATUS } = 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 = useDisabled() as ComputedRef<boolean>;\n\n  const isReadonly = useReadonly();\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    SIZE.value[props.size],\n    {\n      [STATUS.value.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    { [STATUS.value.disabled]: disabledReduce.value },\n  ]);\n\n  const addClasses = computed(() => [\n    `${classPrefix.value}-input-number__increase`,\n    { [STATUS.value.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\n        if (decimalPlaces !== undefined && largeNumberToFixed(inputValue, decimalPlaces, largeNumber) !== val) {\n          let completeValue = inputValue;\n          if (!inputRef.value?.inputRef?.contains(document.activeElement)) {\n            // isToFixed为true 只可能是string\n            completeValue = formatUnCompleteNumber(completeValue, {\n              decimalPlaces: props.decimalPlaces,\n              largeNumber: props.largeNumber,\n              isToFixed: true,\n            }) as string;\n          }\n          setTValue(completeValue, { 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 || isReadonly.value) 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 || isReadonly.value) 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: StrInputProps['onChange'] = (inputValue, { e }) => {\n    // 千分位处理\n    const val = formatThousandths(inputValue);\n    if (!canInputNumber(val, props.largeNumber)) return;\n\n    // 先处理小数位数限制，然后再更新显示值和实际值\n    let processedVal = val;\n    if (props.decimalPlaces !== undefined && val !== '' && val.includes('.')) {\n      const parts = val.split('.');\n      // 获取实际小数位数限制\n      const decimalLimit = typeof props.decimalPlaces === 'number' ? props.decimalPlaces : props.decimalPlaces.places;\n\n      if (parts[1] && parts[1].length > decimalLimit) {\n        // 直接截断为指定小数位数\n        processedVal = `${parts[0]}.${parts[1].substring(0, decimalLimit)}`;\n      }\n    }\n\n    // 更新显示值\n    userInput.value = processedVal;\n\n    if (props.largeNumber) {\n      setTValue(processedVal, { type: 'input', e });\n      return;\n    }\n\n    // 当处理后的值与当前值不同时，才更新\n    const newNumber = processedVal === '' ? undefined : Number(processedVal);\n    if (canSetValue(processedVal, Number(tValue.value))) {\n      setTValue(newNumber, { 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) {\n      // 当值为 undefined 或 null 且最小值不为默认值 -Infinity 时，设置为最小值\n      if ([undefined, null].includes(tValue.value) && min !== -Infinity) {\n        setTValue(min, { type: 'blur', e: ctx.e });\n        props.onBlur?.(min, ctx);\n        return;\n      }\n      // 当值不为 undefined 时，进行范围检查\n      if (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          props.onBlur?.(min, ctx);\n          return;\n        }\n        if (r === 'exceed-maximum') {\n          setTValue(max, { type: 'blur', e: ctx.e });\n          props.onBlur?.(max, ctx);\n          return;\n        }\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) as keyof typeof keyEvent;\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    if (tDisabled.value || isReadonly.value) return;\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    isReadonly,\n  };\n}\n"],"names":["useInputNumber","props","_useCommonClassName","useCommonClassName","classPrefix","SIZE","STATUS","_toRefs","toRefs","value","modelValue","max","min","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","tValue","setTValue","inputRef","ref","userInput","tDisabled","useDisabled","isReadonly","useReadonly","isError","disabledReduce","computed","canReduceNumber","largeNumber","disabledAdd","canAddNumber","wrapClasses","concat","size","_defineProperty","disabled","theme","autoWidth","reduceClasses","addClasses","getUserInput","_inputRef$value","inputStr","String","contains","document","activeElement","num","formatUnCompleteNumber","decimalPlaces","isToFixed","format","fixedNumber","watch","val","inputValue","includes","Number","isNaN","parseFloat","largeNumberToFixed","type","e","_inputRef$value2","completeValue","immediate","_props$onValidate","error","getMaxOrMinValidateResult","onValidate","call","handleStepValue","op","newValue","getStepValue","step","lastValue","overLimit","handleReduce","r","allowInputOverLimit","handleAdd","onInnerInputChange","_ref4","formatThousandths","canInputNumber","processedVal","parts","split","decimalLimit","places","length","substring","newNumber","canSetValue","handleBlur","ctx","_props$onBlur4","Infinity","_props$onBlur","onBlur","_props$onBlur2","_props$onBlur3","handleFocus","_props$onFocus","onFocus","handleKeydown","_props$onKeydown","keyEvent","ArrowUp","ArrowDown","code","key","onKeydown","handleKeyup","_props$onKeyup","onKeyup","handleKeypress","_props$onKeypress","onKeypress","handleEnter","_props$onEnter","onEnter","focus","blur","listeners","onClick"],"mappings":"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"}