@zuze/modifiable-effects
Version:
Simple side effects helper for @zuze/modifiable
21 lines (17 loc) • 456 B
JavaScript
import { identity } from '@zuze/modifiable';
const effect = fn => (...args) => (fn(...args), identity);
var index = (api, ...effects) => {
const map = new Map();
effects.forEach(e => {
const arr = Array.isArray(e) ? e : [e];
map.set(e, api.modify(effect(arr.shift()), arr));
});
return (...toRemove) => {
toRemove.forEach(r => {
const fn = map.get(r);
fn && fn();
});
};
};
export default index;
export { effect };