UNPKG

react-native-jw-media-player

Version:

React-native Android/iOS plugin for JWPlayer SDK (https://www.jwplayer.com/)

341 lines (336 loc) 9.41 kB
declare module "react-native-jw-media-player" { import React from "react"; import { ViewStyle } from "react-native"; interface AudioTrack { autoSelect: boolean; defaultTrack: boolean; groupId: string; language: string; name: string; } export interface QualityLevel { playlistPosition: number; bitRate: number; label: string; height: number; width: number; index: number; } interface CastingDevice { name?: string; identifier?: string; } interface Source { file: string; label: string; default?: boolean; } interface Track { file: string; label: string; default?: boolean; } interface JWAdSettings { allowsBackgroundPlayback?: boolean; // Add other ad settings properties as needed } interface IMASettings { locale?: string; ppid?: string; maxRedirects?: number; sessionID?: string; debugMode?: boolean; } interface AdSchedule { tag: string; offset: string; } // interface CompanionAdSlot { // viewId: string; // Reference to a UIView in the application // size?: { width: number; height: number }; // } interface GoogleDAIStream { videoID?: string; cmsID?: string; assetKey?: string; apiKey?: string; adTagParameters?: { [key: string]: string }; } interface AdRule { startOn: number; frequency: number; timeBetweenAds: number; startOnSeek: 'none' | 'pre'; // Mapped from JWAdShownOnSeek } // interface FriendlyObstruction { // viewId: string; // purpose: 'mediaControls' | 'closeAd' | 'notVisible' | 'other'; // Mapped from JWFriendlyObstructionPurpose // reason?: string; // } type ClientTypes = "vast" | "ima" | "ima_dai"; interface VASTAdvertising { adSchedule?: AdSchedule[]; adVmap?: string; tag?: string; // Vast xml url openBrowserOnAdClick?: boolean; adClient: "vast"; adRules?: AdRule; adSettings?: JWAdSettings; } interface IMAAdvertising { adSchedule?: AdSchedule[]; adVmap?: string; tag?: string; // Vast xml url adClient: "ima"; adRules?: AdRule; imaSettings?: IMASettings; // companionAdSlots?: CompanionAdSlot[]; // friendlyObstructions?: FriendlyObstruction[]; } interface IMA_DAIAdvertising { adClient: "ima_dai"; imaSettings?: IMASettings; // friendlyObstructions?: FriendlyObstruction[]; googleDAIStream?: GoogleDAIStream; } type Advertising = VASTAdvertising | IMAAdvertising | IMA_DAIAdvertising; interface PlaylistItem { file: string; sources?: Source[]; image?: string; title?: string; description?: string; mediaId?: string; adSchedule?: AdSchedule[]; adVmap?: string; tracks?: Track[]; recommendations?: string; startTime?: number; autostart?: boolean; } type RelatedOnClicks = "play" | "link"; type RelatedOnCompletes = "show" | "hide" | "autoplay"; interface Related { onClick?: RelatedOnClicks; onComplete?: RelatedOnCompletes; heading?: string; url?: string; autoplayMessage?: string; autoplayTimer?: number; } interface Font { name?: string; size?: number; } type EdgeStyles = "none" | "dropshadow" | "raised" | "depressed" | "uniform"; interface Styling { colors?: { buttons?: string; backgroundColor?: string; fontColor?: string; timeslider?: { progress?: string; rail?: string; thumb?: string }; }; font?: Font; displayTitle?: boolean; displayDescription?: boolean; captionsStyle?: { font?: Font; fontColor?: string; backgroundColor?: string; highlightColor?: string; edgeStyle?: EdgeStyles; }; menuStyle: { font?: Font; fontColor?: string; backgroundColor?: string; }; } type Preloads = "auto" | "none"; type InterfaceBehaviors = "normal" | "hidden" | "onscreen"; type UIGroups = | "overlay" | "control_bar" | "center_controls" | "next_up" | "error" | "playlist" | "controls_container" | "settings_menu" | "quality_submenu" | "captions_submenu" | "playback_submenu" | "audiotracks_submenu" | "casting_menu"; type AudioSessionCategory = | "Ambient" | "SoloAmbient" | "Playback" | "Record" | "PlayAndRecord" | "MultiRoute"; type AudioSessionCategoryOptions = | "MixWithOthers" | "DuckOthers" | "AllowBluetooth" | "DefaultToSpeaker" | "InterruptSpokenAudioAndMix" | "AllowBluetoothA2DP" | "AllowAirPlay" | "OverrideMutedMicrophone"; type AudioSessionMode = | "Default" | "VoiceChat" | "VideoChat" | "GameChat" | "VideoRecording" | "Measurement" | "MoviePlayback" | "SpokenAudio" | "VoicePrompt"; type JWControlType = | "forward" | "rewind" | "pip" | "airplay" | "chromecast" | "next" | "previous" | "settings" | "languages" | "fullscreen"; interface Config { license: string; advertising?: Advertising; autostart?: boolean; controls?: boolean; repeat?: boolean; nextUpStyle?: { offsetSeconds: number; offsetPercentage: number }; styling?: Styling; backgroundAudioEnabled?: boolean; category?: AudioSessionCategory; categoryOptions?: Array<AudioSessionCategoryOptions>; mode?: AudioSessionMode; fullScreenOnLandscape?: boolean; landscapeOnFullScreen?: boolean; portraitOnExitFullScreen?: boolean; exitFullScreenOnPortrait?: boolean; playlist?: PlaylistItem[]; stretching?: string; related?: Related; preload?: Preloads; interfaceBehavior?: InterfaceBehaviors; interfaceFadeDelay?: number; hideUIGroups?: UIGroups[]; processSpcUrl?: string; fairplayCertUrl?: string; contentUUID?: string; viewOnly?: boolean; enableLockScreenControls: boolean; pipEnabled: boolean; } interface BaseEvent<T> { nativeEvent: T; } interface SeekEventProps { position: number; offset: number; } interface SeekedEventProps { position: number; } interface RateChangedEventProps { rate: number; at: number; } interface TimeEventProps { position: number; duration: number; } interface ControlBarVisibleEventProps { visible: boolean; } interface PlaylistEventProps { playlist: PlaylistItem[] } interface PlaylistItemEventProps { playlistItem: PlaylistItem } interface PlayerErrorEventProps { code: string; error: string; } interface PlayerWarningEventProps { code: string; warning: string; } interface AdEventProps { client?: string; reason?: string; type: number; } type NativeError = (event: BaseEvent<PlayerErrorEventProps>) => void; type NativeWarning = (event: BaseEvent<PlayerWarningEventProps>) => void; interface PropsType { config: Config; style?: ViewStyle; controls?: boolean; onPlayerReady?: () => void; onPlaylist?: (event: BaseEvent<PlaylistEventProps>) => void; onBeforePlay?: () => void; onBeforeComplete?: () => void; onComplete?: () => void; onPlay?: () => void; onPause?: () => void; onSeek?: (event: BaseEvent<SeekEventProps>) => void; onSeeked?: (event?: BaseEvent<SeekedEventProps>) => void; onRateChanged?: (event?: BaseEvent<RateChangedEventProps>) => void; onSetupPlayerError?: NativeError; onPlayerError?: NativeError; onPlayerWarning?: NativeWarning; onPlayerAdError?: NativeError; onPlayerAdWarning?: NativeWarning; onAdEvent?: (event: BaseEvent<AdEventProps>) => void; onAdTime?: (event: BaseEvent<TimeEventProps>) => void; onBuffer?: () => void; onTime?: (event: BaseEvent<TimeEventProps>) => void; onFullScreenRequested?: () => void; onFullScreen?: () => void; onFullScreenExitRequested?: () => void; onFullScreenExit?: () => void; onControlBarVisible?: (event: BaseEvent<ControlBarVisibleEventProps>) => void; onPlaylistComplete?: () => void; onPlaylistItem?: (event: BaseEvent<PlaylistItemEventProps>) => void; onAudioTracks?: () => void; shouldComponentUpdate?: (nextProps: any, nextState: any) => boolean; } export default class JWPlayer extends React.Component<PropsType> { pause(): void; play(): void; stop(): void; toggleSpeed(): void; setSpeed(speed: number): void; setCurrentQuality(index: number): void; currentQuality(): number; getQualityLevels(): Promise<QualityLevel[] | null>; setVolume(volume: number): void; setPlaylistIndex(index: number): void; setControls(show: boolean): void; setLockScreenControls(show: boolean): void; seekTo(time: number): void; loadPlaylist(playlistItems: PlaylistItem[]): void; setFullscreen(fullScreen: boolean): void; position(): Promise<number>; setUpCastController(): void; presentCastDialog(): void; connectedDevice(): Promise<CastingDevice | null>; availableDevices(): Promise<CastingDevice[] | null>; castState(): Promise<number | null>; playerState(): Promise<number | null>; getAudioTracks(): Promise<AudioTrack[] | null>; getCurrentAudioTrack(): Promise<number | null>; setCurrentAudioTrack(index: number): void; setCurrentCaptions(index: number): void; setVisibility(visibility: boolean, controls: JWControlType[]): void; } }