mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 06:53:44 +08:00
28 lines
836 B
TypeScript
28 lines
836 B
TypeScript
import { useEffect, useState } from "react";
|
|
|
|
export const useVisibility = () => {
|
|
const [visible, setVisible] = useState(true);
|
|
|
|
useEffect(() => {
|
|
const handleVisibilityChange = () => {
|
|
setVisible(document.visibilityState === "visible");
|
|
};
|
|
|
|
const handleFocus = () => setVisible(true);
|
|
const handleClick = () => setVisible(true);
|
|
|
|
handleVisibilityChange();
|
|
document.addEventListener("focus", handleFocus);
|
|
document.addEventListener("pointerdown", handleClick);
|
|
document.addEventListener("visibilitychange", handleVisibilityChange);
|
|
|
|
return () => {
|
|
document.removeEventListener("focus", handleFocus);
|
|
document.removeEventListener("pointerdown", handleClick);
|
|
document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
};
|
|
}, []);
|
|
|
|
return visible;
|
|
};
|