1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.Component = undefined;
|
7 |
|
8 | var _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; };
|
9 |
|
10 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
11 |
|
12 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
13 |
|
14 | var _command = require('./command');
|
15 |
|
16 | var _entity = require('./entity');
|
17 |
|
18 | function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
|
19 |
|
20 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
21 |
|
22 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
23 |
|
24 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
25 |
|
26 | /**
|
27 | * A Component is a command that composes one or more components and functions
|
28 | * into a single function that is invokable like any command function.
|
29 | * An initial or default state can be given which is injected into the block
|
30 | * context object each call.
|
31 | */
|
32 | var componentCount = 0;
|
33 |
|
34 | var Component = exports.Component = function (_Command) {
|
35 | _inherits(Component, _Command);
|
36 |
|
37 | _createClass(Component, null, [{
|
38 | key: 'id',
|
39 | value: function id() {
|
40 | return ++componentCount;
|
41 | }
|
42 | }, {
|
43 | key: 'defaults',
|
44 | value: function defaults() {
|
45 | return {};
|
46 | }
|
47 | }, {
|
48 | key: 'compose',
|
49 | value: function compose() {
|
50 | for (var _len = arguments.length, components = Array(_len), _key = 0; _key < _len; _key++) {
|
51 | components[_key] = arguments[_key];
|
52 | }
|
53 |
|
54 | if (Array.isArray(components[0])) {
|
55 | components = components[0];
|
56 | }
|
57 | components = Array.isArray(components) ? components : [];
|
58 | return component;
|
59 | function component(state, block) {
|
60 | if ('function' == typeof state) {
|
61 | block = state;state = {};
|
62 | }
|
63 | state = 'object' == (typeof state === 'undefined' ? 'undefined' : _typeof(state)) && state ? state : {};
|
64 | block = 'function' == typeof block ? block : function () {};
|
65 | if (0 == components.length) {
|
66 | return block(state);
|
67 | } else {
|
68 | walk(components.slice());
|
69 | }
|
70 | function walk(list) {
|
71 | var component = list.shift();
|
72 | if ('function' == typeof component) {
|
73 | if (list.length) {
|
74 | component(state, function () {
|
75 | return walk(list);
|
76 | });
|
77 | } else if (block != component) {
|
78 | component(state, block);
|
79 | }
|
80 | } else {
|
81 | walk(list);
|
82 | }
|
83 | }
|
84 | }
|
85 | }
|
86 | }]);
|
87 |
|
88 | function Component(ctx) {
|
89 | for (var _len2 = arguments.length, children = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
|
90 | children[_key2 - 2] = arguments[_key2];
|
91 | }
|
92 |
|
93 | var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
94 |
|
95 | _classCallCheck(this, Component);
|
96 |
|
97 | if ('function' == typeof initialState) {
|
98 | children.unshift(initialState);
|
99 | initialState = {};
|
100 | } else if (Array.isArray(initialState)) {
|
101 | children = initialState;
|
102 | initialState = {};
|
103 | }
|
104 | children = Component.compose(children);
|
105 | var entity = new _entity.Entity(ctx, initialState);
|
106 | return _possibleConstructorReturn(this, (Component.__proto__ || Object.getPrototypeOf(Component)).call(this, function (state, block) {
|
107 | if ('function' == typeof state) {
|
108 | block = state;state = {};
|
109 | }
|
110 | state = 'object' == (typeof state === 'undefined' ? 'undefined' : _typeof(state)) && state ? state : {};
|
111 | block = 'function' == typeof block ? block : function () {};
|
112 | if (Array.isArray(state)) {
|
113 | state = state.map(function (s) {
|
114 | return _extends({}, initialState, s);
|
115 | });
|
116 | } else {
|
117 | state = _extends({}, initialState, state);
|
118 | }
|
119 | entity(state, function (_ref, args) {
|
120 | _objectDestructuringEmpty(_ref);
|
121 |
|
122 | children(args, block);
|
123 | });
|
124 | }));
|
125 | }
|
126 |
|
127 | return Component;
|
128 | }(_command.Command);
|
129 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21wb25lbnRDb3VudCIsIkNvbXBvbmVudCIsImNvbXBvbmVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJjb21wb25lbnQiLCJzdGF0ZSIsImJsb2NrIiwibGVuZ3RoIiwid2FsayIsInNsaWNlIiwibGlzdCIsInNoaWZ0IiwiY3R4IiwiY2hpbGRyZW4iLCJpbml0aWFsU3RhdGUiLCJ1bnNoaWZ0IiwiY29tcG9zZSIsImVudGl0eSIsIm1hcCIsInMiLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQTs7Ozs7O0FBTUEsSUFBSUEsaUJBQWlCLENBQXJCOztJQUNhQyxTLFdBQUFBLFM7Ozs7O3lCQUNDO0FBQUUsYUFBTyxFQUFHRCxjQUFWO0FBQTBCOzs7K0JBQ3RCO0FBQUUsYUFBTyxFQUFQO0FBQVk7Ozs4QkFDRjtBQUFBLHdDQUFaRSxVQUFZO0FBQVpBLGtCQUFZO0FBQUE7O0FBQzVCLFVBQUlDLE1BQU1DLE9BQU4sQ0FBY0YsV0FBVyxDQUFYLENBQWQsQ0FBSixFQUFrQztBQUFFQSxxQkFBYUEsV0FBVyxDQUFYLENBQWI7QUFBNEI7QUFDaEVBLG1CQUFhQyxNQUFNQyxPQUFOLENBQWNGLFVBQWQsSUFBNEJBLFVBQTVCLEdBQXlDLEVBQXREO0FBQ0EsYUFBT0csU0FBUDtBQUNBLGVBQVNBLFNBQVQsQ0FBbUJDLEtBQW5CLEVBQTBCQyxLQUExQixFQUFpQztBQUMvQixZQUFJLGNBQWMsT0FBT0QsS0FBekIsRUFBZ0M7QUFBRUMsa0JBQVFELEtBQVIsQ0FBZUEsUUFBUSxFQUFSO0FBQVk7QUFDN0RBLGdCQUFRLG9CQUFtQkEsS0FBbkIseUNBQW1CQSxLQUFuQixNQUE0QkEsS0FBNUIsR0FBb0NBLEtBQXBDLEdBQTRDLEVBQXBEO0FBQ0FDLGdCQUFRLGNBQWMsT0FBT0EsS0FBckIsR0FBNkJBLEtBQTdCLEdBQXFDLFlBQVcsQ0FBRSxDQUExRDtBQUNBLFlBQUksS0FBS0wsV0FBV00sTUFBcEIsRUFBNEI7QUFBRSxpQkFBT0QsTUFBTUQsS0FBTixDQUFQO0FBQXFCLFNBQW5ELE1BQ0s7QUFBRUcsZUFBS1AsV0FBV1EsS0FBWCxFQUFMO0FBQTBCO0FBQ2pDLGlCQUFTRCxJQUFULENBQWNFLElBQWQsRUFBb0I7QUFDbEIsY0FBTU4sWUFBWU0sS0FBS0MsS0FBTCxFQUFsQjtBQUNBLGNBQUksY0FBYyxPQUFPUCxTQUF6QixFQUFvQztBQUNsQyxnQkFBSU0sS0FBS0gsTUFBVCxFQUFpQjtBQUFFSCx3QkFBVUMsS0FBVixFQUFpQjtBQUFBLHVCQUFNRyxLQUFLRSxJQUFMLENBQU47QUFBQSxlQUFqQjtBQUFvQyxhQUF2RCxNQUNLLElBQUlKLFNBQVNGLFNBQWIsRUFBd0I7QUFBRUEsd0JBQVVDLEtBQVYsRUFBaUJDLEtBQWpCO0FBQXlCO0FBQ3pELFdBSEQsTUFHTztBQUFFRSxpQkFBS0UsSUFBTDtBQUFZO0FBQ3RCO0FBQ0Y7QUFDRjs7O0FBRUQscUJBQVlFLEdBQVosRUFBaUQ7QUFBQSx1Q0FBVkMsUUFBVTtBQUFWQSxjQUFVO0FBQUE7O0FBQUEsUUFBaENDLFlBQWdDLHVFQUFqQixFQUFpQjs7QUFBQTs7QUFDL0MsUUFBSSxjQUFjLE9BQU9BLFlBQXpCLEVBQXVDO0FBQ3JDRCxlQUFTRSxPQUFULENBQWlCRCxZQUFqQjtBQUNBQSxxQkFBZSxFQUFmO0FBQ0QsS0FIRCxNQUdPLElBQUlaLE1BQU1DLE9BQU4sQ0FBY1csWUFBZCxDQUFKLEVBQWlDO0FBQ3RDRCxpQkFBV0MsWUFBWDtBQUNBQSxxQkFBZSxFQUFmO0FBQ0Q7QUFDREQsZUFBV2IsVUFBVWdCLE9BQVYsQ0FBa0JILFFBQWxCLENBQVg7QUFDQSxRQUFNSSxTQUFTLG1CQUFXTCxHQUFYLEVBQWdCRSxZQUFoQixDQUFmO0FBVCtDLGlIQVV6QyxVQUFDVCxLQUFELEVBQVFDLEtBQVIsRUFBa0I7QUFDdEIsVUFBSSxjQUFjLE9BQU9ELEtBQXpCLEVBQWdDO0FBQUVDLGdCQUFRRCxLQUFSLENBQWVBLFFBQVEsRUFBUjtBQUFZO0FBQzdEQSxjQUFRLG9CQUFtQkEsS0FBbkIseUNBQW1CQSxLQUFuQixNQUE0QkEsS0FBNUIsR0FBb0NBLEtBQXBDLEdBQTRDLEVBQXBEO0FBQ0FDLGNBQVEsY0FBYyxPQUFPQSxLQUFyQixHQUE2QkEsS0FBN0IsR0FBcUMsWUFBVyxDQUFFLENBQTFEO0FBQ0EsVUFBSUosTUFBTUMsT0FBTixDQUFjRSxLQUFkLENBQUosRUFBMEI7QUFDeEJBLGdCQUFRQSxNQUFNYSxHQUFOLENBQVUsVUFBQ0MsQ0FBRDtBQUFBLDhCQUFhTCxZQUFiLEVBQThCSyxDQUE5QjtBQUFBLFNBQVYsQ0FBUjtBQUNELE9BRkQsTUFFTztBQUNMZCw2QkFBYVMsWUFBYixFQUE4QlQsS0FBOUI7QUFDRDtBQUNEWSxhQUFPWixLQUFQLEVBQWMsZ0JBQUtlLElBQUwsRUFBYztBQUFBOztBQUMxQlAsaUJBQVNPLElBQVQsRUFBZWQsS0FBZjtBQUNELE9BRkQ7QUFHRCxLQXRCOEM7QUF1QmhEIiwiZmlsZSI6ImNvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmQnXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eSdcblxuLyoqXG4gKiBBIENvbXBvbmVudCBpcyBhIGNvbW1hbmQgdGhhdCBjb21wb3NlcyBvbmUgb3IgbW9yZSBjb21wb25lbnRzIGFuZCBmdW5jdGlvbnNcbiAqIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gIHRoYXQgaXMgaW52b2thYmxlIGxpa2UgYW55IGNvbW1hbmQgZnVuY3Rpb24uXG4gKiBBbiBpbml0aWFsIG9yIGRlZmF1bHQgc3RhdGUgY2FuIGJlIGdpdmVuIHdoaWNoIGlzIGluamVjdGVkIGludG8gdGhlIGJsb2NrXG4gKiBjb250ZXh0IG9iamVjdCBlYWNoIGNhbGwuXG4gKi9cbmxldCBjb21wb25lbnRDb3VudCA9IDBcbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIGlkKCkgeyByZXR1cm4gKysgY29tcG9uZW50Q291bnQgfVxuICBzdGF0aWMgZGVmYXVsdHMoKSB7IHJldHVybiB7IH0gfVxuICBzdGF0aWMgY29tcG9zZSguLi5jb21wb25lbnRzKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50c1swXSkpIHsgY29tcG9uZW50cyA9IGNvbXBvbmVudHNbMF0gfVxuICAgIGNvbXBvbmVudHMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudHMpID8gY29tcG9uZW50cyA6IFtdXG4gICAgcmV0dXJuIGNvbXBvbmVudFxuICAgIGZ1bmN0aW9uIGNvbXBvbmVudChzdGF0ZSwgYmxvY2spIHtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBzdGF0ZSkgeyBibG9jayA9IHN0YXRlOyBzdGF0ZSA9IHt9IH1cbiAgICAgIHN0YXRlID0gJ29iamVjdCcgPT0gdHlwZW9mIHN0YXRlICYmIHN0YXRlID8gc3RhdGUgOiB7fVxuICAgICAgYmxvY2sgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBibG9jayA/IGJsb2NrIDogZnVuY3Rpb24oKSB7fVxuICAgICAgaWYgKDAgPT0gY29tcG9uZW50cy5sZW5ndGgpIHsgcmV0dXJuIGJsb2NrKHN0YXRlKSB9XG4gICAgICBlbHNlIHsgd2Fsayhjb21wb25lbnRzLnNsaWNlKCkpIH1cbiAgICAgIGZ1bmN0aW9uIHdhbGsobGlzdCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBsaXN0LnNoaWZ0KClcbiAgICAgICAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGNvbXBvbmVudCkge1xuICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCkgeyBjb21wb25lbnQoc3RhdGUsICgpID0+IHdhbGsobGlzdCkpIH1cbiAgICAgICAgICBlbHNlIGlmIChibG9jayAhPSBjb21wb25lbnQpIHsgY29tcG9uZW50KHN0YXRlLCBibG9jaykgfVxuICAgICAgICB9IGVsc2UgeyB3YWxrKGxpc3QpIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjdHgsIGluaXRpYWxTdGF0ZSA9IHt9LCAuLi5jaGlsZHJlbikge1xuICAgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBpbml0aWFsU3RhdGUpIHtcbiAgICAgIGNoaWxkcmVuLnVuc2hpZnQoaW5pdGlhbFN0YXRlKVxuICAgICAgaW5pdGlhbFN0YXRlID0ge31cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkge1xuICAgICAgY2hpbGRyZW4gPSBpbml0aWFsU3RhdGVcbiAgICAgIGluaXRpYWxTdGF0ZSA9IHt9XG4gICAgfVxuICAgIGNoaWxkcmVuID0gQ29tcG9uZW50LmNvbXBvc2UoY2hpbGRyZW4pXG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShjdHgsIGluaXRpYWxTdGF0ZSlcbiAgICBzdXBlcigoc3RhdGUsIGJsb2NrKSA9PiB7XG4gICAgICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2Ygc3RhdGUpIHsgYmxvY2sgPSBzdGF0ZTsgc3RhdGUgPSB7fSB9XG4gICAgICBzdGF0ZSA9ICdvYmplY3QnID09IHR5cGVvZiBzdGF0ZSAmJiBzdGF0ZSA/IHN0YXRlIDoge31cbiAgICAgIGJsb2NrID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgYmxvY2sgPyBibG9jayA6IGZ1bmN0aW9uKCkge31cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0YXRlKSkge1xuICAgICAgICBzdGF0ZSA9IHN0YXRlLm1hcCgocykgPT4gKHsgLi4uaW5pdGlhbFN0YXRlLCAuLi5zIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUgPSB7IC4uLmluaXRpYWxTdGF0ZSwgLi4uc3RhdGUgfVxuICAgICAgfVxuICAgICAgZW50aXR5KHN0YXRlLCAoe30sIGFyZ3MpID0+IHtcbiAgICAgICAgY2hpbGRyZW4oYXJncywgYmxvY2spXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbiJdfQ== |
\ | No newline at end of file |