From 981018f465400d58ee063bf76af9f7364bb61bc8 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 29 Dec 2025 12:01:43 +0800 Subject: [PATCH] feat: + useVisibilityState --- package.json | 4 ++++ src/hooks/index.js | 1 + src/hooks/useVisibilityState.js | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/hooks/useVisibilityState.js diff --git a/package.json b/package.json index fa17ef8..fa11310 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,9 @@ "pack:all": "npm run build && npm pack --pack-destination ./dist && node scripts/pack-modules.js", "test": "echo \"Error: no test specified\" && exit 1" }, + "peerDependencies": { + "react": "^18.3.0" + }, "devDependencies": { "@babel/cli": "^7.28.3", "@babel/core": "^7.28.5", @@ -32,6 +35,7 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-node-resolve": "^15.3.0", + "react": "^18.3.1", "rimraf": "^6.1.2", "rollup": "^4.24.0" } diff --git a/src/hooks/index.js b/src/hooks/index.js index b30a985..c9e33e4 100644 --- a/src/hooks/index.js +++ b/src/hooks/index.js @@ -1,2 +1,3 @@ // Auto Generated index.js export * as useHTLanguageSets from './useHTLanguageSets.js'; +export * as useVisibilityState from './useVisibilityState.js'; diff --git a/src/hooks/useVisibilityState.js b/src/hooks/useVisibilityState.js new file mode 100644 index 0000000..05e9327 --- /dev/null +++ b/src/hooks/useVisibilityState.js @@ -0,0 +1,20 @@ +import { useState, useEffect } from 'react'; +export function useVisibilityState() { + const [isVisible, setIsVisible] = useState(true); + + useEffect(() => { + const handleVisibilityChange = () => { + setIsVisible(document.visibilityState === 'visible'); + }; + + document.addEventListener('visibilitychange', handleVisibilityChange); + + handleVisibilityChange(); // Initial check on component mount + + return () => { + document.removeEventListener('visibilitychange', handleVisibilityChange); + }; + }, []); + + return isVisible; +}