UNPKG

4.01 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11exports.default = client;
12
13require('babel-polyfill');
14
15var _react = require('react');
16
17var _react2 = _interopRequireDefault(_react);
18
19var _reactDom = require('react-dom');
20
21var _reactDom2 = _interopRequireDefault(_reactDom);
22
23var _reactRouter = require('react-router');
24
25var _createBrowserHistory = require('history/lib/createBrowserHistory');
26
27var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
28
29var _useStandardScroll = require('scroll-behavior/lib/useStandardScroll');
30
31var _useStandardScroll2 = _interopRequireDefault(_useStandardScroll);
32
33var _create = require('./create');
34
35var _create2 = _interopRequireDefault(_create);
36
37var _apiclient = require('./apiclient');
38
39var _apiclient2 = _interopRequireDefault(_apiclient);
40
41var _reactRedux = require('react-redux');
42
43var _reduxConnect = require('redux-connect');
44
45var _fetcher = require('./fetcher');
46
47var _fetcher2 = _interopRequireDefault(_fetcher);
48
49var _App = require('./App');
50
51var _App2 = _interopRequireDefault(_App);
52
53var _cookieDough = require('cookie-dough');
54
55var _cookieDough2 = _interopRequireDefault(_cookieDough);
56
57var _createRouterOpts = require('./createRouterOpts');
58
59var _createRouterOpts2 = _interopRequireDefault(_createRouterOpts);
60
61function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
62
63/**
64 * THIS IS THE ENTRY POINT FOR THE CLIENT, JUST LIKE server.js IS THE ENTRY POINT FOR THE SERVER.
65 */
66function client(_ref) {
67 var urls = _ref.urls,
68 reducers = _ref.reducers,
69 routes = _ref.routes,
70 _ref$dest = _ref.dest,
71 dest = _ref$dest === undefined ? document.getElementById('content') : _ref$dest,
72 _ref$isDevelopment = _ref.isDevelopment,
73 isDevelopment = _ref$isDevelopment === undefined ? false : _ref$isDevelopment;
74
75 var createScrollHistory = (0, _useStandardScroll2.default)(_createBrowserHistory2.default);
76
77 var history = (0, _reactRouter.useRouterHistory)(createScrollHistory)((0, _createRouterOpts2.default)({
78 shouldUpdateScroll: function shouldUpdateScroll(oldLocation, newLocation) {
79 return (
80 // Don't scroll if the pathname is the same
81 oldLocation ? newLocation.pathname !== oldLocation.pathname : newLocation.pathname !== location.pathname
82 );
83 }
84 }));
85
86 var store = (0, _create2.default)({ reducers: reducers, history: history, data: window.__data, isDevelopment: isDevelopment });
87 var fetcher = new _fetcher2.default({
88 dispatch: store.dispatch,
89 client: new _apiclient2.default(),
90 urls: urls,
91 serialized: window.__fetcher,
92 type: 'client'
93 });
94 var cookie = (0, _cookieDough2.default)();
95
96 var component = _react2.default.createElement(
97 _reactRouter.Router,
98 {
99 render: function render(props) {
100 return _react2.default.createElement(_reduxConnect.ReduxAsyncConnect, (0, _extends3.default)({}, props, { cookie: cookie, helpers: { fetcher: fetcher }, filter: function filter(item) {
101 return !item.deferred;
102 } }));
103 },
104 history: history
105 },
106 _react2.default.createElement(
107 _reactRouter.Route,
108 {
109 component: _App2.default,
110 urls: urls,
111 cookie: cookie,
112 fetcher: fetcher
113 },
114 routes(store, cookie)
115 )
116 );
117
118 _reactDom2.default.render(_react2.default.createElement(
119 _reactRedux.Provider,
120 { store: store, key: 'provider' },
121 component
122 ), dest);
123
124 if (process.env.NODE_ENV !== 'production') {
125 window.React = _react2.default; // enable debugger
126 if (!dest || !dest.firstChild || !dest.firstChild.attributes || !dest.firstChild.attributes['data-react-checksum']) {
127 console.error('Server-side React render was discarded. Make sure that your initial render does not contain any client-side code.');
128 }
129 }
130}
131module.exports = exports['default'];
\No newline at end of file