feat: implemented an event manager
This commit is contained in:
parent
7d7c376622
commit
c1c35369d1
65
frontend/src/lib/event-manager/event-manager.js
Normal file
65
frontend/src/lib/event-manager/event-manager.js
Normal file
@ -0,0 +1,65 @@
|
||||
|
||||
export const EVENT_TYPE = {
|
||||
CLICK : 'click',
|
||||
KEYDOWN : 'keydown',
|
||||
//more to be added
|
||||
};
|
||||
|
||||
|
||||
|
||||
export class EventManager {
|
||||
_registeredListeners;
|
||||
|
||||
|
||||
constructor() {
|
||||
this._registeredListeners = [];
|
||||
}
|
||||
|
||||
registerNewListener(eventWrapper) {
|
||||
this._debugLog('registerNewListener', eventWrapper);
|
||||
let element = eventWrapper.element;
|
||||
element.addEventListener(eventWrapper.eventType, eventWrapper.eventHandler);
|
||||
this._registeredListeners.push(eventWrapper);
|
||||
}
|
||||
|
||||
removeAllEventListenersFromUtil() {
|
||||
this._debugLog('removeAllEventListenersFromUtil',);
|
||||
for (let eventWrapper of this._registeredListeners) {
|
||||
let element = eventWrapper.element;
|
||||
element.removeEventListener(eventWrapper.eventType, eventWrapper.eventHandler);
|
||||
}
|
||||
this._registeredListeners = [];
|
||||
}
|
||||
|
||||
//_debugLog() {}
|
||||
_debugLog(fName, ...args) {
|
||||
console.log(`[DEBUGLOG] EventManager.${fName}`, { args: args, instance: this });
|
||||
}
|
||||
}
|
||||
|
||||
export class EventWrapper {
|
||||
_eventType;
|
||||
_eventHandler;
|
||||
_element;
|
||||
|
||||
constructor(_eventType, _eventHandler, _element) {
|
||||
if(!_eventType || !_eventHandler || !_element) {
|
||||
throw new Error('Not enough arguments!');
|
||||
}
|
||||
this._eventType = _eventType;
|
||||
this._eventHandler = _eventHandler;
|
||||
this._element = _element;
|
||||
}
|
||||
|
||||
get eventType() {
|
||||
return this._eventType;
|
||||
}
|
||||
|
||||
get eventHandler() {
|
||||
return this._eventHandler;
|
||||
}
|
||||
|
||||
get element() {
|
||||
return this._element;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user