-
Notifications
You must be signed in to change notification settings - Fork 0
/
RootComponent.jsx
66 lines (59 loc) · 2.22 KB
/
RootComponent.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import React,{Component} from 'react';
import {Page} from './MainPage.jsx';
import {createStore} from 'redux';
import {Provider, connect} from 'react-redux';
import { Router, Route, IndexRoute, browserHistory, hashHistory } from 'react-router'
import {rootReducer} from './reducers.js';
import { syncHistoryWithStore } from 'react-router-redux'
import {CurveEditorWidget} from './Pages/CurveEditor.jsx';
import {World} from './Pages/World.jsx';
import {PartsEditor as PartsEditorWidget} from './Pages/PartsEditor.jsx';
import {PathEditor as PathEditorWidget} from './Pages/PathEditor.jsx';
import {ObjectEditor as ObjectEditorWidget} from './Pages/ObjectEditor.jsx';
import * as PartsEditorActions from './actions/parts.js';
import set from 'lodash/set'
import './css/style.scss';
let storeState = createStore(rootReducer);
const history = syncHistoryWithStore(hashHistory, storeState);
export function RootComponent(){
return <Provider store={storeState} >
<Router history={history} >
<Route path="/" component={Root}>
<Route path="editor" component={PartsEditor} />
<Route path="world" component={WorldView} />
<Route path="bar" component={Bar} />
</Route>
</Router>
</Provider>
}
const Root = connect(
mapStateToProps,
mapDispatchToProps
)(Page);
const PathEditor = connect(mapStateToProps, mapDispatchToProps)(PathEditorWidget);
const CurveEditor = connect(mapStateToProps, mapDispatchToProps)(CurveEditorWidget);
const ObjectEditor = connect(mapStateToProps, mapDispatchToProps)(ObjectEditorWidget);
const PartsEditor = connect(mapStateToProps, mapDispatchToProps)(PartsEditorWidget);
const WorldView = connect(mapStateToProps, mapDispatchToProps)(World);
function Bar(props){
return <div> Im bar </div>
}
function mapStateToProps(state){
return state;
}
function mapDispatchToProps(dispatch){
let o = {partsEditor: PartsEditorActions}
let actions = {};
for(let actionCollection in o){
let actionsObj = o[actionCollection];
for(let name in actionsObj){
let fn = actionsObj[name];
if(typeof(fn) === 'function'){
set(actions, [actionCollection, name], function(){
return dispatch(fn.apply(null, arguments));
})
}
}
}
return {actions};
}