diff --git a/types/react-native-video/index.d.ts b/types/react-native-video/index.d.ts new file mode 100644 index 0000000000..72c3ea186d --- /dev/null +++ b/types/react-native-video/index.d.ts @@ -0,0 +1,77 @@ +// Type definitions for react-native-video 1.0 +// Project: https://github.com/react-native-community/react-native-video +// Definitions by: HuHuanming +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 + +import * as React from 'react'; +import { + ViewProperties +} from 'react-native'; + +export interface VideoProperties extends ViewProperties { + /* Native only */ + src?: any; + seek?: number; + fullscreen?: 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?: string; + 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; + onLoadStart?(): void; + onLoad?(): void; + onBuffer?(): void; + onError?(): void; + onProgress?(): void; + onSeek?(): void; + onEnd?(): void; + onFullscreenPlayerWillPresent?(): void; + onFullscreenPlayerDidPresent?(): void; + onFullscreenPlayerWillDismiss?(): void; + onFullscreenPlayerDidDismiss?(): void; + onReadyForDisplay?(): void; + onPlaybackStalled?(): void; + onPlaybackResume?(): void; + onPlaybackRateChange?(): void; + onAudioFocusChanged?(): void; + onAudioBecomingNoisy?(): void; + + /* Required by react-native */ + scaleX?: number; + scaleY?: number; + translateX?: number; + translateY?: number; + rotation?: number; +} + +export default class Video extends React.Component { + seek(time: number): void; + presentFullscreenPlayer(): void; + dismissFullscreenPlayer(): void; +} diff --git a/types/react-native-video/react-native-video-tests.tsx b/types/react-native-video/react-native-video-tests.tsx new file mode 100644 index 0000000000..bc240853f5 --- /dev/null +++ b/types/react-native-video/react-native-video-tests.tsx @@ -0,0 +1,26 @@ +import * as React from 'react'; +import { + StyleSheet, + Text, + View, + ViewStyle +} from 'react-native'; +import Video from 'react-native-video'; + +class SwiperTest extends React.Component<{}, {}> { + constructor(props: {}) { + super(props); + } + + render(): React.ReactElement { + return ( +