UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

112 lines 3.77 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Events = void 0; var util_1 = require("../util"); var Events = /** @class */ (function () { function Events() { this.listeners = {}; } Events.prototype.on = function (name, handler, context) { if (handler == null) { return this; } if (!this.listeners[name]) { this.listeners[name] = []; } var cache = this.listeners[name]; cache.push(handler, context); return this; }; Events.prototype.once = function (name, handler, context) { var _this = this; var cb = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } _this.off(name, cb); return Private.call([handler, context], args); }; return this.on(name, cb, this); }; Events.prototype.off = function (name, handler, context) { // remove all events. if (!(name || handler || context)) { this.listeners = {}; return this; } var listeners = this.listeners; var names = name ? [name] : Object.keys(listeners); names.forEach(function (n) { var cache = listeners[n]; if (!cache) { return; } // remove all events with specified name. if (!(handler || context)) { delete listeners[n]; return; } for (var i = cache.length - 2; i >= 0; i -= 2) { if (!((handler && cache[i] !== handler) || (context && cache[i + 1] !== context))) { cache.splice(i, 2); } } }); return this; }; Events.prototype.trigger = function (name) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var returned = true; if (name !== '*') { var list_1 = this.listeners[name]; if (list_1 != null) { returned = Private.call(__spreadArrays(list_1), args); } } var list = this.listeners['*']; if (list != null) { return util_1.FunctionExt.toAsyncBoolean([ returned, Private.call(__spreadArrays(list), __spreadArrays([name], args)), ]); } return returned; }; Events.prototype.emit = function (name) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return this.trigger.apply(this, __spreadArrays([name], args)); }; return Events; }()); exports.Events = Events; var Private; (function (Private) { function call(list, args) { var results = []; for (var i = 0; i < list.length; i += 2) { var handler = list[i]; var context = list[i + 1]; var params = Array.isArray(args) ? args : [args]; var ret = util_1.FunctionExt.apply(handler, context, params); results.push(ret); } return util_1.FunctionExt.toAsyncBoolean(results); } Private.call = call; })(Private || (Private = {})); //# sourceMappingURL=events.js.map