{"version":3,"file":"textarea.mjs","sources":["../../../components/textarea/textarea.tsx"],"sourcesContent":["import {\n  defineComponent,\n  computed,\n  watch,\n  ref,\n  nextTick,\n  onMounted,\n  toRefs,\n  inject,\n  StyleValue,\n  CSSProperties,\n} from 'vue';\nimport { isObject, merge, omit } from 'lodash-es';\n\nimport { calcTextareaHeight } from './utils';\nimport { FormItemInjectionKey } from '../form/consts';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport { getCharacterLength } from '@tdesign/common-js/utils/helper';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { useReadonly } from '../hooks/useReadonly';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { useLengthLimit } from '../input/hooks/useLengthLimit';\n\nimport props from './props';\nimport type { TextareaValue, TdTextareaProps } from './type';\n\nimport { getValidAttrs } from '@tdesign/common-js/utils/helper';\n\nexport default defineComponent({\n  name: 'TTextarea',\n  inheritAttrs: false,\n  props,\n  setup(props: TdTextareaProps, { attrs, expose }) {\n    const prefix = usePrefixClass();\n    const name = usePrefixClass('textarea');\n    const TEXTAREA_TIPS_CLASS = computed(() => `${name.value}__tips`);\n    const TEXTAREA_LIMIT = computed(() => `${name.value}__limit`);\n\n    const { value, modelValue } = toRefs(props);\n    const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n    const disabled = useDisabled();\n    const isReadonly = useReadonly();\n    const textareaStyle = ref<CSSProperties>({});\n\n    const refTextareaElem = ref<HTMLTextAreaElement>();\n    const focused = ref(false);\n    const isComposing = ref(false);\n\n    const focus = () => refTextareaElem.value?.focus();\n    const blur = () => refTextareaElem.value?.blur();\n\n    // methods\n    const adjustTextareaHeight = () => {\n      if (props.autosize === true) {\n        textareaStyle.value = calcTextareaHeight(refTextareaElem.value);\n      } else if (props.autosize && typeof props.autosize === 'object') {\n        const { minRows, maxRows } = props.autosize;\n        textareaStyle.value = calcTextareaHeight(refTextareaElem.value, minRows, maxRows);\n      } else if (attrs.rows) {\n        textareaStyle.value = { height: 'auto', minHeight: 'auto' };\n      } else if (attrs.style && refTextareaElem.value?.style?.height) {\n        textareaStyle.value = { height: refTextareaElem.value.style.height };\n      }\n    };\n\n    const setInputValue = (v: TextareaValue = '') => {\n      const textareaElem = refTextareaElem.value;\n      const sV = String(v);\n      if (!textareaElem) {\n        return;\n      }\n\n      if (textareaElem.value !== sV) {\n        textareaElem.value = sV;\n        innerValue.value = sV;\n      }\n    };\n    const inputValueChangeHandle = (e: InputEvent) => {\n      const { target } = e;\n      let val = (target as HTMLInputElement).value;\n      if (props.maxcharacter && props.maxcharacter >= 0) {\n        const stringInfo = getCharacterLength(val, props.maxcharacter);\n        val = typeof stringInfo === 'object' && stringInfo.characters;\n      }\n      !isComposing.value && setInnerValue(val, { e });\n      nextTick(() => setInputValue(val));\n      adjustTextareaHeight();\n    };\n\n    const handleInput = (e: InputEvent) => {\n      inputValueChangeHandle(e);\n    };\n\n    const onCompositionstart = () => {\n      isComposing.value = true;\n    };\n\n    const onCompositionend = (e: InputEvent | CompositionEvent) => {\n      isComposing.value = false;\n      inputValueChangeHandle(e as InputEvent);\n    };\n\n    const eventDeal = <T extends 'keydown' | 'keyup' | 'keypress'>(name: T, e: KeyboardEvent) => {\n      if (disabled.value) return;\n      const eventName = `on${name[0].toUpperCase()}${name.slice(1)}` as `on${Capitalize<T>}`;\n      props[eventName]?.(innerValue.value, { e });\n    };\n\n    const emitKeyDown = (e: KeyboardEvent) => {\n      eventDeal('keydown', e);\n    };\n    const emitKeyUp = (e: KeyboardEvent) => {\n      eventDeal('keyup', e);\n    };\n    const emitKeypress = (e: KeyboardEvent) => {\n      eventDeal('keypress', e);\n    };\n\n    const emitFocus = (e: FocusEvent) => {\n      adjustTextareaHeight();\n      if (disabled.value) return;\n      focused.value = true;\n      props.onFocus?.(innerValue.value, { e });\n    };\n\n    const formItem = inject(FormItemInjectionKey, undefined);\n    const emitBlur = (e: FocusEvent) => {\n      if (!e.target) return;\n      adjustTextareaHeight();\n      focused.value = false;\n      props.onBlur?.(innerValue.value, { e });\n      formItem?.handleBlur();\n    };\n\n    // computed\n    const textareaClasses = computed(() => {\n      return [\n        name.value,\n        {\n          [`${prefix.value}-is-disabled`]: disabled.value,\n          [`${prefix.value}-is-readonly`]: isReadonly.value,\n        },\n      ];\n    });\n    const inputAttrs = computed<Record<string, any>>(() => {\n      return getValidAttrs({\n        autofocus: props.autofocus,\n        disabled: disabled.value,\n        readonly: isReadonly.value,\n        placeholder: props.placeholder,\n        maxlength: (!props.allowInputOverMax && props.maxlength) || undefined,\n        name: props.name || undefined,\n      });\n    });\n    const characterNumber = computed(() => {\n      const characterInfo = getCharacterLength(String(innerValue.value || ''));\n      if (typeof characterInfo === 'object') {\n        // @ts-ignore\n        // TODO: 这里的写法本身就有问题，因为 getCharacterLength(String(innerValue.value || '')) 一定会返回 number，所以这个分支肯定是进不了的，除非 getCharacterLength 写得有问题\n        return characterInfo.length;\n      }\n      return characterInfo;\n    });\n\n    const limitParams = computed(() => ({\n      value: [undefined, null].includes(innerValue.value) ? undefined : String(innerValue.value),\n      status: props.status,\n      maxlength: Number(props.maxlength),\n      maxcharacter: props.maxcharacter,\n      allowInputOverMax: props.allowInputOverMax,\n      onValidate: props.onValidate,\n    }));\n    const { tStatus } = useLengthLimit(limitParams);\n\n    // watch\n    watch(\n      () => innerValue.value,\n      () => adjustTextareaHeight(),\n    );\n\n    watch(refTextareaElem, (el) => {\n      if (!el) return;\n      adjustTextareaHeight();\n    });\n\n    watch(\n      () => props.autofocus,\n      (val) => {\n        if (val) {\n          refTextareaElem.value.focus();\n        }\n      },\n    );\n\n    watch(textareaStyle, (val) => {\n      const { style } = attrs as { style: StyleValue };\n      if (isObject(style)) {\n        setStyle(refTextareaElem.value, merge(style, val) as Record<string, any>);\n      } else {\n        setStyle(refTextareaElem.value, val);\n      }\n    });\n\n    watch(innerValue, () => {\n      nextTick(() => adjustTextareaHeight());\n    });\n\n    watch(() => props.autosize, adjustTextareaHeight, { deep: true });\n\n    expose({\n      focus,\n      blur,\n    });\n\n    onMounted(() => {\n      adjustTextareaHeight();\n    });\n\n    const renderTNodeJSX = useTNodeJSX();\n    return () => {\n      const inputEvents = getValidAttrs({\n        onFocus: emitFocus,\n        onBlur: emitBlur,\n        onKeydown: emitKeyDown,\n        onKeyup: emitKeyUp,\n        onKeypress: emitKeypress,\n      });\n      const { STATUS } = useCommonClassName();\n      const classes = computed(() => [\n        `${name.value}__inner`,\n        {\n          [`${prefix.value}-is-${tStatus.value}`]: tStatus.value,\n          [STATUS.value.disabled]: disabled.value,\n          [STATUS.value.focused]: focused.value,\n          [`${prefix.value}-resize-none`]: typeof props.autosize === 'object',\n        },\n        'narrow-scrollbar',\n      ]);\n\n      const tips = renderTNodeJSX('tips');\n\n      const textTips = tips && (\n        <div class={`${TEXTAREA_TIPS_CLASS.value} ${name.value}__tips--${props.status || 'normal'}`}>{tips}</div>\n      );\n\n      const limitText =\n        (props.maxcharacter && (\n          <span class={TEXTAREA_LIMIT.value}>{`${characterNumber.value}/${props.maxcharacter}`}</span>\n        )) ||\n        (!props.maxcharacter && props.maxlength && (\n          <span class={TEXTAREA_LIMIT.value}>{`${innerValue.value ? String(innerValue.value)?.length : 0}/${\n            props.maxlength\n          }`}</span>\n        ));\n\n      return (\n        <div class={textareaClasses.value} {...omit(attrs, ['style'])}>\n          <textarea\n            onInput={handleInput}\n            onCompositionstart={onCompositionstart}\n            onCompositionend={onCompositionend}\n            ref={refTextareaElem}\n            value={innerValue.value}\n            class={classes.value}\n            {...inputEvents}\n            {...inputAttrs.value}\n          ></textarea>\n          {textTips || limitText ? (\n            <div\n              class={[\n                `${name.value}__info_wrapper`,\n                {\n                  [`${name.value}__info_wrapper_align`]: !textTips,\n                },\n              ]}\n            >\n              {textTips}\n              {limitText}\n            </div>\n          ) : null}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","setup","attrs","_ref","expose","prefix","usePrefixClass","TEXTAREA_TIPS_CLASS","computed","concat","value","TEXTAREA_LIMIT","_toRefs","toRefs","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","disabled","useDisabled","isReadonly","useReadonly","textareaStyle","ref","refTextareaElem","focused","isComposing","focus","_refTextareaElem$valu","blur","_refTextareaElem$valu2","adjustTextareaHeight","_refTextareaElem$valu3","autosize","calcTextareaHeight","_typeof","_props2$autosize","minRows","maxRows","rows","height","minHeight","style","setInputValue","v","arguments","length","undefined","textareaElem","sV","String","inputValueChangeHandle","e","target","val","maxcharacter","stringInfo","getCharacterLength","characters","nextTick","handleInput","onCompositionstart","onCompositionend","eventDeal","_props2$eventName","eventName","toUpperCase","slice","emitKeyDown","emitKeyUp","emitKeypress","emitFocus","_props2$onFocus","onFocus","formItem","inject","FormItemInjectionKey","emitBlur","_props2$onBlur","onBlur","handleBlur","textareaClasses","_defineProperty","inputAttrs","getValidAttrs","autofocus","readonly","placeholder","maxlength","allowInputOverMax","characterNumber","characterInfo","limitParams","includes","status","Number","onValidate","_useLengthLimit","useLengthLimit","tStatus","watch","el","isObject","setStyle","merge","deep","onMounted","renderTNodeJSX","useTNodeJSX","_String","inputEvents","onKeydown","onKeyup","onKeypress","_useCommonClassName","useCommonClassName","STATUS","classes","tips","textTips","_createVNode","limitText","_mergeProps","omit"],"mappings":"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"}