UNPKG

2.18 kBJavaScriptView Raw
1import 'babel-core/polyfill';
2
3import React from 'react';
4import { render } from 'react-dom';
5import { Router, Route, IndexRoute } from 'react-router';
6
7import { createStore, combineReducers, applyMiddleware } from 'redux';
8import { Provider } from 'react-redux';
9
10import createBrowserHistory from 'history/lib/createBrowserHistory';
11import { syncReduxAndRouter, routeReducer } from 'redux-simple-router';
12import thunk from 'redux-thunk';
13import reducers from './reducers';
14
15import App from './containers/app';
16import Index from './containers/index';
17import Edit from './containers/edit';
18import New from './containers/new';
19import NotFound from './components/notfound';
20import { setOptions, setValidators, setNormalizers, eventSubscribe } from './actions';
21
22const reducer = combineReducers(Object.assign({}, { directory: reducers }, {
23 routing: routeReducer
24}));
25
26const store = applyMiddleware(thunk)(createStore)(reducer);
27const history = createBrowserHistory();
28
29export default class TeamDirectory {
30 constructor(id, options) {
31 syncReduxAndRouter(history, store);
32 options = options || {};
33
34 // Sets options passed from client
35 store.dispatch(setOptions(options));
36
37 const container = typeof id === 'string' ?
38 document.getElementById(id) : id;
39
40 render(
41 <Provider store={store}>
42 <Router history={history}>
43 <Route path='/' component={App}>
44 <IndexRoute component={Index} />
45 <Route path='/edit/:user' component={Edit} />
46 <Route path='/new' component={New} />
47 <Route path='/*' component={NotFound} />
48 </Route>
49 </Router>
50 </Provider>,
51 container
52 );
53 }
54
55 sorts(fn) {
56 store.dispatch(setSorts(fn));
57 return this;
58 }
59
60 validators(fn) {
61 store.dispatch(setValidators(fn));
62 return this;
63 }
64
65 normalizers(fn) {
66 store.dispatch(setNormalizers(fn));
67 return this;
68 }
69
70 listingTemplate(fn) {
71 store.dispatch(setListingTemplate(fn));
72 return this;
73 }
74
75 statsTemplate(fn) {
76 store.dispatch(setstatstemplate(fn));
77 return this;
78 }
79
80 on(type, fn) {
81 store.dispatch(eventSubscribe(type, fn));
82 return this;
83 }
84}