UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

83 lines (67 loc) 2.27 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ import { _ as _slicedToArray } from '../_chunks/dep-dc9b74a1.js'; import { useState } from 'react'; import { useIsomorphicLayoutEffect } from 'react-use'; var useRaf = function useRaf() { var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1e12; var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var e = arguments.length > 2 ? arguments[2] : undefined; var _useState = useState(0), _useState2 = _slicedToArray(_useState, 2), elapsed = _useState2[0], set = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), active = _useState4[0], setActive = _useState4[1]; var _useState5 = useState(false), _useState6 = _slicedToArray(_useState5, 2), startup = _useState6[0], setStartup = _useState6[1]; var action = function action(isActive) { setActive(isActive); setStartup(true); }; useIsomorphicLayoutEffect(function () { var raf; var timerStop; var start; var timerDelay; var onFrame = function onFrame() { var time = Math.min(1, (Date.now() - start) / ms); set(active ? time : 1 - time); loop(); }; var loop = function loop() { raf = requestAnimationFrame(onFrame); }; var onStart = function onStart() { var _e$start; e === null || e === void 0 ? void 0 : (_e$start = e.start) === null || _e$start === void 0 ? void 0 : _e$start.call(e); timerStop = setTimeout(function () { var _e$end; cancelAnimationFrame(raf); set(active ? 1 : 0); setStartup(false); e === null || e === void 0 ? void 0 : (_e$end = e.end) === null || _e$end === void 0 ? void 0 : _e$end.call(e); }, ms); start = Date.now(); loop(); }; if (startup) { timerDelay = setTimeout(onStart, delay); } return function () { clearTimeout(timerStop); clearTimeout(timerDelay); cancelAnimationFrame(raf); }; }, [ms, delay, startup, active]); return [elapsed, action]; }; export { useRaf as default }; //# sourceMappingURL=useRaf.js.map