import { FC, createContext, useContext, useState } from 'react'; const QuickAccessVisibleState = createContext(true); export const useQuickAccessVisible = () => useContext(QuickAccessVisibleState); export const QuickAccessVisibleStateProvider: FC<{ initial: boolean; setter: ((val: boolean) => {}[]) | never[] }> = ({ children, initial, setter, }) => { const [visible, setVisible] = useState(initial); const [prev, setPrev] = useState(initial); // hack to use an array as a "pointer" to pass the setter up the tree setter[0] = setVisible; if (initial != prev) { setPrev(initial); setVisible(initial); } return {children}; };