import { ReactNode, createContext, useContext, memo } from 'react' import { observer } from 'mobx-react-lite' import { LinkingController } from '@/Controllers/LinkingController' const LinkingControllerContext = createContext(undefined) export const useLinkingController = () => { const value = useContext(LinkingControllerContext) if (!value) { throw new Error('Component must be a child of ') } return value } type ChildrenProps = { children: ReactNode } type ProviderProps = { controller: LinkingController } & ChildrenProps const MemoizedChildren = memo(({ children }: ChildrenProps) => <>{children}) const LinkingControllerProvider = ({ controller, children }: ProviderProps) => { return ( ) } export default observer(LinkingControllerProvider)