"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); function useRafLoop(callback, initiallyActive) { if (initiallyActive === void 0) { initiallyActive = true; } var raf = react_1.useRef(null); var rafActivity = react_1.useRef(false); var rafCallback = react_1.useRef(callback); rafCallback.current = callback; var step = react_1.useCallback(function (time) { if (rafActivity.current) { rafCallback.current(time); raf.current = requestAnimationFrame(step); } }, []); var result = react_1.useMemo(function () { return [ function () { // stop if (rafActivity.current) { rafActivity.current = false; raf.current && cancelAnimationFrame(raf.current); } }, function () { // start if (!rafActivity.current) { rafActivity.current = true; raf.current = requestAnimationFrame(step); } }, function () { return rafActivity.current; }, ]; }, []); react_1.useEffect(function () { if (initiallyActive) { result[1](); } return result[0]; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return result; } exports.default = useRafLoop;