UNPKG

@applicaster/zapp-react-dom-app

Version:

Zapp App Component for Applicaster's Quick Brick React Native App

61 lines (46 loc) 1.38 kB
const _DeviceEventEmitter = {}; export const DeviceEventEmitter = (function () { let listeners = {}; function getListeners(eventName) { if (!eventName) { return listeners; } return listeners[eventName] || []; } function addListener(eventName, listener) { const currentListeners = getListeners(eventName); listeners[eventName] = [listener, ...currentListeners]; return { remove() { const listenersForEvent = getListeners(eventName); listeners[eventName] = listenersForEvent.filter( (_listener) => _listener !== listener ); }, }; } function removeListener(eventName, listener) { const listenersForEvent = getListeners(eventName); listeners[eventName] = listenersForEvent.filter( (_listener) => _listener !== listener ); } function emitEvent(eventName, payload) { const eventListeners = getListeners(eventName); eventListeners.forEach((eventListener) => { eventListener(payload); }); } const deviceEventEmitterInstance = { addListener, removeListener, emitEvent, }; if (process.env.NODE_ENV === "test") { deviceEventEmitterInstance.getListeners = getListeners; deviceEventEmitterInstance.reset = function () { listeners = {}; }; } return deviceEventEmitterInstance; })(_DeviceEventEmitter);