UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

51 lines (47 loc) 1.2 kB
import {array_from_set} from './utilities' let hooks = {} let boxes = {} let box_callbacks = {} let idGenerator = 0 const event_system = { register(hook_name, callback) { if (!hooks[hook_name]) { hooks[hook_name] = {} } let id = idGenerator++ hooks[hook_name][id] = callback return () => { hooks[hook_name][id] = false } }, trigger(hook_name) { let triggered_hooks = hooks[hook_name] if (triggered_hooks) { array_from_set(triggered_hooks).forEach((id) => triggered_hooks[id]()) } }, cancel_all(hook_name) { hooks[hook_name] = {} }, post(hook_name, content) { boxes[hook_name] = content let triggered_hooks = box_callbacks[hook_name] if (triggered_hooks) { array_from_set(triggered_hooks).forEach((id) => triggered_hooks[id](content)) } }, retrieve(hook_name, callback) { if (!box_callbacks[hook_name]) { box_callbacks[hook_name] = {} } let id = idGenerator++ box_callbacks[hook_name][id] = callback if (boxes[hook_name] != null) { callback(boxes[hook_name]) } return () => { box_callbacks[hook_name][id] = false } }, } export default event_system