shineout
Version:
Shein 前端组件库
49 lines (38 loc) • 1.31 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var Notification =
/*#__PURE__*/
function () {
function Notification() {
(0, _defineProperty2.default)(this, "$events", void 0);
this.$events = {};
}
var _proto = Notification.prototype;
_proto.dispatch = function dispatch(name) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var event = this.$events[name];
if (!event) return;
event.forEach(function (fn) {
return fn.apply(void 0, args);
});
};
_proto.subscribe = function subscribe(name, fn) {
if (!this.$events[name]) this.$events[name] = [];
var events = this.$events[name];
if (events.includes(fn)) return;
events.push(fn);
};
_proto.unsubscribe = function unsubscribe(name, fn) {
if (!this.$events[name]) return;
if (fn) this.$events[name] = this.$events[name].filter(function (e) {
return e !== fn;
});else delete this.$events[name];
};
return Notification;
}();
exports.default = Notification;