-
Notifications
You must be signed in to change notification settings - Fork 11
/
index.js
104 lines (94 loc) · 2.22 KB
/
index.js
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import React from 'react';
import {render} from 'react-dom';
/*
* The Provider component provides
* the React store to all its child
* components so we don't need to pass
* it explicitly to all the components.
*/
import {Provider} from 'react-redux';
import {createStore, applyMiddleware, compose} from 'redux';
import createLogger from 'redux-logger';
import {AppContainer} from 'react-hot-loader';
import grid from './reducers/grid';
import App from './components/App';
import DevTools from './containers/DevTools';
const logger = createLogger();
/*
* The initial state of the app.
*
* This describes a 10x10 picture
* of a smiley face. :)
*/
const initialState = {
width: 10,
height: 10,
cells: [
0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 1, 1, 1, 1, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0
]
};
/*
* The enhancer are passed when
* creating the Redux store to
* add some extra functionality.
*
* In this case we add a logger
* middleware that write some debug
* information every time the
* state is changed.
*
* We also add the Redux DevTools
* so we can easily debug the state.
*/
const enhancer = compose(
applyMiddleware(logger),
DevTools.instrument()
);
/*
* This creates the store so we
* can listen to changes and
* dispatch actions.
*/
const store = createStore(grid, initialState, enhancer);
const rootElement = document.getElementById('root');
render(
<AppContainer>
<Provider store={store}>
<div>
<App />
<DevTools />
</div>
</Provider>
</AppContainer>,
rootElement
);
/**
* This is for hot reloading so the
* app updates every time the code of
* the components change.
*/
if (module.hot) {
module.hot.accept('./components/App', () => {
const NextApp = require('./components/App').default;
render(
<AppContainer>
<Provider store={store}>
<div>
<NextApp />
<DevTools />
</div>
</Provider>
</AppContainer>,
rootElement
);
});
}