fix: mermaid图表代码一键复制功能 #460

This commit is contained in:
kangfenmao 2024-12-16 13:20:24 +08:00
parent daf2e035b2
commit 88cd4f2144
6 changed files with 24 additions and 7 deletions

View File

@ -244,7 +244,8 @@
"upgrade.success.button": "Restart",
"upgrade.success.content": "Please restart the application to complete the upgrade",
"upgrade.success.title": "Upgrade successfully",
"regenerate.confirm": "Regenerating will replace current message"
"regenerate.confirm": "Regenerating will replace current message",
"copy.success": "Copied!"
},
"minapp": {
"title": "MinApp"

View File

@ -244,7 +244,8 @@
"upgrade.success.button": "Перезапустить",
"upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления",
"upgrade.success.title": "Обновление успешно",
"regenerate.confirm": "Перегенерация заменит текущее сообщение"
"regenerate.confirm": "Перегенерация заменит текущее сообщение",
"copy.success": "Скопировано!"
},
"minapp": {
"title": "Встроенные приложения"

View File

@ -244,7 +244,8 @@
"upgrade.success.button": "重启",
"upgrade.success.content": "重启用以完成升级",
"upgrade.success.title": "升级成功",
"regenerate.confirm": "重新生成会覆盖当前消息"
"regenerate.confirm": "重新生成会覆盖当前消息",
"copy.success": "复制成功"
},
"minapp": {
"title": "小程序"

View File

@ -244,7 +244,8 @@
"upgrade.success.button": "重新啟動",
"upgrade.success.content": "請重新啟動應用以完成升級",
"upgrade.success.title": "升級成功",
"regenerate.confirm": "重新生成會覆蓋當前訊息"
"regenerate.confirm": "重新生成會覆蓋當前訊息",
"copy.success": "複製成功"
},
"minapp": {
"title": "小程序"

View File

@ -17,6 +17,7 @@ const PopupContainer: React.FC<Props> = ({ resolve, chart }) => {
const [open, setOpen] = useState(true)
const { t } = useTranslation()
const mermaidId = `mermaid-popup-${Date.now()}`
const [activeTab, setActiveTab] = useState('preview')
const onOk = () => {
setOpen(false)
@ -86,6 +87,11 @@ const PopupContainer: React.FC<Props> = ({ resolve, chart }) => {
}
}
const handleCopy = () => {
navigator.clipboard.writeText(chart)
window.message.success(t('message.copy.success'))
}
useEffect(() => {
window?.mermaid?.contentLoaded()
}, [])
@ -101,11 +107,18 @@ const PopupContainer: React.FC<Props> = ({ resolve, chart }) => {
centered
footer={[
<Space key="download-buttons">
{activeTab === 'source' && <Button onClick={() => handleCopy()}>{t('common.copy')}</Button>}
{activeTab === 'preview' && (
<>
<Button onClick={() => handleDownload('svg')}>{t('mermaid.download.svg')}</Button>
<Button onClick={() => handleDownload('png')}>{t('mermaid.download.png')}</Button>
</>
)}
</Space>
]}>
<Tabs
activeKey={activeTab}
onChange={(key) => setActiveTab(key)}
items={[
{
key: 'preview',

View File

@ -51,7 +51,7 @@ const initialState: SettingsState = {
proxyMode: 'system',
proxyUrl: undefined,
userName: '',
showMessageDivider: false,
showMessageDivider: true,
messageFont: 'system',
showInputEstimatedTokens: false,
tray: true,