@modern-kit/react
Version:
1 lines • 5.79 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","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"],"names":["useState","useCallback","copyClipboardText","copyClipboardImage","readClipboardText","readClipboardContents"],"mappings":";;;;;AA4DO,SAAS,YAAA,GAAuC;AACrD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAA+B,IAAI,CAAA;AACvE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA;AAAA,IAC9B;AAAA,GACF;AAEA,EAAA,MAAM,QAAA,GAAWC,iBAAA,CAAY,OAAO,KAAA,KAAkB;AACpD,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAMC,uBAAA,CAAkB,KAAK,CAAA;AAC5C,MAAA,aAAA,CAAc,MAAM,CAAA;AACpB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAYD,iBAAA;AAAA,IAChB,OAAO,KAAa,OAAA,KAAkC;AACpD,MAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,KAAA;AAElC,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,MAAME,wBAAA,CAAmB,GAAA,EAAK,EAAE,QAAQ,CAAA;AACvD,QAAA,aAAA,CAAc,MAAM,CAAA;AACpB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,CAAA,MAAQ;AACN,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,QAAA,GAAWF,kBAAY,YAAY;AACvC,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAMG,uBAAA,EAAkB;AACvC,MAAA,WAAA,CAAY,MAAM,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAeH,kBAAY,YAAY;AAC3C,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAMI,2BAAA,EAAsB;AAC3C,MAAA,WAAA,CAAY,MAAM,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,UAAU,YAAA,EAAa;AAC7E;;;;"}