wix-style-react
Version:
wix-style-react
56 lines (55 loc) • 1.6 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.eventManager = exports.Event = void 0;
var Event = exports.Event = /*#__PURE__*/function (Event) {
Event[Event["Show"] = 0] = "Show";
Event[Event["Clear"] = 1] = "Clear";
Event[Event["DidMount"] = 2] = "DidMount";
Event[Event["WillUnmount"] = 3] = "WillUnmount";
return Event;
}({});
var eventManager = exports.eventManager = {
list: new Map(),
emitQueue: new Map(),
on(event, callback) {
this.list.has(event) || this.list.set(event, []);
this.list.get(event).push(callback);
return this;
},
off(event, callback) {
if (callback) {
var cb = this.list.get(event).filter(c => c !== callback);
this.list.set(event, cb);
return this;
}
this.list.delete(event);
return this;
},
cancelEmit(event) {
var timers = this.emitQueue.get(event);
if (timers) {
timers.forEach(clearTimeout);
this.emitQueue.delete(event);
}
return this;
},
emit(event) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
this.list.has(event) && this.list.get(event).forEach(callback => {
if (process.env.NODE_ENV === 'test') {
// @ts-ignore
callback(...args);
return;
}
var timer = setTimeout(() => {
// @ts-ignore
callback(...args);
}, 0);
this.emitQueue.has(event) || this.emitQueue.set(event, []);
this.emitQueue.get(event).push(timer);
});
}
};
//# sourceMappingURL=eventManager.js.map