UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

85 lines (84 loc) 2.67 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard")); var _rcUtil = require("rc-util"); var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; const useCopyClick = _ref => { let { copyConfig, children } = _ref; const [copied, setCopied] = React.useState(false); const [copyLoading, setCopyLoading] = React.useState(false); const copyIdRef = React.useRef(null); const cleanCopyId = () => { if (copyIdRef.current) { clearTimeout(copyIdRef.current); } }; const copyOptions = {}; if (copyConfig.format) { copyOptions.format = copyConfig.format; } React.useEffect(() => cleanCopyId, []); // Keep copy action up to date const onClick = (0, _rcUtil.useEvent)(e => __awaiter(void 0, void 0, void 0, function* () { var _a; e === null || e === void 0 ? void 0 : e.preventDefault(); e === null || e === void 0 ? void 0 : e.stopPropagation(); setCopyLoading(true); try { const text = typeof copyConfig.text === 'function' ? yield copyConfig.text() : copyConfig.text; (0, _copyToClipboard.default)(text || String(children) || '', copyOptions); setCopyLoading(false); setCopied(true); // Trigger tips update cleanCopyId(); copyIdRef.current = setTimeout(() => { setCopied(false); }, 3000); (_a = copyConfig.onCopy) === null || _a === void 0 ? void 0 : _a.call(copyConfig, e); } catch (error) { setCopyLoading(false); throw error; } })); return { copied, copyLoading, onClick }; }; var _default = exports.default = useCopyClick;