upgrade to tamagui v2 and guest pwa overhaul
This commit is contained in:
39
resources/js/guest-v2/lib/usePulseAnimation.ts
Normal file
39
resources/js/guest-v2/lib/usePulseAnimation.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import React from 'react';
|
||||
|
||||
type UsePulseAnimationOptions = {
|
||||
intervalMs?: number;
|
||||
delayMs?: number;
|
||||
};
|
||||
|
||||
export function usePulseAnimation({ intervalMs = 2400, delayMs = 0 }: UsePulseAnimationOptions = {}) {
|
||||
const [active, setActive] = React.useState(false);
|
||||
|
||||
React.useEffect(() => {
|
||||
let interval: ReturnType<typeof setInterval> | undefined;
|
||||
let timeout: ReturnType<typeof setTimeout> | undefined;
|
||||
|
||||
const start = () => {
|
||||
setActive((prev) => !prev);
|
||||
interval = setInterval(() => {
|
||||
setActive((prev) => !prev);
|
||||
}, intervalMs);
|
||||
};
|
||||
|
||||
if (delayMs > 0) {
|
||||
timeout = setTimeout(start, delayMs);
|
||||
} else {
|
||||
start();
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (interval) {
|
||||
clearInterval(interval);
|
||||
}
|
||||
if (timeout) {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
};
|
||||
}, [delayMs, intervalMs]);
|
||||
|
||||
return active;
|
||||
}
|
||||
Reference in New Issue
Block a user