{"version":3,"file":"chat-sender.mjs","sources":["../../../pro-components/chat/chat-sender/chat-sender.tsx"],"sourcesContent":["import { defineComponent, ref, computed, toRefs, reactive, Fragment } from 'vue';\nimport { SendFilledIcon, FileAttachmentIcon, ImageIcon } from 'tdesign-icons-vue-next';\nimport { Button, Textarea, Tooltip } from 'tdesign-vue-next';\nimport Attachments from '../attachments';\nimport { useConfig } from 'tdesign-vue-next/es/config-provider/hooks';\nimport { usePrefixClass, useTNodeJSX, useVModel } from '@tdesign/shared-hooks';\nimport props from './chat-sender-props';\n\nimport type { TdChatSenderProps, UploadActionType, UploadActionConfig } from '../type';\n\nexport default defineComponent({\n  name: 'TChatSender',\n  props: {\n    ...props,\n    attachmentsProps: {\n      type: Object,\n      // @ts-ignore\n      default: () => ({ items: [], overflow: 'scrollX' }),\n    },\n  },\n  emits: ['send', 'stop', 'update:modelValue', 'blur', 'focus', 'fileSelect', 'remove', 'fileClick'], // declare the custom events here\n  setup(props, { emit }) {\n    const isComposition = false;\n    const senderTextarea = ref(null);\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 focusFlag = ref(false);\n    const showStopBtn = computed(() => props.loading || props.stopDisabled);\n    const disabled = computed(() => props.disabled || false);\n    const isSendDisabled = computed(\n      () => props.sendBtnDisabled || disabled.value || showStopBtn.value || !textValue.value,\n    );\n    const uploadImageRef = ref(null);\n    const uploadFileRef = ref(null);\n    const renderTNodeJSX = useTNodeJSX();\n    // 点击了发送按钮\n    const sendClick = (e: MouseEvent | KeyboardEvent) => {\n      if (textValue.value && !disabled.value) {\n        emit('send', textValue.value, { e });\n      }\n    };\n    // 点击了停止按钮\n    const handleStop = (e: MouseEvent) => {\n      e.stopPropagation(); // 阻止事件冒泡\n      emit('stop', textValue.value, {\n        e,\n      });\n    };\n    const keydownFn = (value: string, context: { e: KeyboardEvent }) => {\n      const {\n        e: { key, shiftKey },\n      } = context;\n      if (key === 'Enter') {\n        if (isComposition || context.e.isComposing) {\n          return;\n        }\n        if (shiftKey) {\n          return;\n        }\n        context.e.preventDefault();\n        context.e.stopPropagation();\n        sendClick(context.e);\n      }\n    };\n    const focusFn = (value: string, context: { e: FocusEvent }) => {\n      focusFlag.value = true;\n      emit('focus', value, context);\n    };\n\n    const blurFn = (value: string, context: { e: FocusEvent }) => {\n      focusFlag.value = false;\n      emit('blur', value, context);\n    };\n\n    const textChange = (value: string, context: { e: InputEvent }) => {\n      setInnerValue(value, context);\n    };\n\n    const actionsDefault = reactive<UploadActionConfig[]>([\n      {\n        name: 'uploadImage',\n        uploadProps: {\n          multiple: true,\n          accept: 'image/*',\n        },\n        action: ({ files, name, e }) => {\n          emit('fileSelect', { files, name, e });\n        },\n      },\n      {\n        name: 'uploadAttachment',\n        action: ({ files, name, e }) => {\n          emit('fileSelect', { files, name, e });\n        },\n      },\n    ]);\n    // 默认suffixIcon\n    const getDefaultSuffixIcon = (actions = actionsDefault) => {\n      // 获取默认action处理函数\n      const getDefaultAction = (name: UploadActionType) => {\n        const defaultAction = actionsDefault.find((item) => item.name === name)?.action;\n        return defaultAction || (({ files, name, e }) => emit('fileSelect', { files, name, e }));\n      };\n      const { uploadAttachmentText, uploadImageText } = globalConfig.value;\n      const uploadAttachment = actions.find((item) => item.name === 'uploadAttachment');\n      const uploadAttachmentButton = uploadAttachment ? (\n        <Fragment>\n          <input\n            {...uploadAttachment.uploadProps}\n            ref={uploadFileRef}\n            type=\"file\"\n            onChange={(e: InputEvent) => {\n              const files = Array.from((e.target as HTMLInputElement).files || []);\n              if (!files.length) {\n                return;\n              }\n              const action = uploadAttachment.action || getDefaultAction('uploadAttachment');\n              action({ files, name: uploadAttachment.name, e });\n              (e.target as HTMLInputElement).value = '';\n            }}\n            hidden\n          />\n          <Tooltip content={uploadAttachmentText}>\n            <Button\n              theme=\"default\"\n              onClick={() => uploadFileRef.value?.click()}\n              shape=\"circle\"\n              variant=\"text\"\n              class={[`${COMPONENT_NAME.value}-sender__upload`]}\n            >\n              <FileAttachmentIcon size=\"20px\" />\n            </Button>\n          </Tooltip>\n        </Fragment>\n      ) : null;\n\n      const uploadImage = actions.find((item) => item.name === 'uploadImage');\n      const renderUploadImageButton = uploadImage ? (\n        <Fragment>\n          <input\n            {...uploadImage.uploadProps}\n            ref={uploadImageRef}\n            type=\"file\"\n            onChange={(e: InputEvent) => {\n              const files = Array.from((e.target as HTMLInputElement).files || []);\n              if (!files.length) {\n                return;\n              }\n              const action = uploadImage.action || getDefaultAction('uploadImage');\n              action({ files, name: uploadImage.name, e });\n              (e.target as HTMLInputElement).value = '';\n            }}\n            hidden\n          />\n          <Tooltip content={uploadImageText}>\n            <Button\n              theme=\"default\"\n              onClick={() => uploadImageRef.value?.click()}\n              shape=\"circle\"\n              variant=\"text\"\n              class={[`${COMPONENT_NAME.value}-sender__upload`]}\n            >\n              <ImageIcon size=\"20px\" />\n            </Button>\n          </Tooltip>\n        </Fragment>\n      ) : null;\n      const buttonComponents = {\n        uploadAttachment: uploadAttachmentButton,\n        uploadImage: renderUploadImageButton,\n      };\n\n      return (\n        <Fragment>\n          {actions.length > 0 &&\n            actions\n              .filter(\n                (item): item is { name: UploadActionType; action: () => void } =>\n                  item.name === 'uploadAttachment' || item.name === 'uploadImage',\n              )\n              .map((item) => buttonComponents[item.name])}\n          {!showStopBtn.value ? (\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              variant=\"text\"\n              class={[\n                `${COMPONENT_NAME.value}-sender__button__default`,\n                isSendDisabled.value ? `${COMPONENT_NAME.value}-sender__button--disabled` : '',\n              ]}\n              onClick={sendClick}\n              disabled={isSendDisabled.value}\n            >\n              <SendFilledIcon />\n            </Button>\n          ) : (\n            <Button variant=\"text\" class={`${COMPONENT_NAME.value}-sender__button__default`} onClick={handleStop}>\n              <div class={`${COMPONENT_NAME.value}-sender__button__stopicon`} />\n            </Button>\n          )}\n        </Fragment>\n      );\n    };\n    const renderSuffixIcon = () => {\n      const suffix = renderTNodeJSX('suffix', { params: { renderPresets: getDefaultSuffixIcon } });\n      // 默认没有上传附件和上传图片入口\n      return suffix ? suffix : getDefaultSuffixIcon([]);\n    };\n    const handleRemove = (e: CustomEvent) => {\n      emit('remove', e);\n    };\n    const handleFileClick = (e: CustomEvent) => {\n      emit('fileClick', e);\n    };\n    const renderHeader = () => {\n      return props.attachmentsProps.items.length > 0 ? (\n        <Attachments\n          items={props.attachmentsProps.items}\n          onRemove={handleRemove}\n          onFileClick={handleFileClick}\n          class={`${COMPONENT_NAME.value}-sender__attachment`}\n          overflow={props.attachmentsProps.overflow}\n        />\n      ) : (\n        renderTNodeJSX('header')\n      );\n    };\n    const renderInputPrefix = () => renderTNodeJSX('input-prefix') || null;\n    return () => (\n      <div class={`${COMPONENT_NAME.value}-sender`}>\n        {/* <div class={`${COMPONENT_NAME.value}-sender__header`}>{renderHeader()}</div> */}\n        <div\n          class={[\n            `${COMPONENT_NAME.value}-sender__textarea`,\n            focusFlag.value ? `${COMPONENT_NAME.value}-sender__textarea--focus` : '',\n          ]}\n        >\n          <div class={`${COMPONENT_NAME.value}-sender__header`}>{renderHeader()}</div>\n          <div class={`${COMPONENT_NAME.value}-sender__inner-header`}>{renderTNodeJSX('inner-header')}</div>\n          <div class={`${COMPONENT_NAME.value}-sender__textarea__wrapper`}>\n            {renderInputPrefix()}\n            <Textarea\n              ref={senderTextarea}\n              value={textValue.value}\n              onChange={textChange}\n              disabled={disabled.value}\n              {...{\n                autosize: (props.textareaProps as TdChatSenderProps['textareaProps'])?.autosize || {\n                  minRows: 2,\n                  maxRows: 5,\n                },\n                ...(props.textareaProps as TdChatSenderProps['textareaProps']),\n              }}\n              onKeydown={keydownFn}\n              onFocus={focusFn}\n              onBlur={blurFn}\n            />\n          </div>\n          <div class={`${COMPONENT_NAME.value}-sender__footer`}>\n            <div class={`${COMPONENT_NAME.value}-sender__mode`}>{renderTNodeJSX('footer-prefix')}</div>\n            <div class={`${COMPONENT_NAME.value}-sender__button`}>\n              {/* 发送按钮 */}\n              <div class={`${COMPONENT_NAME.value}-sender__button__sendbtn`}>{renderSuffixIcon()}</div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","attachmentsProps","type","Object","default","items","overflow","emits","setup","emit","_ref","isComposition","senderTextarea","ref","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","textValue","setInnerValue","focusFlag","showStopBtn","computed","loading","stopDisabled","disabled","isSendDisabled","sendBtnDisabled","uploadImageRef","uploadFileRef","renderTNodeJSX","useTNodeJSX","sendClick","e","handleStop","stopPropagation","keydownFn","context","_context$e","key","shiftKey","isComposing","preventDefault","focusFn","blurFn","textChange","actionsDefault","reactive","uploadProps","multiple","accept","action","files","_ref2","_ref3","getDefaultSuffixIcon","actions","arguments","length","undefined","getDefaultAction","_actionsDefault$find","defaultAction","find","item","_ref4","_globalConfig$value","uploadAttachmentText","uploadImageText","uploadAttachment","uploadAttachmentButton","Array","from","target","_default","_createVNode","Button","onClick","_uploadFileRef$value","click","concat","FileAttachmentIcon","uploadImage","renderUploadImageButton","_uploadImageRef$value","ImageIcon","buttonComponents","_Fragment","filter","map","SendFilledIcon","renderSuffixIcon","suffix","params","renderPresets","handleRemove","handleFileClick","renderHeader","Attachments","renderInputPrefix","_props2$textareaProps","Textarea","_mergeProps","autosize","textareaProps","minRows","maxRows"],"mappings":"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"}