UNPKG

rsuite

Version:

A suite of react components

47 lines (46 loc) 1.96 kB
'use client'; "use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = require("react"); var _on = _interopRequireDefault(require("dom-lib/on")); var _hooks = require("../../internals/hooks"); var _ToastContext = _interopRequireDefault(require("../ToastContext")); /** * A hook that delays the closure of the message box. */ function useDelayedClosure(props) { var onClose = props.onClose, durationProp = props.duration, targetRef = props.targetRef; var _useContext = (0, _react.useContext)(_ToastContext.default), usedToaster = _useContext.usedToaster, _useContext$duration = _useContext.duration, duration = _useContext$duration === void 0 ? durationProp : _useContext$duration, mouseReset = _useContext.mouseReset; var mouseEnterRef = (0, _react.useRef)(); var mouseLeaveRef = (0, _react.useRef)(); var _useTimeout = (0, _hooks.useTimeout)(onClose, duration, usedToaster && duration > 0), clear = _useTimeout.clear, reset = _useTimeout.reset; (0, _hooks.useMount)(function () { if (targetRef !== null && targetRef !== void 0 && targetRef.current && mouseReset) { if (mouseEnterRef.current || mouseLeaveRef.current) { return; } mouseEnterRef.current = (0, _on.default)(targetRef.current, 'mouseenter', clear); mouseLeaveRef.current = (0, _on.default)(targetRef.current, 'mouseleave', reset); return function () { var _mouseEnterRef$curren, _mouseLeaveRef$curren; (_mouseEnterRef$curren = mouseEnterRef.current) === null || _mouseEnterRef$curren === void 0 || _mouseEnterRef$curren.off(); (_mouseLeaveRef$curren = mouseLeaveRef.current) === null || _mouseLeaveRef$curren === void 0 || _mouseLeaveRef$curren.off(); }; } }); return { clear: clear, reset: reset }; } var _default = exports.default = useDelayedClosure;