react-native-theoplayer
Version:
A THEOplayer video component for react-native.
59 lines (58 loc) • 1.58 kB
JavaScript
;
export function arrayRemoveElement(array, element) {
const index = array.indexOf(element);
if (index === -1) {
return false;
}
arrayRemoveAt(array, index);
return true;
}
export function arrayRemoveAt(array, index) {
array.splice(index, 1);
}
export class DefaultWebEventDispatcher {
_eventListeners = new Map();
addEventListener(types, listener) {
if (typeof types === 'string') {
this.addSingleEventListener_(types, listener);
} else {
types.forEach(type => {
this.addSingleEventListener_(type, listener);
});
}
}
addSingleEventListener_(type, listener) {
if (!this._eventListeners.has(type)) {
// @ts-ignore
this._eventListeners.set(type, [listener]);
} else {
// @ts-ignore
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(types, listener) {
if (typeof types === 'string') {
this.removeSingleEventListener(types, listener);
} else {
types.forEach(type => {
this.removeSingleEventListener(type, listener);
});
}
}
removeSingleEventListener(type, listener) {
const listeners = this._eventListeners.get(type);
if (listeners) {
arrayRemoveElement(listeners, listener);
}
}
}
//# sourceMappingURL=DefaultWebEventDispatcher.js.map