mirror of
https://github.com/zoriya/react-native-video.git
synced 2026-08-16 02:56:22 +00:00
chore: split tsconfig into web & default
This commit is contained in:
@@ -48,6 +48,7 @@
|
||||
"scripts": {
|
||||
"postinstall": "bun run build || exit 0;",
|
||||
"typecheck": "tsc",
|
||||
"typecheck:web": "tsc -p tsconfig.web.json",
|
||||
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
||||
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
||||
"prepare": "bun run build",
|
||||
@@ -73,6 +74,9 @@
|
||||
"publishConfig": {
|
||||
"registry": "https://registry.npmjs.org/"
|
||||
},
|
||||
"dependencies": {
|
||||
"video.js": "^8.23.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@expo/config-plugins": "^10.0.2",
|
||||
"@react-native/eslint-config": "^0.77.0",
|
||||
@@ -88,8 +92,7 @@
|
||||
"react-native": "^0.77.0",
|
||||
"react-native-builder-bob": "^0.40.0",
|
||||
"react-native-nitro-modules": "0.35.0",
|
||||
"typescript": "^5.2.2",
|
||||
"video.js": "^8.23.4"
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
|
||||
@@ -18,6 +18,8 @@ import { WebEventEmitter } from "./web/WebEventEmitter";
|
||||
import type { VideoTrack } from "./types/VideoTrack";
|
||||
import type { QualityLevel } from "./types/QualityLevel";
|
||||
import type { SupportedFeatures } from "./types/SupportedFeatures";
|
||||
import type { ListenerSubscription } from "./types/EventEmitter";
|
||||
import type { AllPlayerEvents as PlayerEvents } from "./types/Events";
|
||||
import {
|
||||
mapVideoJsTracks,
|
||||
type VideoJsPlayer,
|
||||
@@ -406,6 +408,28 @@ class VideoPlayer extends VideoPlayerEvents implements VideoPlayerBase {
|
||||
qualitySelection: true,
|
||||
};
|
||||
}
|
||||
|
||||
addEventListener<Event extends keyof PlayerEvents>(
|
||||
event: Event,
|
||||
callback: PlayerEvents[Event],
|
||||
): ListenerSubscription {
|
||||
switch (event) {
|
||||
case "onAudioTrackChange":
|
||||
return (this.eventEmitter as WebEventEmitter).addOnAudioTrackChangeListener(
|
||||
callback as PlayerEvents["onAudioTrackChange"],
|
||||
);
|
||||
case "onVideoTrackChange":
|
||||
return (this.eventEmitter as WebEventEmitter).addOnVideoTrackChangeListener(
|
||||
callback as PlayerEvents["onVideoTrackChange"],
|
||||
);
|
||||
case "onQualityChange":
|
||||
return (this.eventEmitter as WebEventEmitter).addOnQualityChangeListener(
|
||||
callback as PlayerEvents["onQualityChange"],
|
||||
);
|
||||
default:
|
||||
return super.addEventListener(event, callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export { VideoPlayer };
|
||||
|
||||
@@ -7,8 +7,6 @@ import type {
|
||||
ListenerSubscription,
|
||||
VideoPlayerEventEmitterBase,
|
||||
} from "./types/EventEmitter";
|
||||
import type { WebEventEmitter } from "./web/WebEventEmitter";
|
||||
import { Platform } from "react-native";
|
||||
|
||||
export class VideoPlayerEvents {
|
||||
protected eventEmitter: VideoPlayerEventEmitterBase;
|
||||
@@ -133,22 +131,6 @@ export class VideoPlayerEvents {
|
||||
return this.eventEmitter.addOnStatusChangeListener(
|
||||
callback as PlayerEvents['onStatusChange']
|
||||
);
|
||||
// ----------------- Web Events -----------------
|
||||
case 'onAudioTrackChange':
|
||||
if (Platform.OS !== "web") return { remove:()=>{} };
|
||||
return (this.eventEmitter as WebEventEmitter).addOnAudioTrackChangeListener(
|
||||
callback as PlayerEvents['onAudioTrackChange']
|
||||
);
|
||||
case 'onVideoTrackChange':
|
||||
if (Platform.OS !== "web") return { remove:()=>{} };
|
||||
return (this.eventEmitter as WebEventEmitter).addOnVideoTrackChangeListener(
|
||||
callback as PlayerEvents['onVideoTrackChange']
|
||||
);
|
||||
case 'onQualityChange':
|
||||
if (Platform.OS !== "web") return { remove:()=>{} };
|
||||
return (this.eventEmitter as WebEventEmitter).addOnQualityChangeListener(
|
||||
callback as PlayerEvents['onQualityChange']
|
||||
);
|
||||
default:
|
||||
throw new Error(`[React Native Video] Unsupported event: ${event}`);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"extends": ["../../config/tsconfig.json"],
|
||||
"include": ["src", "./app.plugin.js"],
|
||||
"exclude": ["src/**/*.web.ts", "src/**/*.web.tsx", "src/core/web/**"],
|
||||
"compilerOptions": {
|
||||
"rootDir": ".",
|
||||
"jsx": "react-jsx",
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"lib": ["ESNext", "dom"]
|
||||
},
|
||||
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
||||
}
|
||||
Reference in New Issue
Block a user