{"version":3,"file":"TextArea.cjs","sources":["../../../../../../packages/components/input/src/TextArea.tsx"],"sourcesContent":["import type { FocusEventHandler, VueNode } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type { InputFocusOptions } from './interface';\nimport { classNames, getMergedStatus, getStatusClassNames, omit } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue';\n\n// CSSINJS\nimport { useInjectDisabled } from '../../config-provider';\n\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport { FormItemInputContext, useInjectFormItemContext } from '../../form/src/FormItemContext';\nimport useStyle from '../style';\nimport ClearableLabeledInput from './ClearableLabeledInput';\nimport { textAreaProps } from './props';\nimport ResizableTextArea from './ResizableTextArea';\nimport { fixControlledValue, resolveOnChange, triggerFocus } from './util';\n\nfunction fixEmojiLength(value: string, maxLength: number) {\n  return [...(value || '')].slice(0, maxLength).join('');\n}\n\nfunction setTriggerValue(\n  isCursorInEnd: boolean,\n  preValue: string,\n  triggerValue: string,\n  maxLength: number,\n) {\n  let newTriggerValue = triggerValue;\n  if (isCursorInEnd) {\n    // 光标在尾部，直接截断\n    newTriggerValue = fixEmojiLength(triggerValue, maxLength);\n  } else if (\n    [...(preValue || '')].length < triggerValue.length\n    && [...(triggerValue || '')].length > maxLength\n  ) {\n    // 光标在中间，如果最后的值超过最大值，则采用原先的值\n    newTriggerValue = preValue;\n  }\n  return newTriggerValue;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATextarea',\n  inheritAttrs: false,\n  props: textAreaProps(),\n  setup(props, { attrs, expose, emit }) {\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const stateValue = shallowRef(props.value ?? props.defaultValue);\n    const resizableTextArea = shallowRef();\n    const mergedValue = shallowRef('');\n    const { prefixCls, size, direction } = useConfigInject('input', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const disabled = useInjectDisabled();\n    const showCount = computed(() => {\n      return (props.showCount as any) === '' || props.showCount || false;\n    });\n    // Max length value\n    const hasMaxLength = computed(() => Number(props.maxlength) > 0);\n    const compositing = shallowRef(false);\n\n    const oldCompositionValueRef = shallowRef<string>();\n    const oldSelectionStartRef = shallowRef<number>(0);\n    const onInternalCompositionStart = (e: CompositionEvent) => {\n      compositing.value = true;\n      // 拼音输入前保存一份旧值\n      oldCompositionValueRef.value = mergedValue.value as string;\n      // 保存旧的光标位置\n      oldSelectionStartRef.value = (e.currentTarget as any).selectionStart;\n      emit('compositionstart', e);\n    };\n\n    const setValue = (value: string | number, callback?: Function) => {\n      if (stateValue.value === value)\n        return;\n\n      if (props.value === undefined) {\n        stateValue.value = value;\n      } else {\n        nextTick(() => {\n          if (resizableTextArea.value.textArea.value !== mergedValue.value)\n            resizableTextArea.value?.instance.update?.();\n        });\n      }\n      nextTick(() => {\n        callback && callback();\n      });\n    };\n\n    const triggerChange = (e: Event) => {\n      emit('update:value', (e.target as HTMLInputElement).value);\n      emit('change', e);\n      emit('input', e);\n      formItemContext.onFieldChange();\n    };\n\n    const onInternalCompositionEnd = (e: CompositionEvent) => {\n      compositing.value = false;\n      let triggerValue = (e.currentTarget as any).value;\n      if (hasMaxLength.value) {\n        const isCursorInEnd\n          = oldSelectionStartRef.value >= props.maxlength + 1\n          || oldSelectionStartRef.value === oldCompositionValueRef.value?.length;\n        triggerValue = setTriggerValue(\n          isCursorInEnd,\n          oldCompositionValueRef.value as string,\n          triggerValue,\n          props.maxlength,\n        );\n      }\n      // Patch composition onChange when value changed\n      if (triggerValue !== mergedValue.value) {\n        setValue(triggerValue);\n        resolveOnChange(e.currentTarget as any, e, triggerChange, triggerValue);\n      }\n\n      emit('compositionend', e);\n    };\n    const instance = getCurrentInstance();\n    watch(\n      () => props.value,\n      () => {\n        if ('value' in instance.vnode.props || {})\n          stateValue.value = props.value ?? '';\n      },\n    );\n\n    const focus = (option?: InputFocusOptions) => {\n      triggerFocus(resizableTextArea.value?.textArea, option);\n    };\n\n    const blur = () => {\n      resizableTextArea.value?.textArea?.blur();\n    };\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === 13)\n        emit('pressEnter', e);\n\n      emit('keydown', e);\n    };\n\n    const onBlur: FocusEventHandler = (e) => {\n      props?.onBlur?.(e);\n      formItemContext.onFieldBlur();\n    };\n\n    const handleReset = (e: MouseEvent) => {\n      resolveOnChange(resizableTextArea.value.textArea, e, triggerChange);\n      setValue('', () => {\n        focus();\n      });\n    };\n\n    const handleChange = (e: Event) => {\n      let triggerValue = (e.target as any).value;\n      if (stateValue.value === triggerValue) return;\n\n      if (hasMaxLength.value) {\n        // 1. 复制粘贴超过maxlength的情况 2.未超过maxlength的情况\n        const target = e.target as any;\n        const isCursorInEnd\n          = target.selectionStart >= props.maxlength! + 1\n          || target.selectionStart === triggerValue.length\n          || !target.selectionStart;\n        triggerValue = setTriggerValue(\n          isCursorInEnd,\n          mergedValue.value as string,\n          triggerValue,\n          props.maxlength!,\n        );\n      }\n      resolveOnChange(e.currentTarget as any, e, triggerChange, triggerValue);\n      setValue(triggerValue);\n    };\n    const renderTextArea = () => {\n      const { class: customClass } = attrs;\n      const { bordered = true } = props;\n      const resizeProps = {\n        ...omit(props, ['allowClear']),\n        ...attrs,\n        class: [\n          {\n            [`${prefixCls.value}-borderless`]: !bordered,\n            [`${customClass}`]: customClass && !showCount.value,\n            [`${prefixCls.value}-sm`]: size.value === 'small',\n            [`${prefixCls.value}-lg`]: size.value === 'large',\n          },\n          getStatusClassNames(prefixCls.value, mergedStatus.value),\n          hashId.value,\n        ],\n        disabled: disabled.value,\n        showCount: null,\n        prefixCls: prefixCls.value,\n        onInput: handleChange,\n        onChange: handleChange,\n        onBlur,\n        onKeydown: handleKeyDown,\n        onCompositionstart: onInternalCompositionStart,\n        onCompositionend: onInternalCompositionEnd,\n      };\n      if (props.valueModifiers?.lazy)\n        delete resizeProps.onInput;\n\n      return (\n        <ResizableTextArea\n          {...resizeProps}\n          id={resizeProps?.id ?? formItemContext.id.value}\n          ref={resizableTextArea}\n          maxlength={props.maxlength}\n          lazy={props.lazy}\n        />\n      );\n    };\n\n    expose({\n      focus,\n      blur,\n      resizableTextArea,\n    });\n\n    watchEffect(() => {\n      let val = fixControlledValue(stateValue.value) as string;\n      if (\n        !compositing.value\n        && hasMaxLength.value\n        && (props.value === null || props.value === undefined)\n      ) {\n        // fix #27612 将value转为数组进行截取，解决 '😂'.length === 2 等emoji表情导致的截取乱码的问题\n        val = fixEmojiLength(val, props.maxlength);\n      }\n      mergedValue.value = val;\n    });\n    return () => {\n      const { maxlength, bordered = true, hidden } = props;\n      const { style, class: customClass } = attrs;\n\n      const inputProps: any = {\n        ...props,\n        ...attrs,\n        prefixCls: prefixCls.value,\n        inputType: 'text',\n        handleReset,\n        direction: direction.value,\n        bordered,\n        style: showCount.value ? undefined : style,\n        hashId: hashId.value,\n        disabled: props.disabled ?? disabled.value,\n      };\n\n      let textareaNode = (\n        <ClearableLabeledInput\n          {...inputProps}\n          value={mergedValue.value}\n          v-slots={{ element: renderTextArea }}\n          status={props.status}\n        />\n      );\n\n      if (showCount.value || formItemInputContext.hasFeedback) {\n        const valueLength = [...mergedValue.value].length;\n        let dataCount: VueNode = '';\n        if (typeof showCount.value === 'object') {\n          dataCount = showCount.value.formatter({\n            value: mergedValue.value,\n            count: valueLength,\n            maxlength,\n          });\n        } else {\n          dataCount = `${valueLength}${hasMaxLength.value ? ` / ${maxlength}` : ''}`;\n        }\n        textareaNode = (\n          <div\n            hidden={hidden}\n            class={classNames(\n              `${prefixCls.value}-textarea`,\n              {\n                [`${prefixCls.value}-textarea-rtl`]: direction.value === 'rtl',\n                [`${prefixCls.value}-textarea-show-count`]: showCount.value,\n                [`${prefixCls.value}-textarea-in-form-item`]: formItemInputContext.isFormItemInput,\n              },\n              `${prefixCls.value}-textarea-show-count`,\n              customClass,\n              hashId.value,\n            )}\n            style={style as CSSProperties}\n            data-count={typeof dataCount !== 'object' ? dataCount : undefined}\n          >\n            {textareaNode}\n            {formItemInputContext.hasFeedback && (\n              <span class={`${prefixCls.value}-textarea-suffix`}>\n                {formItemInputContext.feedbackIcon}\n              </span>\n            )}\n          </div>\n        );\n      }\n      return wrapSSR(textareaNode);\n    };\n  },\n});\n"],"names":["fixEmojiLength","value","maxLength","slice","join","setTriggerValue","isCursorInEnd","preValue","triggerValue","newTriggerValue","length","defineComponent","compatConfig","MODE","name","inheritAttrs","props","textAreaProps","setup","attrs","expose","emit","formItemContext","useInjectFormItemContext","formItemInputContext","FormItemInputContext","useInject","mergedStatus","computed","getMergedStatus","status","stateValue","shallowRef","defaultValue","resizableTextArea","mergedValue","prefixCls","size","direction","useConfigInject","wrapSSR","hashId","useStyle","disabled","useInjectDisabled","showCount","hasMaxLength","Number","maxlength","compositing","oldCompositionValueRef","oldSelectionStartRef","onInternalCompositionStart","e","currentTarget","selectionStart","setValue","callback","undefined","nextTick","textArea","instance","update","triggerChange","target","onFieldChange","onInternalCompositionEnd","resolveOnChange","getCurrentInstance","watch","vnode","focus","option","triggerFocus","blur","handleKeyDown","keyCode","onBlur","onFieldBlur","handleReset","handleChange","renderTextArea","class","customClass","bordered","resizeProps","omit","getStatusClassNames","onInput","onChange","onKeydown","onCompositionstart","onCompositionend","valueModifiers","lazy","_createVNode","ResizableTextArea","id","watchEffect","val","fixControlledValue","hidden","style","inputProps","inputType","textareaNode","ClearableLabeledInput","element","hasFeedback","valueLength","dataCount","formatter","count","classNames","isFormItemInput","feedbackIcon"],"mappings":"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"}