mirror of
https://github.com/zoriya/react-native-video.git
synced 2026-08-16 02:56:22 +00:00
58 lines
2.2 KiB
JavaScript
58 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
import { ALL_PLAYER_EVENTS } from "../types/Events.js";
|
|
export class VideoPlayerEventsBase {
|
|
jsEventListeners = {};
|
|
supportedEvents = ALL_PLAYER_EVENTS;
|
|
constructor(eventEmitter) {
|
|
this.eventEmitter = eventEmitter;
|
|
}
|
|
triggerJSEvent(event, ...params) {
|
|
if (!this.jsEventListeners[event]) return false;
|
|
this.jsEventListeners[event]?.forEach(fn => fn(...params));
|
|
return true;
|
|
}
|
|
addEventListener(event, callback) {
|
|
switch (event) {
|
|
// ----------------- JS Events -----------------
|
|
case 'onError':
|
|
this.jsEventListeners.onError ??= new Set();
|
|
this.jsEventListeners.onError.add(callback);
|
|
return {
|
|
remove: () => this.jsEventListeners.onError?.delete(callback)
|
|
};
|
|
// ----------------- Shared Events -----------------
|
|
case 'onBuffer':
|
|
return this.eventEmitter.addOnBufferListener(callback);
|
|
case 'onEnd':
|
|
return this.eventEmitter.addOnEndListener(callback);
|
|
case 'onLoad':
|
|
return this.eventEmitter.addOnLoadListener(callback);
|
|
case 'onLoadStart':
|
|
return this.eventEmitter.addOnLoadStartListener(callback);
|
|
case 'onPlaybackStateChange':
|
|
return this.eventEmitter.addOnPlaybackStateChangeListener(callback);
|
|
case 'onPlaybackRateChange':
|
|
return this.eventEmitter.addOnPlaybackRateChangeListener(callback);
|
|
case 'onProgress':
|
|
return this.eventEmitter.addOnProgressListener(callback);
|
|
case 'onReadyToDisplay':
|
|
return this.eventEmitter.addOnReadyToDisplayListener(callback);
|
|
case 'onSeek':
|
|
return this.eventEmitter.addOnSeekListener(callback);
|
|
case 'onTrackChange':
|
|
return this.eventEmitter.addOnTrackChangeListener(callback);
|
|
case 'onVolumeChange':
|
|
return this.eventEmitter.addOnVolumeChangeListener(callback);
|
|
case 'onStatusChange':
|
|
return this.eventEmitter.addOnStatusChangeListener(callback);
|
|
default:
|
|
throw new Error(`[React Native Video] Unsupported event: ${event}`);
|
|
}
|
|
}
|
|
clearAllEvents() {
|
|
this.jsEventListeners = {};
|
|
this.eventEmitter.clearAllListeners();
|
|
}
|
|
}
|
|
//# sourceMappingURL=VideoPlayerEventsBase.js.map
|