@raulpesilva/re-state
Version:
easy way to create a shared state to the entire application
55 lines (39 loc) • 1.46 kB
JavaScript
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;
;