Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 1x 6x 6x 6x 6x 6x 6x 1x |
import {
isFn,
check
} from './utils'
/**
* Creates a hook that runs on every emit and matches on an event
* type predicate
*/
const hook = (fn, opts = {}) => {
let predicate = opts.predicate || null
let match = check(predicate)
return (state, event) => {
let type = typeof event === 'string' || isFn(predicate)
? event
: event.type
return match(type)
? fn(state, event)
: state
}
}
export default hook
|