import { FC, ComponentType, createContext, useContext } from "react"; import ViewState from "../../ReactViewModels/ViewState"; import TerriaError from "../../Core/TerriaError"; export const ViewStateContext = createContext(undefined); export const ViewStateProvider: FC<{ viewState: ViewState; children: React.ReactNode; }> = ({ viewState, children }) => ( {children} ); export const useViewState = () => { const viewState = useContext(ViewStateContext); if (!viewState) throw new TerriaError({ message: "ViewState is not defined!" }); return viewState; }; export const withViewState =

( Component: ComponentType

): FC> => function withViewState(props) { return ( {(viewState) => { if (!viewState) throw new TerriaError({ message: "ViewState is not defined!" }); return ; }} ); }; export interface WithViewState { viewState: ViewState; }