UNPKG

3.3 kBJavaScriptView Raw
1'use strict';
2
3var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
4
5var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; // eslint-disable-line no-unused-vars
6
7var _element = require('vdux/element');
8
9var _element2 = _interopRequireDefault(_element);
10
11var _reducer = require('./reducer');
12
13var _reducer2 = _interopRequireDefault(_reducer);
14
15var _dom = require('vdux/dom');
16
17var _dom2 = _interopRequireDefault(_dom);
18
19var _app = require('./app');
20
21var _app2 = _interopRequireDefault(_app);
22
23var _reduce = require('@f/reduce');
24
25var _reduce2 = _interopRequireDefault(_reduce);
26
27var _domready = require('domready');
28
29var _domready2 = _interopRequireDefault(_domready);
30
31var _reduxFlo = require('redux-flo');
32
33var _reduxFlo2 = _interopRequireDefault(_reduxFlo);
34
35var _handleSubmit = require('./middleware/handleSubmit');
36
37var _handleSubmit2 = _interopRequireDefault(_handleSubmit);
38
39var _actions = require('./actions');
40
41var _isArray = require('@f/is-array');
42
43var _isArray2 = _interopRequireDefault(_isArray);
44
45function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
47function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
48
49var defaultView = function defaultView(output) {
50 if ((typeof output === 'undefined' ? 'undefined' : _typeof(output)) !== 'object' || output.props) {
51 return output;
52 } else if ((0, _isArray2.default)(output)) {
53 output.join('\n');
54 } else {
55 return (0, _reduce2.default)(function (arr, item, key) {
56 arr.push(key + ': ' + item);
57 return arr;
58 }, [], output).join('\n');
59 }
60};
61
62var defaultOpts = {
63 view: defaultView,
64 initialState: {},
65 middleware: [],
66 welcome: '',
67 title: ''
68};
69
70var cycleShell = function cycleShell(userUpdate) {
71 var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
72
73 var _defaultOpts$opts = _extends({}, defaultOpts, opts);
74
75 var view = _defaultOpts$opts.view;
76 var middleware = _defaultOpts$opts.middleware;
77 var welcome = _defaultOpts$opts.welcome;
78 var title = _defaultOpts$opts.title;
79
80
81 var initState = { welcome: welcome, log: {}, user: { title: title } };
82
83 var _vdux = (0, _dom2.default)({
84 reducer: _reducer2.default,
85 initialState: initState,
86 middleware: [(0, _reduxFlo2.default)(), (0, _handleSubmit2.default)(userUpdate)].concat(_toConsumableArray(middleware))
87 });
88
89 var subscribe = _vdux.subscribe;
90 var render = _vdux.render;
91
92 (0, _domready2.default)(function () {
93 subscribe(function (state) {
94 render((0, _element2.default)(_app2.default, { log: state.log, view: view, user: state.user, welcome: state.welcome }));
95 });
96 });
97 return function (fn) {
98 _handleSubmit.countEmitter.on('count', fn);
99 };
100};
101
102module.exports = cycleShell;
103cycleShell.out = _actions.out;
\No newline at end of file