UNPKG

@primer/react-brand

Version:

Primer Brand is a GitHub's design system for creating React-based marketing websites and digital experiences.

52 lines (51 loc) 1.24 kB
import { useReducedMotion as e } from "./useReducedMotion.js"; import { useCallback as t, useEffect as n, useState as r } from "react"; //#region src/hooks/useCursorAnimation.ts function i({ text: i, animate: a, duration: o = 500, delay: s = 500, waitForPageLoad: c = !0 }) { let l = e(), u = a === !0 && !l && i.length > 0, [d, f] = r(u), [p, m] = r(+!u), h = t(() => { if (!u) { m(1), f(!1); return; } f(!0), m(0); let e = performance.now(), t = (n) => { let r = n - e, i = Math.min(r / o, 1); m(i), i < 1 ? requestAnimationFrame(t) : f(!1); }; requestAnimationFrame(t); }, [u, o]); return n(() => { if (!u) { m(1), f(!1); return; } let e = () => setTimeout(() => { h(); }, s), t; if (c && typeof window < "u") if (document.readyState === "complete") t = e(); else { let n = () => { t = e(); }; return window.addEventListener("load", n), () => { window.removeEventListener("load", n), t && clearTimeout(t); }; } else t = e(); return () => { t && clearTimeout(t); }; }, [ h, s, u, c ]), { isAnimating: d, showCursor: !l && a === !0, progress: p }; } //#endregion export { i as useCursorAnimation }; //# sourceMappingURL=useCursorAnimation.js.map