chatbot-template/lib/hooks/use-copy-to-clipboard.tsx

34 lines
653 B
TypeScript
Raw Normal View History

2023-06-02 15:33:48 -04:00
'use client'
2023-06-13 23:58:59 +04:00
import * as React from 'react'
2023-05-19 12:33:56 -04:00
export interface useCopyToClipboardProps {
2023-06-02 15:33:48 -04:00
timeout?: number
2023-05-19 12:33:56 -04:00
}
export function useCopyToClipboard({
2023-06-02 15:33:48 -04:00
timeout = 2000
2023-05-19 12:33:56 -04:00
}: useCopyToClipboardProps) {
2023-06-13 23:58:59 +04:00
const [isCopied, setIsCopied] = React.useState<Boolean>(false)
2023-05-19 12:33:56 -04:00
const copyToClipboard = (value: string) => {
if (
typeof window === 'undefined' ||
!navigator.clipboard ||
!navigator.clipboard.writeText
) {
2023-06-02 15:33:48 -04:00
return
2023-05-19 12:33:56 -04:00
}
navigator.clipboard.writeText(value).then(() => {
2023-06-02 15:33:48 -04:00
setIsCopied(true)
2023-05-19 12:33:56 -04:00
setTimeout(() => {
2023-06-02 15:33:48 -04:00
setIsCopied(false)
}, timeout)
})
}
2023-05-19 12:33:56 -04:00
2023-06-02 15:33:48 -04:00
return { isCopied, copyToClipboard }
2023-05-19 12:33:56 -04:00
}