{"version":3,"file":"chat-action.mjs","sources":["../../src/chat/chat-action.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport { Button, Space, Tooltip } from 'tdesign-vue-next';\nimport {\n  ThumbUpIcon,\n  ThumbUpFilledIcon,\n  ThumbDownIcon,\n  ThumbDownFilledIcon,\n  RefreshIcon,\n  CopyIcon,\n} from 'tdesign-icons-vue-next';\n\nimport props from './props';\n\nimport { usePrefixClass, useConfig } from '../hooks/useConfig';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport Clipboard from 'clipboard';\nimport { MessagePluginSingleton } from './util';\n\nexport default defineComponent({\n  name: 'TChatAction',\n  props: {\n    isGood: props.isGood,\n    isBad: props.isBad,\n    content: props.content,\n    disabled: props.disabled,\n    operationBtn: props.operationBtn,\n    onOperation: props.onOperation,\n  },\n  emits: ['operation'],\n  setup(props, { emit }) {\n    const COMPONENT_NAME = usePrefixClass('chat');\n    const renderTNodeJSX = useTNodeJSX();\n    const messagePluginInstance = MessagePluginSingleton.getInstance();\n    const { globalConfig } = useConfig('chat');\n    const { copyTipText, likeTipText, dislikeTipText, refreshTipText, copyTextSuccess, copyTextFail } =\n      globalConfig.value;\n    return () => {\n      // textLoading更新后要传给子组件和孙组件\n      const content = renderTNodeJSX('content');\n      // 内置操作按钮，assistantActions和插槽判断 t-chat注入的属性获取不到默认为false\n      const disabled = props.disabled;\n      const copyAnswer = () => {\n        // 根据e获取当前按钮选择器\n        const copyBtn = new Clipboard(`.copy-btn`);\n        copyBtn.on('success', () => {\n          messagePluginInstance.showSuccess(copyTextSuccess);\n        });\n        copyBtn.on('error', () => {\n          messagePluginInstance.showError(copyTextFail);\n        });\n      };\n      const handleClick = (e: MouseEvent, type: string) => {\n        if (type === 'copy') {\n          copyAnswer();\n        }\n        // 如果通过default传入的chat-item 组件，如何获取index值todo\n        emit('operation', type, {\n          e,\n        });\n      };\n      const replayButton = props.operationBtn.includes('replay') ? (\n        <Space>\n          <div class={`${COMPONENT_NAME.value}__refresh`}>\n            <Tooltip content={refreshTipText}>\n              <Button\n                theme=\"default\"\n                size=\"small\"\n                disabled={disabled}\n                onClick={(e: MouseEvent) => handleClick(e, 'replay')}\n              >\n                <RefreshIcon />\n              </Button>\n            </Tooltip>\n            <span class={`${COMPONENT_NAME.value}__refresh-line`}></span>\n          </div>\n        </Space>\n      ) : null;\n      const copyButton = props.operationBtn.includes('copy') ? (\n        <Space>\n          <Tooltip content={copyTipText}>\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              class=\"copy-btn\"\n              disabled={disabled}\n              onClick={(e: MouseEvent) => handleClick(e, 'copy')}\n              data-clipboard-text={content}\n            >\n              <CopyIcon />\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      const goodButton = props.operationBtn.includes('good') ? (\n        <Space>\n          <Tooltip content={likeTipText}>\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              class={props.isGood && `${COMPONENT_NAME.value}-button--active`}\n              disabled={disabled}\n              onClick={(e: MouseEvent) => handleClick(e, 'good')}\n            >\n              {props.isGood ? <ThumbUpFilledIcon /> : <ThumbUpIcon />}\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      const badButton = props.operationBtn.includes('bad') ? (\n        <Space>\n          <Tooltip content={dislikeTipText}>\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              class={props.isBad && `${COMPONENT_NAME.value}-button--active`}\n              disabled={disabled}\n              onClick={(e: MouseEvent) => handleClick(e, 'bad')}\n            >\n              {props.isBad ? <ThumbDownFilledIcon /> : <ThumbDownIcon />}\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      // 按钮组件的映射\n      const buttonComponents = {\n        replay: replayButton,\n        copy: copyButton,\n        good: goodButton,\n        bad: badButton,\n      };\n      return (\n        <div class={`${COMPONENT_NAME.value}__actions`}>\n          {props.operationBtn.map((btnKey) => {\n            return buttonComponents[btnKey];\n          })}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","isGood","isBad","content","disabled","operationBtn","onOperation","emits","setup","emit","_ref","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","messagePluginInstance","MessagePluginSingleton","getInstance","_useConfig","useConfig","globalConfig","_globalConfig$value","value","copyTipText","likeTipText","dislikeTipText","refreshTipText","copyTextSuccess","copyTextFail","copyAnswer","copyBtn","Clipboard","on","showSuccess","showError","handleClick","e","type","replayButton","includes","_createVNode","Space","_default","concat","Tooltip","Button","onClick","RefreshIcon","copyButton","CopyIcon","goodButton","ThumbUpFilledIcon","ThumbUpIcon","badButton","ThumbDownFilledIcon","ThumbDownIcon","buttonComponents","replay","copy","good","bad","map","btnKey"],"mappings":"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"}