UNPKG

@adaptui/react

Version:

Collection of headless components/hooks that are accessible, composable, customizable from low level to build your own UI & Design System powered by Reakit

67 lines (55 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useToastTimer = void 0; var _react = _interopRequireDefault(require("react")); var _helpers = require("./helpers"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var useToastTimer = function useToastTimer(toasts, updateToast, dismissToast) { _react.default.useEffect(function () { var now = Date.now(); var timeouts = toasts.map(function (t) { if (!t.autoDismiss) return undefined; if (t.pausedAt) return undefined; var durationLeft = (t.dismissDuration || 0) + t.pauseDuration - (now - t.createdAt); if (durationLeft < 0) { if (t.visible) { dismissToast(t.id); } return undefined; } return setTimeout(function () { dismissToast(t.id); }, durationLeft); }); return function () { timeouts.forEach(function (timeout) { return timeout && clearTimeout(timeout); }); }; }, [toasts, dismissToast]); var pauseTimer = _react.default.useCallback(function (toastId) { var toast = (0, _helpers.getToast)(toasts, toastId); if (!(toast !== null && toast !== void 0 && toast.autoDismiss)) return; updateToast(toastId, { pausedAt: Date.now() }); }, [toasts, updateToast]); var resumeTimer = _react.default.useCallback(function (toastId) { var toast = (0, _helpers.getToast)(toasts, toastId); if (!(toast !== null && toast !== void 0 && toast.autoDismiss)) return; var now = Date.now(); var diff = now - (toast.pausedAt || 0); updateToast(toastId, { pausedAt: null, pauseDuration: toast.pauseDuration + diff }); }, [toasts, updateToast]); return { resumeTimer: resumeTimer, pauseTimer: pauseTimer }; }; exports.useToastTimer = useToastTimer; //# sourceMappingURL=useToastTimer.js.map