diff --git a/src/context/browserDimensions.tsx b/src/context/browserDimensions.tsx new file mode 100644 index 00000000..e1d81681 --- /dev/null +++ b/src/context/browserDimensions.tsx @@ -0,0 +1,39 @@ +import React, { createContext, useCallback, useContext, useState } from "react"; + +interface BrowserDimensions { + width: number; + height: number; + setWidth: (newWidth: number) => void; +}; + +class BrowserDimensionsStore implements Partial{ + width: number = 1280; + height: number = 720; +}; + +const browserDimensionsStore = new BrowserDimensionsStore(); +const browserDimensionsContext = createContext(browserDimensionsStore as BrowserDimensions); + +export const useBrowserDimensionsStore = () => useContext(browserDimensionsContext); + +export const BrowserDimensionsProvider = ({ children }: { children: JSX.Element }) => { + const [width, setWidth] = useState(browserDimensionsStore.width); + const [height, setHeight] = useState(browserDimensionsStore.height); + + const setNewWidth = useCallback((newWidth: number) => { + setWidth(newWidth); + setHeight(Math.round(newWidth / 1.6)); + }, [setWidth, setHeight]); + + return ( + + {children} + + ); +};