1 | 'use strict';
|
2 |
|
3 | var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
|
4 |
|
5 | var _redux = require('redux');
|
6 |
|
7 | var _reduxThunk = require('redux-thunk');
|
8 |
|
9 | var _reduxThunk2 = _interopRequireDefault(_reduxThunk);
|
10 |
|
11 | var _diff = require('virtual-dom/diff');
|
12 |
|
13 | var _diff2 = _interopRequireDefault(_diff);
|
14 |
|
15 | var _patch = require('virtual-dom/patch');
|
16 |
|
17 | var _patch2 = _interopRequireDefault(_patch);
|
18 |
|
19 | var _createElement = require('virtual-dom/create-element');
|
20 |
|
21 | var _createElement2 = _interopRequireDefault(_createElement);
|
22 |
|
23 | var _domDelegator = require('dom-delegator');
|
24 |
|
25 | var _domDelegator2 = _interopRequireDefault(_domDelegator);
|
26 |
|
27 | var _Map = require('./Map');
|
28 |
|
29 | var _Map2 = _interopRequireDefault(_Map);
|
30 |
|
31 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
32 |
|
33 | var createStoreWithMiddleware = (0, _redux.applyMiddleware)(_reduxThunk2.default)(_redux.createStore);
|
34 |
|
35 | exports.start = function (_ref) {
|
36 | var init = _ref.init;
|
37 | var update = _ref.update;
|
38 | var view = _ref.view;
|
39 |
|
40 | var delegator = (0, _domDelegator2.default)();
|
41 |
|
42 | var _handleInit = handleInit(init());
|
43 |
|
44 | var _handleInit2 = _slicedToArray(_handleInit, 2);
|
45 |
|
46 | var initialState = _handleInit2[0];
|
47 | var initialAction = _handleInit2[1];
|
48 |
|
49 | var store = createStoreWithMiddleware(function () {
|
50 | var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];
|
51 | var action = arguments[1];
|
52 |
|
53 | var newState = update(state, action);
|
54 |
|
55 | return typeof newState === 'undefined' ? state : newState;
|
56 | });
|
57 |
|
58 | var dispatch = function dispatch(action) {
|
59 | return function () {
|
60 | store.dispatch(action);
|
61 | };
|
62 | };
|
63 |
|
64 | if (initialAction) {
|
65 | store.dispatch(initialAction);
|
66 | }
|
67 |
|
68 | var tree = view(initialState, dispatch);
|
69 | var rootNode = (0, _createElement2.default)(tree);
|
70 |
|
71 | store.subscribe(function () {
|
72 | var newTree = view(store.getState(), dispatch);
|
73 | var patches = (0, _diff2.default)(tree, newTree);
|
74 |
|
75 | (0, _patch2.default)(rootNode, patches);
|
76 |
|
77 | tree = newTree;
|
78 | });
|
79 |
|
80 | return rootNode;
|
81 | };
|
82 |
|
83 | function handleInit(init) {
|
84 | if (Array.isArray(init)) {
|
85 |
|
86 | return [new _Map2.default(init[0]), init[1]];
|
87 | } else {
|
88 |
|
89 | return [new _Map2.default(init)];
|
90 | }
|
91 | } |
\ | No newline at end of file |