{"version":3,"file":"chat-input.mjs","sources":["../../../pro-components/chat/chat-input/chat-input.tsx"],"sourcesContent":["import { defineComponent, toRefs, computed } from 'vue';\nimport { SendIcon, StopCircleIcon } from 'tdesign-icons-vue-next';\nimport { Button, Textarea } from 'tdesign-vue-next';\nimport { useConfig } from 'tdesign-vue-next/es/config-provider/hooks';\nimport { useTNodeJSX, usePrefixClass, useVModel } from '@tdesign/shared-hooks';\nimport props from './chat-input-props';\n\nexport default defineComponent({\n  name: 'TChatInput',\n  props,\n  emits: ['send', 'stop', 'update:modelValue', 'blur', 'focus'], // declare the custom events here\n  setup(props, { emit }) {\n    const COMPONENT_NAME = usePrefixClass('chat');\n    const { globalConfig } = useConfig('chat');\n    const { value, modelValue } = toRefs(props);\n    const [textValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n    // 按钮禁用，\n    const disabled = computed(() => props.stopDisabled);\n    // textarea禁用，\n    const textareaDisabled = computed(() => props.disabled);\n    // 输入框是否自动聚焦\n    const autofocus = computed(() => props.autofocus);\n    // 输入框高度\n    const autosize = computed(() => props.autosize);\n    // 输入框默认文案\n    const placeholderText = computed(() => props.placeholder ?? globalConfig.value.placeholder);\n\n    let shiftDownFlag = false;\n    const isComposition = false;\n    const renderTNodeJSX = useTNodeJSX();\n    const sendClick = (e: MouseEvent | KeyboardEvent) => {\n      if (textValue.value && !disabled.value) {\n        emit('send', textValue.value, { e });\n        setInnerValue('', { e });\n      }\n    };\n\n    const handleStop = (e: MouseEvent) => {\n      emit('stop', textValue.value, {\n        e,\n      });\n    };\n\n    const textChange = (value: string, context: { e: InputEvent }) => {\n      setInnerValue(value, context);\n    };\n    const blurFn = (value: string, context: { e: FocusEvent }) => {\n      shiftDownFlag = false;\n      emit('blur', value, context);\n    };\n    const focusFn = (value: string, context: { e: FocusEvent }) => {\n      emit('focus', value, context);\n    };\n    const keydownFn = (value: string, context: { e: KeyboardEvent }) => {\n      const {\n        e: { key },\n      } = context;\n      if (key === 'Shift') {\n        shiftDownFlag = true;\n      }\n      if (key === 'Enter' && !shiftDownFlag && !isComposition) {\n        context.e.cancelBubble = true;\n        context.e.preventDefault();\n        context.e.stopPropagation();\n        sendClick(context.e);\n      }\n    };\n\n    const keyupFn = (value: any, context: any) => {\n      const {\n        e: { key },\n      } = context;\n      if (key === 'Shift') {\n        shiftDownFlag = false;\n      }\n    };\n\n    // 默认suffixIcon\n    const getDefaultSuffixIcon = () => {\n      return (\n        <Button\n          theme=\"default\"\n          size=\"small\"\n          variant=\"text\"\n          class={[\n            `${COMPONENT_NAME.value}__footer__textarea__icon__default`,\n            textValue.value ? `${COMPONENT_NAME.value}__footer__textarea__icon--focus` : '',\n          ]}\n          disabled={disabled.value || !textValue.value || textareaDisabled.value}\n        >\n          <SendIcon />\n        </Button>\n      );\n    };\n    const renderSuffixIcon = () => {\n      const suffixIcon = renderTNodeJSX('suffixIcon');\n      return suffixIcon ? suffixIcon : getDefaultSuffixIcon();\n    };\n    return () => (\n      <div class={`${COMPONENT_NAME.value}__footer__content`}>\n        {/* textAreaBox */}\n        <div class={`${COMPONENT_NAME.value}__footer__textarea`}>\n          <Textarea\n            value={textValue.value}\n            class=\"noscrollbar\"\n            placeholder={placeholderText.value}\n            disabled={textareaDisabled.value}\n            autofocus={autofocus.value}\n            autosize={autosize.value}\n            onChange={textChange}\n            onBlur={blurFn}\n            onFocus={focusFn}\n            onKeydown={keydownFn}\n            onKeyup={keyupFn}\n          />\n          <div class={`${COMPONENT_NAME.value}__footer__textarea__icon`} onClick={sendClick}>\n            {renderSuffixIcon()}\n          </div>\n        </div>\n        {disabled.value && !textareaDisabled.value && (\n          <div class={`${COMPONENT_NAME.value}__footer__stopbtn`}>\n            <Button variant=\"outline\" onClick={handleStop}>\n              <StopCircleIcon />\n              {globalConfig.value.stopBtnText}\n            </Button>\n          </div>\n        )}\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","emits","setup","emit","_ref","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","textValue","setInnerValue","disabled","computed","stopDisabled","textareaDisabled","autofocus","autosize","placeholderText","_props2$placeholder","placeholder","shiftDownFlag","isComposition","renderTNodeJSX","useTNodeJSX","sendClick","e","handleStop","textChange","context","blurFn","focusFn","keydownFn","key","cancelBubble","preventDefault","stopPropagation","keyupFn","getDefaultSuffixIcon","_createVNode","Button","concat","_default","SendIcon","renderSuffixIcon","suffixIcon","Textarea","StopCircleIcon","stopBtnText"],"mappings":"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"}