import React, { RefObject, useContext, useState } from 'react'; export interface Dimensions { width: number; height: number; } export interface IDropdownContextProps { visible?: boolean; toggleRef?: RefObject; setVisible?(bool: boolean): void; setToggleRef?(ref: RefObject): void; } export const DropdownContext = React.createContext>({}); export const DropdownProvider: React.FC = (props) => { const initialState: IDropdownContextProps = { visible: false, toggleRef: null, setVisible(bool: boolean) { setState((prevState) => ({ ...prevState, visible: bool })); }, setToggleRef(ref: RefObject) { setState((prevState) => ({ ...prevState, toggleRef: ref })); }, }; const [state, setState] = useState(initialState); return {props.children}; }; export function useDropdownContext() { const context = useContext(DropdownContext); return context; }