{"version":3,"file":"textarea.mjs","sources":["../../src/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 merge from 'lodash/merge';\nimport isUndefined from 'lodash/isUndefined';\n\nimport { getCharacterLength, omit } from '../utils/helper';\nimport calcTextareaHeight from './calcTextareaHeight';\nimport { FormItemInjectionKey } from '../form/const';\nimport setStyle from '../_common/js/utils/set-style';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useFormDisabled } from '../form/hooks';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\n\nimport props from './props';\nimport type { TextareaValue, TdTextareaProps } from './type';\n\nfunction getValidAttrs(obj: object): object {\n  const newObj = {};\n  Object.keys(obj).forEach((key) => {\n    if (!isUndefined(obj[key])) {\n      newObj[key] = obj[key];\n    }\n  });\n  return newObj;\n}\n\nexport default defineComponent({\n  name: 'XTextarea',\n  inheritAttrs: false,\n  props: { ...props },\n\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 = useFormDisabled();\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 = (name: 'keydown' | 'keyup' | 'keypress' | 'change', e: KeyboardEvent | FocusEvent) => {\n      if (disabled.value) return;\n      const _name = `on${name[0].toUpperCase()}${name.slice(1)}`;\n      props[_name]?.(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      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`]: props.readonly,\n        },\n      ];\n    });\n    const inputAttrs = computed<Record<string, any>>(() => {\n      return getValidAttrs({\n        autofocus: props.autofocus,\n        disabled: disabled.value,\n        readonly: props.readonly,\n        placeholder: props.placeholder,\n        maxlength: 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        return characterInfo.length;\n      }\n      return characterInfo;\n    });\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      setStyle(refTextareaElem.value, merge(style, val));\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-${props.status}`]: props.status,\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":["newObj","name","inheritAttrs","props","setup","innerValue","setInnerValue","textareaStyle","height","minHeight","e","nextTick","adjustTextareaHeight","eventDeal","formItem","maxlength","watch","refTextareaElem","deep","expose","focus","blur","onMounted","onFocus","onBlur","onKeydown","onKeyup","onKeypress","_createVNode"],"mappings":"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"}