yuxuannnn_utils
Version:
52 lines (51 loc) • 2.15 kB
JavaScript
;
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _DOMEventBus_eventMap;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DOMEventBus = void 0;
class DOMEventBus {
constructor() {
_DOMEventBus_eventMap.set(this, new Map());
}
/**
*
* @param dom
* @param originEventType 注册的原生事件
* @param eventType 内部事件队列对应的key
*/
addEventListener(dom, originEventType, eventType) {
const that = this;
dom.addEventListener(originEventType, function (e) {
const eventSet = __classPrivateFieldGet(that, _DOMEventBus_eventMap, "f").get(eventType);
if (!eventSet)
return;
for (const event of eventSet) {
event.call(this, e);
}
});
}
addEvent(eventType, handler) {
let eventSet = __classPrivateFieldGet(this, _DOMEventBus_eventMap, "f").get(eventType);
if (eventSet) {
eventSet.add(handler);
}
else {
eventSet = new Set();
eventSet.add(handler);
__classPrivateFieldGet(this, _DOMEventBus_eventMap, "f").set(eventType, eventSet);
}
}
removeEvent(eventType, handler) {
// 同一类型的事件只需要注册一次就可以,利用事件队列添加和移除模拟事件的注册和销毁
const eventSet = __classPrivateFieldGet(this, _DOMEventBus_eventMap, "f").get(eventType);
if (!eventSet)
return;
eventSet.delete(handler);
}
}
exports.DOMEventBus = DOMEventBus;
_DOMEventBus_eventMap = new WeakMap();