"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = require("react"); var useIsomorphicLayoutEffect_1 = tslib_1.__importDefault(require("./useIsomorphicLayoutEffect")); var useRaf = function (ms, delay) { if (ms === void 0) { ms = 1e12; } if (delay === void 0) { delay = 0; } var _a = react_1.useState(0), elapsed = _a[0], set = _a[1]; useIsomorphicLayoutEffect_1.default(function () { var raf; var timerStop; var start; var onFrame = function () { var time = Math.min(1, (Date.now() - start) / ms); set(time); loop(); }; var loop = function () { raf = requestAnimationFrame(onFrame); }; var onStart = function () { timerStop = setTimeout(function () { cancelAnimationFrame(raf); set(1); }, ms); start = Date.now(); loop(); }; var timerDelay = setTimeout(onStart, delay); return function () { clearTimeout(timerStop); clearTimeout(timerDelay); cancelAnimationFrame(raf); }; }, [ms, delay]); return elapsed; }; exports.default = useRaf;