{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/hooks/useClipboard/index.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport {\n  copyClipboardImage,\n  copyClipboardText,\n  readClipboardContents,\n  readClipboardText,\n} from '@modern-kit/utils';\n\ninterface UseClipboardReturnType {\n  copiedData: string | Blob | null;\n  readData: string | ClipboardItems | null;\n  copyText: (value: string) => Promise<boolean>;\n  copyImage: (src: string, options?: { toText: boolean }) => Promise<boolean>;\n  readText: () => Promise<boolean>;\n  readContents: () => Promise<boolean>;\n}\n\n/**\n * @description 클립보드 관련 기능을 제공하는 커스텀 훅입니다.\n * 텍스트 또는 이미지를 클립보드에 복사하거나 클립보드 내용을 읽을 수 있습니다.\n *\n * @returns {{\n *   copiedData: CopiedData;\n *   readData: ReadData;\n *   copyText: (value: string) => Promise<boolean>;\n *   copyImage: (src: string, options?: { toText: boolean }) => Promise<boolean>\n *   readText: () => Promise<boolean>;\n *   readContents: () => Promise<boolean>;\n * }} 클립보드와 상호작용하는 함수들을 포함한 객체를 반환합니다.\n * - `copiedData`: 최근 클립보드에 복사된 데이터입니다.\n * - `readData`: 클립보드에서 읽어온 데이터입니다.\n * - `copyText`: 주어진 텍스트를 클립보드에 복사하는 함수이며, 성공 여부를 반환합니다.\n * - `copyImage`: 주어진 이미지 URL을 클립보드에 복사하는 함수이며, 성공 여부를 반환합니다.\n * - `readText`: 클립보드에 저장된 텍스트 데이터를 읽어오는 함수이며, 성공 여부를 반환합니다.\n * - `readContents`: 클립보드에 저장된 텍스트를 포함한 html, 이미지 등 다양한 유형의 컨텐츠를 읽어오는 함수이며, 성공 여부를 반환합니다.\n *\n * @example\n * const { copiedData, copyText, copyImage } = useClipboard();\n * copyText('modern-kit');\n * // 성공 시 true, 실패 시 false 반환\n * // 문자열을 클립보드에 저장합니다.\n *\n * copyImage(imgSrc);\n * // 성공 시 true, 실패 시 false 반환\n * // 이미지를 클립보드에 저장합니다.\n *\n * copiedData; // 최근 클립보드에 복사된 데이터입니다.\n *\n * @example\n * const { readData, readText, readContents } = useClipboard();\n * readText();\n * // 성공 시 true, 실패 시 false 반환\n * // 클립보드에 저장된 텍스트를 읽어옵니다.\n *\n * readContents();\n * // 성공 시 true, 실패 시 false 반환\n * // 클립보드의 텍스트를 포함한 html, 이미지 등 다양한 유형의 컨텐츠를 읽어옵니다.\n *\n * readData; // 클립보드에서 읽어온 데이터입니다.\n */\nexport function useClipboard(): UseClipboardReturnType {\n  const [copiedData, setCopiedData] = useState<string | Blob | null>(null);\n  const [readData, setReadData] = useState<string | ClipboardItems | null>(\n    null\n  );\n\n  const copyText = useCallback(async (value: string) => {\n    try {\n      const result = await copyClipboardText(value);\n      setCopiedData(result);\n      return true;\n    } catch {\n      setCopiedData(null);\n      return false;\n    }\n  }, []);\n\n  const copyImage = useCallback(\n    async (src: string, options?: { toText: boolean }) => {\n      const toText = options?.toText ?? false;\n\n      try {\n        const result = await copyClipboardImage(src, { toText });\n        setCopiedData(result);\n        return true;\n      } catch {\n        setCopiedData(null);\n        return false;\n      }\n    },\n    []\n  );\n\n  const readText = useCallback(async () => {\n    try {\n      const result = await readClipboardText();\n      setReadData(result);\n      return true;\n    } catch {\n      setReadData(null);\n      return false;\n    }\n  }, []);\n\n  const readContents = useCallback(async () => {\n    try {\n      const result = await readClipboardContents();\n      setReadData(result);\n      return true;\n    } catch {\n      setReadData(null);\n      return false;\n    }\n  }, []);\n\n  return { copiedData, readData, copyText, copyImage, readText, readContents };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,SAAgB,eAAuC;CACrD,MAAM,CAAC,YAAY,iBAAiB,SAA+B,KAAK;CACxE,MAAM,CAAC,UAAU,eAAe,SAC9B,KACD;CAmDD,OAAO;EAAE;EAAY;EAAU,UAjDd,YAAY,OAAO,UAAkB;GACpD,IAAI;IAEF,cAAc,MADO,kBAAkB,MAAM,CACxB;IACrB,OAAO;WACD;IACN,cAAc,KAAK;IACnB,OAAO;;KAER,EAAE,CAwCkC;EAAE,WAtCvB,YAChB,OAAO,KAAa,YAAkC;GACpD,MAAM,SAAS,SAAS,UAAU;GAElC,IAAI;IAEF,cAAc,MADO,mBAAmB,KAAK,EAAE,QAAQ,CAAC,CACnC;IACrB,OAAO;WACD;IACN,cAAc,KAAK;IACnB,OAAO;;KAGX,EAAE,CAyB8C;EAAE,UAtBnC,YAAY,YAAY;GACvC,IAAI;IAEF,YAAY,MADS,mBAAmB,CACrB;IACnB,OAAO;WACD;IACN,YAAY,KAAK;IACjB,OAAO;;KAER,EAAE,CAauD;EAAE,cAXzC,YAAY,YAAY;GAC3C,IAAI;IAEF,YAAY,MADS,uBAAuB,CACzB;IACnB,OAAO;WACD;IACN,YAAY,KAAK;IACjB,OAAO;;KAER,EAAE,CAEqE;EAAE"}