@visactor/vchart
Version:
charts lib based @visactor/VGrammar
55 lines (50 loc) • 1.89 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.Bubble = void 0;
const event_1 = require("../constant/event");
class Bubble {
constructor() {
this._map = new Map, this._levelNodes = new Map, this._levelNodes.set(event_1.Event_Bubble_Level.vchart, []),
this._levelNodes.set(event_1.Event_Bubble_Level.chart, []), this._levelNodes.set(event_1.Event_Bubble_Level.model, []),
this._levelNodes.set(event_1.Event_Bubble_Level.mark, []);
}
addHandler(handler, level) {
var _a;
const node = {
level: level,
handler: handler
};
return null === (_a = this._levelNodes.get(level)) || void 0 === _a || _a.push(node),
this._map.set(handler.callback, node), this;
}
removeHandler(handler) {
const node = this._map.get(handler.callback);
if (!node) return this;
this._map.delete(handler.callback);
const nodes = this._levelNodes.get(node.level), index = null == nodes ? void 0 : nodes.findIndex((n => n.handler.callback === handler.callback));
return void 0 !== index && index >= 0 && (null == nodes || nodes.splice(index, 1)),
this;
}
preventHandler(handler) {
return handler && (handler.prevented = !0), this;
}
allowHandler(handler) {
return handler && (handler.prevented = !1), this;
}
getHandlers(level) {
var _a;
return (null === (_a = this._levelNodes.get(level)) || void 0 === _a ? void 0 : _a.map((node => node.handler))) || [];
}
getAllHandlers() {
return Array.from(this._map.values()).map((node => node.handler)) || [];
}
getCount() {
return this._map.size;
}
release() {
this._map.clear(), this._levelNodes.clear();
}
}
exports.Bubble = Bubble;
//# sourceMappingURL=bubble.js.map