UNPKG

@raulpesilva/re-state

Version:

easy way to create a shared state to the entire application

55 lines (39 loc) 1.46 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; exports.__esModule = true; exports.Observer = void 0; var _createForOfIteratorHelperLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelperLoose")); 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 = (0, _createForOfIteratorHelperLoose2["default"])(this._listeners.get(key)), _step; !(_step = _iterator()).done;) { var listener = _step.value; listener(); } } }; return Observer; }(); exports.Observer = Observer;