sam-pattern
Version:
SAM Pattern library
29 lines (24 loc) • 574 B
JavaScript
import { E, A } from './sam-utils'
const handlers = {}
export default {
on: (event, handler) => {
if (!E(handlers[event])) {
handlers[event] = []
}
handlers[event].push(handler)
},
off: (event, handler) => {
A(handlers[event]).forEach((h, i) => {
if (h === handler) {
handlers[event].splice(i, 1)
}
})
},
emit: (events = [], data) => {
if (Array.isArray(events)) {
events.forEach(event => A(handlers[event]).forEach(f => f(data)))
} else {
A(handlers[events]).forEach(f => f(data))
}
}
}