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} ); };