mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	Co-authored-by: NFish <douxc512@gmail.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: twwu <twwu@dify.ai> Co-authored-by: jZonG <jzongcode@gmail.com>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
'use client'
 | 
						|
import React, { useState } from 'react'
 | 
						|
import { useTranslation } from 'react-i18next'
 | 
						|
import { debounce } from 'lodash-es'
 | 
						|
import copy from 'copy-to-clipboard'
 | 
						|
import Tooltip from '../tooltip'
 | 
						|
import {
 | 
						|
  Clipboard,
 | 
						|
  ClipboardCheck,
 | 
						|
} from '@/app/components/base/icons/src/vender/line/files'
 | 
						|
 | 
						|
type Props = {
 | 
						|
  content: string
 | 
						|
}
 | 
						|
 | 
						|
const prefixEmbedded = 'appOverview.overview.appInfo.embedded'
 | 
						|
 | 
						|
export const CopyIcon = ({ content }: Props) => {
 | 
						|
  const { t } = useTranslation()
 | 
						|
  const [isCopied, setIsCopied] = useState<boolean>(false)
 | 
						|
 | 
						|
  const onClickCopy = debounce(() => {
 | 
						|
    copy(content)
 | 
						|
    setIsCopied(true)
 | 
						|
  }, 100)
 | 
						|
 | 
						|
  const onMouseLeave = debounce(() => {
 | 
						|
    setIsCopied(false)
 | 
						|
  }, 100)
 | 
						|
 | 
						|
  return (
 | 
						|
    <Tooltip
 | 
						|
      popupContent={
 | 
						|
        (isCopied
 | 
						|
          ? t(`${prefixEmbedded}.copied`)
 | 
						|
          : t(`${prefixEmbedded}.copy`)) || ''
 | 
						|
      }
 | 
						|
    >
 | 
						|
      <div onMouseLeave={onMouseLeave}>
 | 
						|
        {!isCopied
 | 
						|
          ? (
 | 
						|
            <Clipboard className='mx-1 h-3.5 w-3.5 cursor-pointer text-text-tertiary' onClick={onClickCopy} />
 | 
						|
          )
 | 
						|
          : (
 | 
						|
            <ClipboardCheck className='mx-1 h-3.5 w-3.5 text-text-tertiary' />
 | 
						|
          )
 | 
						|
        }
 | 
						|
      </div>
 | 
						|
    </Tooltip>
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
export default CopyIcon
 |