Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
18 lines
566 B
Plaintext
18 lines
566 B
Plaintext
import { useConstant } from '../../utils/use-constant.mjs';
|
|
import { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';
|
|
import { createScopedAnimate } from '../animate/index.mjs';
|
|
|
|
function useAnimate() {
|
|
const scope = useConstant(() => ({
|
|
current: null, // Will be hydrated by React
|
|
animations: [],
|
|
}));
|
|
const animate = useConstant(() => createScopedAnimate(scope));
|
|
useUnmountEffect(() => {
|
|
scope.animations.forEach((animation) => animation.stop());
|
|
});
|
|
return [scope, animate];
|
|
}
|
|
|
|
export { useAnimate };
|