UNPKG

@storm-stack/hooks

Version:

A collection of React hooks used by Storm Software in various client libraries and applications.

36 lines (35 loc) 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCopyToClipboard = useCopyToClipboard; var _base = require("@storm-stack/types/utility-types/base"); var _react = require("react"); function oldSchoolCopy(text) { const tempTextArea = document.createElement("textarea"); tempTextArea.value = text; document.body.appendChild(tempTextArea); tempTextArea.select(); document.execCommand("copy"); document.body.removeChild(tempTextArea); } function useCopyToClipboard() { const [state, setState] = (0, _react.useState)(null); const copyToClipboard = (0, _react.useCallback)(value => { const handleCopy = async () => { try { if (navigator?.clipboard?.writeText) { await navigator.clipboard.writeText(value ?? _base.EMPTY_STRING); setState(value ?? _base.EMPTY_STRING); } else { throw new Error("writeText not supported"); } } catch (e) { oldSchoolCopy(value ?? _base.EMPTY_STRING); setState(value ?? _base.EMPTY_STRING); } }; handleCopy(); }, []); return [state, copyToClipboard]; }