29 lines
826 B
JavaScript
29 lines
826 B
JavaScript
define([], () => {
|
|
'use strict';
|
|
|
|
let EventHandler = class EventHandler {
|
|
|
|
constructor(){
|
|
this._listeners = new Map();
|
|
}
|
|
|
|
addEventListener(target, type, listener, options){
|
|
this._listeners.set(type, listener);
|
|
target.addEventListener(this.constructor.eventParts(type).event, listener, options);
|
|
}
|
|
|
|
removeEventListener(target, type){
|
|
target.removeEventListener(this.constructor.eventParts(type).event, this._listeners.get(type));
|
|
this._listeners.delete(type);
|
|
}
|
|
|
|
static eventParts(type){
|
|
return type.split('.').reduce((acc, val, i) => {
|
|
acc[i ? 'namespace' : 'event'] = val;
|
|
return acc;
|
|
}, {});
|
|
}
|
|
};
|
|
|
|
return new EventHandler();
|
|
}); |