From 2b5df908271d23f8b690c3298c812afe44fc6b30 Mon Sep 17 00:00:00 2001 From: Botzy Date: Tue, 25 Feb 2025 11:40:34 +0200 Subject: [PATCH] feat(useWindowSize): added hook for screen size --- src/common/index.js | 2 ++ src/common/useWindowSize.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/common/useWindowSize.js diff --git a/src/common/index.js b/src/common/index.js index 4acf8b056..ab3723cd0 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -24,6 +24,7 @@ const { default: useShell } = require('./useShell'); const useStreamingServer = require('./useStreamingServer'); const useTorrent = require('./useTorrent'); const useTranslate = require('./useTranslate'); +const useWindowSize = require('./useWindowSize'); module.exports = { FileDropProvider, @@ -55,4 +56,5 @@ module.exports = { useStreamingServer, useTorrent, useTranslate, + useWindowSize, }; diff --git a/src/common/useWindowSize.js b/src/common/useWindowSize.js new file mode 100644 index 000000000..9f7285261 --- /dev/null +++ b/src/common/useWindowSize.js @@ -0,0 +1,18 @@ +// Copyright (C) 2017-2025 Smart code 203358507 + +const { useState, useEffect } = require('react'); + +const useWindowSize = () => { + const [size, setSize] = useState({ width: window.innerWidth, height: window.innerHeight }); + + useEffect(() => { + const handleResize = () => setSize({ width: window.innerWidth, height: window.innerHeight }); + + window.addEventListener('resize', handleResize); + return () => window.removeEventListener('resize', handleResize); + }, []); + + return size; +}; + +module.exports = useWindowSize;