UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

60 lines (55 loc) 1.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _utilities = require('./utilities'); var hooks = {}; var boxes = {}; var box_callbacks = {}; var idGenerator = 0; var event_system = { register: function register(hook_name, callback) { if (!hooks[hook_name]) { hooks[hook_name] = {}; } var id = idGenerator++; hooks[hook_name][id] = callback; return function () { hooks[hook_name][id] = false; }; }, trigger: function trigger(hook_name) { var triggered_hooks = hooks[hook_name]; if (triggered_hooks) { (0, _utilities.array_from_set)(triggered_hooks).forEach(function (id) { return triggered_hooks[id](); }); } }, cancel_all: function cancel_all(hook_name) { hooks[hook_name] = {}; }, post: function post(hook_name, content) { boxes[hook_name] = content; var triggered_hooks = box_callbacks[hook_name]; if (triggered_hooks) { (0, _utilities.array_from_set)(triggered_hooks).forEach(function (id) { return triggered_hooks[id](content); }); } }, retrieve: function retrieve(hook_name, callback) { if (!box_callbacks[hook_name]) { box_callbacks[hook_name] = {}; } var id = idGenerator++; box_callbacks[hook_name][id] = callback; if (boxes[hook_name] != null) { callback(boxes[hook_name]); } return function () { box_callbacks[hook_name][id] = false; }; } }; exports.default = event_system;