import { createContext, FC, useCallback, useContext, useState } from 'react' import useEventListener from '@/shared/hooks/use-event-listener' type EditorLeftMenuState = { settingToFocus?: string } export const EditorLeftMenuContext = createContext< EditorLeftMenuState | undefined >(undefined) export const EditorLeftMenuProvider: FC = ({ children, }) => { const [value, setValue] = useState(() => ({ settingToFocus: undefined, })) useEventListener( 'ui.focus-setting', useCallback((event: CustomEvent) => { setValue(value => ({ ...value, settingToFocus: event.detail, })) }, []) ) return ( {children} ) } export const useEditorLeftMenuContext = () => { const value = useContext(EditorLeftMenuContext) if (!value) { throw new Error( `useEditorLeftMenuContext is only available inside EditorLeftMenuProvider` ) } return value }