mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
Added two properties to the type definition. These are specified in the documentation and do have effect on fullscreen presentation, but are missing in the types
134 lines
3.6 KiB
TypeScript
134 lines
3.6 KiB
TypeScript
// Type definitions for react-native-video 3.1
|
|
// Project: https://github.com/react-native-community/react-native-video, https://github.com/brentvatne/react-native-video
|
|
// Definitions by: HuHuanming <https://github.com/huhuanming>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.8
|
|
|
|
import * as React from 'react';
|
|
import { ViewProps } from 'react-native';
|
|
|
|
export interface OnLoadData {
|
|
canPlayFastForward: boolean;
|
|
canPlayReverse: boolean;
|
|
canPlaySlowForward: boolean;
|
|
canPlaySlowReverse: boolean;
|
|
canStepBackward: boolean;
|
|
canStepForward: boolean;
|
|
currentTime: number;
|
|
duration: number;
|
|
naturalSize: {
|
|
height: number;
|
|
width: number;
|
|
orientation: 'horizontal' | 'landscape';
|
|
};
|
|
}
|
|
|
|
export interface OnProgressData {
|
|
currentTime: number;
|
|
playableDuration: number;
|
|
seekableDuration: number;
|
|
}
|
|
|
|
export interface LoadError {
|
|
error: {
|
|
'': string;
|
|
errorString: string;
|
|
};
|
|
}
|
|
|
|
export interface OnSeekData {
|
|
currentTime: number;
|
|
seekTime: number;
|
|
target?: number;
|
|
}
|
|
|
|
export const TextTrackType: {
|
|
SRT: 'application/x-subrip';
|
|
TTML: 'application/ttml+xml';
|
|
VTT: 'text/vtt';
|
|
};
|
|
|
|
export interface VideoProperties extends ViewProps {
|
|
/* Native only */
|
|
src?: any;
|
|
seek?: number;
|
|
fullscreen?: boolean;
|
|
fullscreenOrientation?: 'all' | 'landscape' | 'portrait';
|
|
fullscreenAutorotate?: boolean;
|
|
onVideoLoadStart?(): void;
|
|
onVideoLoad?(): void;
|
|
onVideoBuffer?(): void;
|
|
onVideoError?(): void;
|
|
onVideoProgress?(): void;
|
|
onVideoSeek?(): void;
|
|
onVideoEnd?(): void;
|
|
onTimedMetadata?(): void;
|
|
onVideoFullscreenPlayerWillPresent?(): void;
|
|
onVideoFullscreenPlayerDidPresent?(): void;
|
|
onVideoFullscreenPlayerWillDismiss?(): void;
|
|
onVideoFullscreenPlayerDidDismiss?(): void;
|
|
|
|
/* Wrapper component */
|
|
// Opaque type returned by require('./video.mp4')
|
|
source: { uri?: string } | number;
|
|
resizeMode?: "stretch" | "contain" | "cover" | "none"; // via Image#resizeMode
|
|
posterResizeMode?: "stretch" | "contain" | "cover" | "none"; // via Image#resizeMode
|
|
poster?: string;
|
|
repeat?: boolean;
|
|
paused?: boolean;
|
|
muted?: boolean;
|
|
volume?: number;
|
|
rate?: number;
|
|
playInBackground?: boolean;
|
|
playWhenInactive?: boolean;
|
|
ignoreSilentSwitch?: 'ignore' | 'obey';
|
|
disableFocus?: boolean;
|
|
controls?: boolean;
|
|
currentTime?: number;
|
|
progressUpdateInterval?: number;
|
|
useTextureView?: boolean;
|
|
allowsExternalPlayback?: boolean;
|
|
audioOnly?: boolean;
|
|
|
|
onLoadStart?(): void;
|
|
onLoad?(data: OnLoadData): void;
|
|
onBuffer?(): void;
|
|
onError?(error: LoadError): void;
|
|
onProgress?(data: OnProgressData): void;
|
|
onSeek?(data: OnSeekData): void;
|
|
onEnd?(): void;
|
|
onFullscreenPlayerWillPresent?(): void;
|
|
onFullscreenPlayerDidPresent?(): void;
|
|
onFullscreenPlayerWillDismiss?(): void;
|
|
onFullscreenPlayerDidDismiss?(): void;
|
|
onReadyForDisplay?(): void;
|
|
onPlaybackStalled?(): void;
|
|
onPlaybackResume?(): void;
|
|
onPlaybackRateChange?(data: { playbackRate: number }): void;
|
|
onAudioFocusChanged?(): void;
|
|
onAudioBecomingNoisy?(): void;
|
|
selectedTextTrack?: {
|
|
type: 'system' | 'disabled' | 'title' | 'language' | 'index';
|
|
value?: string | number;
|
|
};
|
|
textTracks?: Array<{
|
|
title?: string;
|
|
language?: string;
|
|
type: 'application/x-subrip' | 'application/ttml+xml' | 'text/vtt';
|
|
uri: string;
|
|
}>;
|
|
|
|
/* Required by react-native */
|
|
scaleX?: number;
|
|
scaleY?: number;
|
|
translateX?: number;
|
|
translateY?: number;
|
|
rotation?: number;
|
|
}
|
|
|
|
export default class Video extends React.Component<VideoProperties> {
|
|
seek(time: number, tolerance?: number): void;
|
|
presentFullscreenPlayer(): void;
|
|
dismissFullscreenPlayer(): void;
|
|
}
|