summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-09-24 23:24:47 +0200
committerSamy Pesse <samypesse@gmail.com>2016-09-24 23:24:47 +0200
commitfab88bb47e71ad47c928198ddbf7a4d0527e81bb (patch)
treed218193c775e125e0043d21ee216eed531f01b1b /packages/gitbook-core
parentfa7cf3a65f7a19b2870e6d92c2e110e2356189ae (diff)
downloadgitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.zip
gitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.tar.gz
gitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.tar.bz2
Add flex box components
Diffstat (limited to 'packages/gitbook-core')
-rw-r--r--packages/gitbook-core/package.json3
-rw-r--r--packages/gitbook-core/src/composeReducer.js16
-rw-r--r--packages/gitbook-core/src/createReducer.js2
-rw-r--r--packages/gitbook-core/src/createStore.js9
-rw-r--r--packages/gitbook-core/src/index.js5
5 files changed, 29 insertions, 6 deletions
diff --git a/packages/gitbook-core/package.json b/packages/gitbook-core/package.json
index 1137d32..c00c6cc 100644
--- a/packages/gitbook-core/package.json
+++ b/packages/gitbook-core/package.json
@@ -13,7 +13,8 @@
"react-redux": "^4.4.5",
"react-safe-html": "^0.3.0",
"redux": "^3.5.2",
- "redux-thunk": "^2.1.0"
+ "redux-thunk": "^2.1.0",
+ "reflexbox": "^2.2.2"
},
"devDependencies": {
"babel-cli": "^6.14.0",
diff --git a/packages/gitbook-core/src/composeReducer.js b/packages/gitbook-core/src/composeReducer.js
new file mode 100644
index 0000000..fa2a589
--- /dev/null
+++ b/packages/gitbook-core/src/composeReducer.js
@@ -0,0 +1,16 @@
+
+/**
+ * Compose multiple reducers into one
+ * @param {Function} reducers
+ * @return {Function}
+ */
+function composeReducer(...reducers) {
+ return (state, action) => {
+ return reducers.reduce(
+ (newState, reducer) => reducer(newState, action),
+ state
+ );
+ };
+}
+
+module.exports = composeReducer;
diff --git a/packages/gitbook-core/src/createReducer.js b/packages/gitbook-core/src/createReducer.js
index 4af6373..6860277 100644
--- a/packages/gitbook-core/src/createReducer.js
+++ b/packages/gitbook-core/src/createReducer.js
@@ -7,7 +7,7 @@
* @return {Function(state, action): state}
*/
function createReducer(name, reduce) {
- return function(state, action) {
+ return (state, action) => {
const value = state[name];
state[name] = reduce(value, action);
return state;
diff --git a/packages/gitbook-core/src/createStore.js b/packages/gitbook-core/src/createStore.js
index 6f90b77..201a647 100644
--- a/packages/gitbook-core/src/createStore.js
+++ b/packages/gitbook-core/src/createStore.js
@@ -2,6 +2,7 @@ const Redux = require('redux');
const ReduxThunk = require('redux-thunk').default;
const coreReducers = require('./reducers');
+const composeReducer = require('./composeReducer');
/**
* Create a new redux store from an initial state and a list of plugins.
@@ -13,12 +14,12 @@ const coreReducers = require('./reducers');
*/
function createStore(plugins, initialState) {
const pluginReducers = plugins.map(plugin => plugin.onReduceState);
+ const reducer = composeReducer(...[coreReducers].concat(pluginReducers));
+
const store = Redux.createStore(
(state, action) => {
- return pluginReducers.reduce(
- (newState, reducer) => reducer(newState, action),
- coreReducers(state, action)
- );
+ console.log('[store]', action.type);
+ return reducer(state, action);
},
initialState,
Redux.compose(Redux.applyMiddleware(ReduxThunk))
diff --git a/packages/gitbook-core/src/index.js b/packages/gitbook-core/src/index.js
index 46892e4..0a5d8c5 100644
--- a/packages/gitbook-core/src/index.js
+++ b/packages/gitbook-core/src/index.js
@@ -1,5 +1,6 @@
const Head = require('react-helmet');
const { Provider } = require('react-redux');
+const { Flex, Box } = require('reflexbox');
const { InjectedComponent, InjectedComponentSet } = require('./components/InjectedComponent');
const { ImportLink, ImportScript, ImportCSS } = require('./components/Import');
@@ -13,6 +14,7 @@ const connect = require('./connect');
const createPlugin = require('./createPlugin');
const createReducer = require('./createReducer');
const createStore = require('./createStore');
+const composeReducer = require('./composeReducer');
const bootstrap = require('./bootstrap');
const renderWithStore = require('./renderWithStore');
@@ -24,6 +26,7 @@ module.exports = {
createPlugin,
createReducer,
createStore,
+ composeReducer,
registerComponent,
// React Components
InjectedComponent,
@@ -34,6 +37,8 @@ module.exports = {
ImportLink,
ImportScript,
ImportCSS,
+ FlexLayout: Flex,
+ FlexBox: Box,
// Utilities
Shapes
};