mirror of
https://github.com/Jermolene/TiddlyWiki5.git
synced 2026-03-11 01:03:01 -07:00
44 lines
860 B
JavaScript
44 lines
860 B
JavaScript
/*\
|
|
title: $:/core/modules/startup/eventbus.js
|
|
type: application/javascript
|
|
module-type: startup
|
|
\*/
|
|
|
|
exports.name = "eventbus";
|
|
exports.platforms = ["browser"];
|
|
exports.before = ["windows"];
|
|
exports.synchronous = true;
|
|
|
|
$tw.eventBus = {
|
|
listenersMap: new Map(),
|
|
|
|
on(event,handler) {
|
|
if(!this.listenersMap.has(event)) {
|
|
this.listenersMap.set(event,new Set());
|
|
}
|
|
const listeners = this.listenersMap.get(event);
|
|
listeners.add(handler);
|
|
},
|
|
|
|
off(event,handler) {
|
|
const listeners = this.listenersMap.get(event);
|
|
if(listeners) {
|
|
listeners.delete(handler);
|
|
}
|
|
},
|
|
|
|
once(event,handler) {
|
|
const wrapper = (...args) => {
|
|
handler(...args);
|
|
this.off(event, wrapper);
|
|
};
|
|
this.on(event, wrapper);
|
|
},
|
|
|
|
emit(event,data) {
|
|
const listeners = this.listenersMap.get(event);
|
|
if(listeners) {
|
|
listeners.forEach(fn => fn(data));
|
|
}
|
|
}
|
|
};
|