UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

50 lines (41 loc) 1.42 kB
"use strict"; exports.__esModule = true; exports.useCopyConfirmation = void 0; var _react = require("react"); var useCopyConfirmation = function useCopyConfirmation(props) { var onClick = props.onClick, onReset = props.onReset, _props$resetTimeout = props.resetTimeout, resetTimeout = _props$resetTimeout === void 0 ? 2000 : _props$resetTimeout; var _useState = (0, _react.useState)(false), shouldRenderConfirmation = _useState[0], setConfirmation = _useState[1]; var confirmationTimeout = (0, _react.useRef)(); var isCancelled = (0, _react.useRef)(false); var handleClick = (0, _react.useCallback)(function (e) { if (confirmationTimeout.current) { clearTimeout(confirmationTimeout); } setConfirmation(true); onClick && onClick(e); confirmationTimeout.current = setTimeout(function () { if (!isCancelled.current) { setConfirmation(false); onReset && onReset(); } }, resetTimeout); }, [onClick, onReset, resetTimeout]); (0, _react.useEffect)(function () { if (confirmationTimeout.current) { clearTimeout(confirmationTimeout); } return function () { isCancelled.current = true; if (confirmationTimeout.current) { clearTimeout(confirmationTimeout); } }; }, []); return [shouldRenderConfirmation, handleClick]; }; exports.useCopyConfirmation = useCopyConfirmation;