import * as React from 'react'; import {UserStore} from './user/UserStore'; import {SnackManager} from './snack/SnackManager'; import {MessagesStore} from './message/MessagesStore'; import {CurrentUser} from './CurrentUser'; import {ClientStore} from './client/ClientStore'; import {AppStore} from './application/AppStore'; import {inject as mobxInject, Provider} from 'mobx-react'; import {WebSocketStore} from './message/WebSocketStore'; export interface StoreMapping { userStore: UserStore; snackManager: SnackManager; messagesStore: MessagesStore; currentUser: CurrentUser; clientStore: ClientStore; appStore: AppStore; wsStore: WebSocketStore; } export type AllStores = Extract; export type Stores = Pick; export const inject = (...stores: I[]) => { return

( node: React.ComponentType

): React.ComponentType>> => { return mobxInject(...stores)(node); }; }; export const InjectProvider: React.SFC<{stores: StoreMapping}> = ({children, stores}) => { return {children}; };