-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaddons.js
36 lines (32 loc) · 1006 Bytes
/
addons.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.observeAll = observeAll;
exports.reducers = reducers;
function copy(source, target) {
return Object.keys(target).reduce(function (obj, key) {
obj[key] = target[key];
return obj;
}, source);
}
function observeAll() {
for (var _len = arguments.length, manyActions = Array(_len), _key = 0; _key < _len; _key++) {
manyActions[_key] = arguments[_key];
}
return manyActions.reduce(function (signals, actions) {
return Object.keys(actions).reduce(function (obj, action) {
obj[action] = actions[action];
return obj;
}, {});
}, {});
}
function reducers(listeners) {
return function (context, state, signals) {
return Object.keys(signals).filter(function (x) {
return signals[x] != null;
}).reduce(function (nextState, signal) {
return listeners[signal] ? copy(state, listeners[signal](context, nextState, signals[signal])) : nextState;
}, state);
};
}