@pantheon-systems/design-toolkit-react
Version:
Pantheon's React Design Toolkit
62 lines (59 loc) • 1.89 kB
JavaScript
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import _regeneratorRuntime from '@babel/runtime/regenerator';
import { useState, useEffect } from 'react';
var useClipboard = function useClipboard(text, options) {
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
isCopied = _useState2[0],
setIsCopied = _useState2[1];
var duration = options && options.duration;
useEffect(function () {
var id;
if (isCopied && duration) {
id = setTimeout(function () {
setIsCopied(false);
}, duration);
}
return function () {
if (id) {
clearTimeout(id);
}
};
}, [isCopied, duration]);
var doCopy = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!navigator.clipboard) {
_context.next = 9;
break;
}
_context.prev = 1;
_context.next = 4;
return navigator.clipboard.writeText(text);
case 4:
setIsCopied(true);
_context.next = 9;
break;
case 7:
_context.prev = 7;
_context.t0 = _context["catch"](1);
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[1, 7]]);
}));
return function doCopy() {
return _ref.apply(this, arguments);
};
}();
return [isCopied, doCopy];
};
var useClipboard$1 = useClipboard;
export { useClipboard$1 as default };
//# sourceMappingURL=useClipboard.js.map