UNPKG

@raulpesilva/re-state

Version:

easy way to create a shared state to the entire application

45 lines (34 loc) 1.22 kB
import _createForOfIteratorHelperLoose from "@babel/runtime/helpers/esm/createForOfIteratorHelperLoose"; export var Observer = /*#__PURE__*/function () { function Observer() { this._listeners = new Map(); } var _proto = Observer.prototype; _proto.subscribe = function subscribe(key, listener) { var _this = this; if (this._listeners.has(key)) { var listeners = this._listeners.get(key); this._listeners.set(key, [].concat(listeners, [listener])); } if (!this._listeners.has(key)) { this._listeners.set(key, [listener]); } return function () { var listenersCopy = [].concat(_this._listeners.get(key)); var index = _this._listeners.get(key).indexOf(listener); if (index < 0) return; listenersCopy[index] = listenersCopy[listenersCopy.length - 1]; listenersCopy.length--; _this._listeners.set(key, listenersCopy); }; }; _proto.notify = function notify(key) { if (this._listeners.has(key)) { for (var _iterator = _createForOfIteratorHelperLoose(this._listeners.get(key)), _step; !(_step = _iterator()).done;) { var listener = _step.value; listener(); } } }; return Observer; }();