cloudhub-electron-sdk
Version:
cloudhub-electron-sdk
106 lines (105 loc) • 4.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Event = exports.EventInner = exports.EventOuter = void 0;
const _eventListeners = Symbol('_eventListeners');
const _markListerners = Symbol('_markListerners');
class Event {
constructor() {
this[_eventListeners] = {};
this[_markListerners] = {};
}
on(eventType, listener, markid = "") {
if (!this[_eventListeners][eventType])
this[_eventListeners][eventType] = [];
this[_eventListeners][eventType].push({ listener, markid });
if (markid) {
if (!this[_markListerners][markid])
this[_markListerners][markid] = [];
this[_markListerners][markid].push({ eventType, listener });
}
}
off(eventType, listener) {
const evtarr = this[_eventListeners][eventType];
if (evtarr) {
for (let index = evtarr.length - 1; index >= 0; index--) {
if (!listener || evtarr[index].listener === listener) {
if (evtarr[index].markid) {
const markevtarr = this[_markListerners][evtarr[index].markid];
if (markevtarr) {
for (let index2 = markevtarr.length - 1; index2 >= 0; index2--) {
if (markevtarr[index2].listener === evtarr[index].listener) {
markevtarr.splice(index2, 1);
}
}
if (!this[_markListerners][evtarr[index].markid].indexgth) {
delete this[_markListerners][evtarr[index].markid];
}
}
}
evtarr.splice(index, 1);
}
}
if (!this[_eventListeners][eventType].length)
delete this[_eventListeners][eventType];
}
}
offAll(eventType) {
const evtarr = this[_eventListeners][eventType];
if (evtarr) {
for (let index = evtarr.length - 1; index >= 0; index--) {
if (evtarr[index].markid) {
const markevtarr = this[_markListerners][evtarr[index].markid];
if (markevtarr) {
for (let index2 = markevtarr.length - 1; index2 >= 0; index2--) {
if (markevtarr[index2].listener === evtarr[index].listener) {
markevtarr.splice(index2, 1);
}
}
if (!this[_markListerners][evtarr[index].markid].indexgth) {
delete this[_markListerners][evtarr[index].markid];
}
}
}
evtarr.splice(index, 1);
}
if (!this[_eventListeners][eventType].length)
delete this[_eventListeners][eventType];
}
}
offAllByMarkId(markid) {
const markevtarr = this[_markListerners][markid];
if (markevtarr) {
for (let index2 = 0, len2 = markevtarr.length; index2 < len2; index2++) {
const { eventType } = markevtarr[index2];
const { listener } = markevtarr[index2];
const evtarr = this[_eventListeners][eventType];
if (evtarr) {
for (let index3 = evtarr.length - 1; index3 >= 0; index3--) {
if (evtarr[index3].listener === listener) {
evtarr.splice(index3, 1);
}
}
if (!this[_eventListeners][eventType].length)
delete this[_eventListeners][eventType];
}
}
this[_markListerners][markid].length = 0;
delete this[_markListerners][markid];
}
}
trigger(eventType, evtmsg = '') {
const evtarr = this[_eventListeners][eventType];
if (evtarr) {
for (let i = 0, len = evtarr.length; i < len; i++) {
if (evtarr[i] && evtarr[i].listener) {
evtarr[i].listener(evtmsg);
}
}
}
}
}
exports.Event = Event;
const EventOuter = new Event();
exports.EventOuter = EventOuter;
const EventInner = new Event();
exports.EventInner = EventInner;