summaryrefslogtreecommitdiff
path: root/frontend/src/components/QuickAccessVisibleState.tsx
blob: 83e45177f13bc09ca360419093200bd95ad8dc03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { FC, PropsWithChildren, createContext, useContext, useState } from 'react';

export const QuickAccessVisibleState = createContext<boolean>(false);

export const useQuickAccessVisible = () => useContext(QuickAccessVisibleState);

export const QuickAccessVisibleStateProvider: FC<PropsWithChildren<{ tab?: any; initialVal?: boolean }>> = ({
  children,
  tab,
  initialVal,
}) => {
  const initial = initialVal || tab?.initialVisibility;
  const [visible, setVisible] = useState<boolean>(initial);
  // HACK but i can't think of a better way to do this
  if (tab)
    tab.qAMVisibilitySetter = (val: boolean) => {
      if (val != visible) setVisible(val);
    };

  return <QuickAccessVisibleState.Provider value={visible}>{children}</QuickAccessVisibleState.Provider>;
};