UNPKG

rvx

Version:

A signal based rendering library

72 lines 1.69 kB
import { capture, teardown } from "../core/lifecycle.js"; export function useMicrotask(callback) { let active = true; let dispose; teardown(() => { active = false; dispose?.(); }); queueMicrotask(() => { if (active) { dispose = capture(callback); if (!active) { dispose?.(); } } }); } export function useTimeout(callback, timeout) { let active = true; let dispose; let handle; teardown(() => { active = false; clearTimeout(handle); dispose?.(); }); handle = setTimeout(() => { dispose = capture(callback); if (!active) { dispose(); } }, timeout); } export function useInterval(callback, interval) { let active = true; let dispose; let handle; teardown(() => { active = false; clearInterval(handle); dispose?.(); }); handle = setInterval(() => { dispose?.(); dispose = undefined; dispose = capture(callback); if (!active) { dispose(); } }, interval); } export function useAnimation(callback) { let active = true; let dispose; let handle; teardown(() => { active = false; cancelAnimationFrame(handle); dispose?.(); }); handle = requestAnimationFrame(function next(now) { handle = requestAnimationFrame(next); dispose?.(); dispose = undefined; dispose = capture(() => callback(now)); if (!active) { dispose(); dispose = undefined; } }); } //# sourceMappingURL=timers.js.map