UNPKG

@zuze/modifiable-effects

Version:

Simple side effects helper for @zuze/modifiable

21 lines (17 loc) 456 B
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 };