mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-20 06:01:03 -05:00
* Initial * CSS lint * Test CI * Add 1v1, 2v2, and 3v3 Tags (#1771) * Initial * CSS lint * Test CI * Rename step --------- Co-authored-by: xi <104683822+ximk@users.noreply.github.com>
24 lines
716 B
TypeScript
24 lines
716 B
TypeScript
import React from "react";
|
|
|
|
// "initial" = user has not tabbed out yet
|
|
type Visibility = "initial" | DocumentVisibilityState;
|
|
|
|
/** Track the `visibilitychange` event: The `visibilitychange` event is fired at the document when the contents of its tab have become visible or have been hidden. */
|
|
export function useVisibilityChange() {
|
|
const [visible, setVisible] = React.useState<Visibility>("initial");
|
|
|
|
React.useEffect(() => {
|
|
function handleVisibilityChange() {
|
|
setVisible(document.visibilityState);
|
|
}
|
|
|
|
document.addEventListener("visibilitychange", handleVisibilityChange);
|
|
|
|
return () => {
|
|
document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
};
|
|
}, []);
|
|
|
|
return visible;
|
|
}
|