react-native-theoplayer
Version:
A THEOplayer video component for react-native.
47 lines (46 loc) • 1.39 kB
JavaScript
;
import { arrayRemoveElement } from '../../utils/arrayUtil';
export class DefaultEventDispatcher {
_eventListeners = new Map();
addEventListener(type, listener) {
if (typeof listener !== 'function') {
return;
} else if (Array.isArray(type)) {
type.forEach(t => this.addSingleEventListener(t, listener));
} else {
this.addSingleEventListener(type, listener);
}
}
addSingleEventListener(type, listener) {
if (!this._eventListeners.has(type)) {
this._eventListeners.set(type, [listener]);
} else {
this._eventListeners.get(type)?.push(listener);
}
}
clearEventListeners() {
this._eventListeners.clear();
}
dispatchEvent = event => {
const listeners = (this._eventListeners.get(event.type) ?? []).slice();
for (const listener of listeners) {
listener.call(this, event);
}
};
removeEventListener(type, listener) {
if (typeof listener !== 'function') {
return;
} else if (Array.isArray(type)) {
type.forEach(t => this.removeSingleEventListener(t, listener));
} else {
this.removeSingleEventListener(type, listener);
}
}
removeSingleEventListener(type, listener) {
const listeners = this._eventListeners.get(type);
if (listeners) {
arrayRemoveElement(listeners, listener);
}
}
}
//# sourceMappingURL=DefaultEventDispatcher.js.map