UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

87 lines (69 loc) 2.39 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var slicedToArray = require('../_chunks/dep-640599ea.js'); var React = require('react'); var reactUse = require('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 = React.useState(0), _useState2 = slicedToArray._slicedToArray(_useState, 2), elapsed = _useState2[0], set = _useState2[1]; var _useState3 = React.useState(false), _useState4 = slicedToArray._slicedToArray(_useState3, 2), active = _useState4[0], setActive = _useState4[1]; var _useState5 = React.useState(false), _useState6 = slicedToArray._slicedToArray(_useState5, 2), startup = _useState6[0], setStartup = _useState6[1]; var action = function action(isActive) { setActive(isActive); setStartup(true); }; reactUse.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]; }; exports["default"] = useRaf; //# sourceMappingURL=useRaf.js.map