{"version":3,"file":"chat-actionbar.mjs","sources":["../../../pro-components/chat/chat-actionbar/chat-actionbar.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport { usePrefixClass, useTNodeJSX } from '@tdesign/shared-hooks';\nimport { Button, Space, Tooltip } from 'tdesign-vue-next';\nimport { useConfig } from 'tdesign-vue-next/es/config-provider/hooks';\nimport {\n  ThumbUpIcon,\n  ThumbUpFilledIcon,\n  ThumbDownIcon,\n  ThumbDownFilledIcon,\n  RefreshIcon,\n  CopyIcon,\n  Share1Icon,\n} from 'tdesign-icons-vue-next';\nimport { copy as fallbackCopy } from '@tdesign/shared-utils';\n\nimport Clipboard from 'clipboard';\nimport { MessagePluginSingleton } from '../utils';\nimport props from './chat-actionbar-props';\n\nexport default defineComponent({\n  name: 'TChatActionbar',\n  props,\n  emits: ['actions', '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    return () => {\n      // textLoading更新后要传给子组件和孙组件\n      const content = renderTNodeJSX('content');\n      const { copyTipText, likeTipText, dislikeTipText, refreshTipText, copyTextSuccess, copyTextFail, shareTipText } =\n        globalConfig.value;\n\n      // 内置操作按钮，assistantActions和插槽判断 t-chat注入的属性获取不到默认为false\n      const disabled = props.disabled;\n      // 向后兼容：优先使用 actionBar，如果没有则使用 operationBtn\n      const actionButtons = props.actionBar || props.operationBtn;\n      // 向后兼容：优先使用 comment，如果没有则根据 isGood/isBad 计算\n      const commentValue = props.comment || (props.isGood ? 'good' : props.isBad ? 'bad' : '');\n      const copyAnswer = (e: MouseEvent, content: string) => {\n        if (!navigator.clipboard) {\n          // 如果浏览器不支持 Clipboard API，使用自定义的复制方法\n          const success = fallbackCopy(content);\n          if (success) {\n            messagePluginInstance.showSuccess(copyTextSuccess);\n          } else {\n            messagePluginInstance.showError(copyTextFail);\n          }\n          return;\n        }\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, content?: string) => {\n        if (type === 'copy') {\n          copyAnswer(e, content);\n        }\n        // 如果通过default传入的chat-item 组件，如何获取index值todo\n        emit('actions', type, {\n          e,\n        });\n        // 向后兼容：同时触发 operation 事件\n        emit('operation', type, {\n          e,\n        });\n      };\n      const replayButton = actionButtons.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 = actionButtons.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', content)}\n              data-clipboard-text={content}\n            >\n              <CopyIcon />\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      const goodButton = actionButtons.includes('good') ? (\n        <Space>\n          <Tooltip content={likeTipText}>\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              class={commentValue === 'good' && `${COMPONENT_NAME.value}-button--active`}\n              disabled={disabled}\n              onClick={(e: MouseEvent) => handleClick(e, 'good')}\n            >\n              {commentValue === 'good' ? <ThumbUpFilledIcon /> : <ThumbUpIcon />}\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      const badButton = actionButtons.includes('bad') ? (\n        <Space>\n          <Tooltip content={dislikeTipText}>\n            <Button\n              theme=\"default\"\n              size=\"small\"\n              class={commentValue === 'bad' && `${COMPONENT_NAME.value}-button--active`}\n              disabled={disabled}\n              onClick={(e: MouseEvent) => handleClick(e, 'bad')}\n            >\n              {commentValue === 'bad' ? <ThumbDownFilledIcon /> : <ThumbDownIcon />}\n            </Button>\n          </Tooltip>\n        </Space>\n      ) : null;\n      const shareButton = actionButtons.includes('share') ? (\n        <Space>\n          <div class={`${COMPONENT_NAME.value}__refresh`}>\n            <Tooltip content={shareTipText}>\n              <Button\n                theme=\"default\"\n                size=\"small\"\n                disabled={disabled}\n                onClick={(e: MouseEvent) => handleClick(e, 'share')}\n              >\n                <Share1Icon />\n              </Button>\n            </Tooltip>\n            {/* <span class={`${COMPONENT_NAME.value}__refresh-line`}></span> */}\n          </div>\n        </Space>\n      ) : null;\n      // 按钮组件的映射\n      const buttonComponents = {\n        replay: replayButton,\n        copy: copyButton,\n        good: goodButton,\n        bad: badButton,\n        share: shareButton,\n      };\n      return (\n        <div class={`${COMPONENT_NAME.value}__actions`}>\n          {actionButtons.map((btnKey) => {\n            return buttonComponents[btnKey];\n          })}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","emits","setup","emit","_ref","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","messagePluginInstance","MessagePluginSingleton","getInstance","_useConfig","useConfig","globalConfig","content","_globalConfig$value","value","copyTipText","likeTipText","dislikeTipText","refreshTipText","copyTextSuccess","copyTextFail","shareTipText","disabled","actionButtons","actionBar","operationBtn","commentValue","comment","isGood","isBad","copyAnswer","e","navigator","clipboard","success","fallbackCopy","showSuccess","showError","copyBtn","Clipboard","on","handleClick","type","replayButton","includes","_createVNode","Space","_default","concat","Tooltip","Button","onClick","RefreshIcon","copyButton","CopyIcon","goodButton","ThumbUpFilledIcon","ThumbUpIcon","badButton","ThumbDownFilledIcon","ThumbDownIcon","shareButton","Share1Icon","buttonComponents","replay","copy","good","bad","share","map","btnKey"],"mappings":"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"}