wetrade-design
Version:
一款多语言支持Vue3的UI框架
63 lines (62 loc) • 2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var GraphEvent = /*#__PURE__*/function () {
function GraphEvent() {
(0, _classCallCheck2.default)(this, GraphEvent);
this.listeners = {};
}
(0, _createClass2.default)(GraphEvent, [{
key: "add",
value: function add(type, callback) {
if (!(type in this.listeners)) {
this.listeners[type] = [];
}
this.listeners[type].push(callback);
}
}, {
key: "remove",
value: function remove(type, callback) {
if (!(type in this.listeners)) {
return;
}
var stack = this.listeners[type];
for (var i = 0, l = stack.length; i < l; i++) {
if (stack[i] === callback) {
stack.splice(i, 1);
return this.remove(type, callback);
}
}
}
}, {
key: "dispatch",
value: function dispatch(event) {
var _this = this;
var breakOff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
if (!(event.type in this.listeners)) {
return;
}
var stack = this.listeners[event.type];
event.target = this;
if (breakOff) {
stack.some(function (fun, idx) {
var result = fun.call(_this, event);
if (result) stack.unshift.apply(stack, (0, _toConsumableArray2.default)(stack.splice(idx, 1)));
return result;
});
} else {
stack.forEach(function (fun) {
return fun.call(_this, event);
});
}
}
}]);
return GraphEvent;
}();
exports.default = GraphEvent;