@zuze/modifiable-effects
Version:
Simple side effects helper for @zuze/modifiable
37 lines (29 loc) • 929 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var modifiable = require('@zuze/modifiable');
var effect = function effect(fn) {
return function () {
return fn.apply(void 0, arguments), modifiable.identity;
};
};
var index = (function (api) {
var map = new Map();
for (var _len = arguments.length, effects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
effects[_key - 1] = arguments[_key];
}
effects.forEach(function (e) {
var arr = Array.isArray(e) ? e : [e];
map.set(e, api.modify(effect(arr.shift()), arr));
});
return function () {
for (var _len2 = arguments.length, toRemove = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
toRemove[_key2] = arguments[_key2];
}
toRemove.forEach(function (r) {
var fn = map.get(r);
fn && fn();
});
};
});
exports.default = index;
exports.effect = effect;