UNPKG

react-native-web-headroom

Version:
49 lines (40 loc) 1.25 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.brcast = factory()); }(this, (function () { function createBroadcast (initialState) { var listeners = {}; var id = 1; var _state = initialState; function getState () { return _state } function setState (state) { _state = state; var keys = Object.keys(listeners); var i = 0; var len = keys.length; for (; i < len; i++) { // if a listener gets unsubscribed during setState we just skip it if (listeners[keys[i]]) { listeners[keys[i]](state); } } } // subscribe to changes and return the subscriptionId function subscribe (listener) { if (typeof listener !== 'function') { throw new Error('listener must be a function.') } var currentId = id; listeners[currentId] = listener; id += 1; return currentId } // remove subscription by removing the listener function function unsubscribe (id) { listeners[id] = undefined; } return { getState: getState, setState: setState, subscribe: subscribe, unsubscribe: unsubscribe } } return createBroadcast; })));