expo-av
Version:
Expo universal module for Audio and Video playback
179 lines (178 loc) • 13.5 kB
TypeScript
import PropTypes from 'prop-types';
import * as React from 'react';
import { Playback, AVPlaybackSource, AVPlaybackStatus, AVPlaybackStatusToSet, AVPlaybackNativeSource } from './AV';
import { ExponentVideoComponent, VideoFullscreenUpdateEvent, VideoNativeProps, VideoNaturalSize, VideoProps, VideoReadyForDisplayEvent, ResizeMode, VideoState } from './Video.types';
export { ExponentVideoComponent, VideoFullscreenUpdateEvent, VideoNativeProps, VideoNaturalSize, VideoProps, VideoReadyForDisplayEvent, ResizeMode, VideoState, AVPlaybackStatus, AVPlaybackStatusToSet, AVPlaybackNativeSource, };
export declare const FULLSCREEN_UPDATE_PLAYER_WILL_PRESENT = 0;
export declare const FULLSCREEN_UPDATE_PLAYER_DID_PRESENT = 1;
export declare const FULLSCREEN_UPDATE_PLAYER_WILL_DISMISS = 2;
export declare const FULLSCREEN_UPDATE_PLAYER_DID_DISMISS = 3;
export declare const IOS_FULLSCREEN_UPDATE_PLAYER_WILL_PRESENT = 0;
export declare const IOS_FULLSCREEN_UPDATE_PLAYER_DID_PRESENT = 1;
export declare const IOS_FULLSCREEN_UPDATE_PLAYER_WILL_DISMISS = 2;
export declare const IOS_FULLSCREEN_UPDATE_PLAYER_DID_DISMISS = 3;
export default class Video extends React.Component<VideoProps, VideoState> implements Playback {
static RESIZE_MODE_CONTAIN: ResizeMode;
static RESIZE_MODE_COVER: ResizeMode;
static RESIZE_MODE_STRETCH: ResizeMode;
static IOS_FULLSCREEN_UPDATE_PLAYER_WILL_PRESENT: number;
static IOS_FULLSCREEN_UPDATE_PLAYER_DID_PRESENT: number;
static IOS_FULLSCREEN_UPDATE_PLAYER_WILL_DISMISS: number;
static IOS_FULLSCREEN_UPDATE_PLAYER_DID_DISMISS: number;
static FULLSCREEN_UPDATE_PLAYER_WILL_PRESENT: number;
static FULLSCREEN_UPDATE_PLAYER_DID_PRESENT: number;
static FULLSCREEN_UPDATE_PLAYER_WILL_DISMISS: number;
static FULLSCREEN_UPDATE_PLAYER_DID_DISMISS: number;
static propTypes: {
hitSlop?: PropTypes.Validator<import("react-native").Insets | undefined> | undefined;
onLayout?: PropTypes.Validator<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
pointerEvents?: PropTypes.Validator<"none" | "box-none" | "box-only" | "auto" | undefined> | undefined;
removeClippedSubviews?: PropTypes.Validator<boolean | undefined> | undefined;
style?: PropTypes.Validator<import("react-native").StyleProp<import("react-native").ViewStyle>> | undefined;
testID?: PropTypes.Validator<string | undefined> | undefined;
nativeID?: PropTypes.Validator<string | undefined> | undefined;
collapsable?: PropTypes.Validator<boolean | undefined> | undefined;
needsOffscreenAlphaCompositing?: PropTypes.Validator<boolean | undefined> | undefined;
renderToHardwareTextureAndroid?: PropTypes.Validator<boolean | undefined> | undefined;
shouldRasterizeIOS?: PropTypes.Validator<boolean | undefined> | undefined;
isTVSelectable?: PropTypes.Validator<boolean | undefined> | undefined;
hasTVPreferredFocus?: PropTypes.Validator<boolean | undefined> | undefined;
tvParallaxProperties?: PropTypes.Validator<import("react-native").TVParallaxProperties | undefined> | undefined;
tvParallaxShiftDistanceX?: PropTypes.Validator<number | undefined> | undefined;
tvParallaxShiftDistanceY?: PropTypes.Validator<number | undefined> | undefined;
tvParallaxTiltAngle?: PropTypes.Validator<number | undefined> | undefined;
tvParallaxMagnification?: PropTypes.Validator<number | undefined> | undefined;
onStartShouldSetResponder?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
onMoveShouldSetResponder?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
onResponderEnd?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderGrant?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderReject?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderMove?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderRelease?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderStart?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onResponderTerminationRequest?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
onResponderTerminate?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onStartShouldSetResponderCapture?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
onMoveShouldSetResponderCapture?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
onTouchStart?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onTouchMove?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onTouchEnd?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onTouchCancel?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
onTouchEndCapture?: PropTypes.Validator<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
accessible?: PropTypes.Validator<boolean | undefined> | undefined;
accessibilityActions?: PropTypes.Validator<readonly Readonly<{
name: import("react-native").AccessibilityActionName;
label?: string | undefined;
}>[] | undefined> | undefined;
accessibilityLabel?: PropTypes.Validator<string | undefined> | undefined;
accessibilityRole?: PropTypes.Validator<"none" | "button" | "header" | "link" | "menu" | "menuitem" | "summary" | "image" | "switch" | "text" | "search" | "keyboardkey" | "adjustable" | "imagebutton" | "alert" | "checkbox" | "combobox" | "menubar" | "progressbar" | "radio" | "radiogroup" | "scrollbar" | "spinbutton" | "tab" | "tablist" | "timer" | "toolbar" | undefined> | undefined;
accessibilityStates?: PropTypes.Validator<import("react-native").AccessibilityStates[] | undefined> | undefined;
accessibilityState?: PropTypes.Validator<import("react-native").AccessibilityState | undefined> | undefined;
accessibilityHint?: PropTypes.Validator<string | undefined> | undefined;
onAccessibilityAction?: PropTypes.Validator<((event: import("react-native").AccessibilityActionEvent) => void) | undefined> | undefined;
accessibilityComponentType?: PropTypes.Validator<"none" | "button" | "radiobutton_checked" | "radiobutton_unchecked" | undefined> | undefined;
accessibilityLiveRegion?: PropTypes.Validator<"none" | "polite" | "assertive" | undefined> | undefined;
importantForAccessibility?: PropTypes.Validator<"auto" | "yes" | "no" | "no-hide-descendants" | undefined> | undefined;
accessibilityElementsHidden?: PropTypes.Validator<boolean | undefined> | undefined;
accessibilityTraits?: PropTypes.Validator<"key" | "none" | "button" | "header" | "link" | "summary" | "image" | "text" | "search" | "adjustable" | "disabled" | "selected" | "plays" | "frequentUpdates" | "startsMedia" | "allowsDirectInteraction" | "pageTurn" | import("react-native").AccessibilityTrait[] | undefined> | undefined;
accessibilityViewIsModal?: PropTypes.Validator<boolean | undefined> | undefined;
onAccessibilityTap?: PropTypes.Validator<(() => void) | undefined> | undefined;
onMagicTap?: PropTypes.Validator<(() => void) | undefined> | undefined;
accessibilityIgnoresInvertColors?: PropTypes.Validator<boolean | undefined> | undefined;
source: PropTypes.Requireable<number | PropTypes.InferProps<{
uri: PropTypes.Requireable<string>;
overrideFileExtensionAndroid: PropTypes.Requireable<string>;
}>>;
posterSource: PropTypes.Requireable<number | PropTypes.InferProps<{
uri: PropTypes.Requireable<string>;
}>>;
posterStyle: PropTypes.Validator<import("react-native").StyleProp<import("react-native").ViewStyle>> | undefined;
onPlaybackStatusUpdate: PropTypes.Requireable<(...args: any[]) => any>;
onLoadStart: PropTypes.Requireable<(...args: any[]) => any>;
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
onError: PropTypes.Requireable<(...args: any[]) => any>;
onIOSFullscreenUpdate: PropTypes.Requireable<(...args: any[]) => any>;
onFullscreenUpdate: PropTypes.Requireable<(...args: any[]) => any>;
onReadyForDisplay: PropTypes.Requireable<(...args: any[]) => any>;
useNativeControls: PropTypes.Requireable<boolean>;
resizeMode: PropTypes.Requireable<string>;
usePoster: PropTypes.Requireable<boolean>;
status: PropTypes.Requireable<PropTypes.InferProps<{
progressUpdateIntervalMillis: PropTypes.Requireable<number>;
positionMillis: PropTypes.Requireable<number>;
shouldPlay: PropTypes.Requireable<boolean>;
rate: PropTypes.Requireable<number>;
shouldCorrectPitch: PropTypes.Requireable<boolean>;
volume: PropTypes.Requireable<number>;
isMuted: PropTypes.Requireable<boolean>;
isLooping: PropTypes.Requireable<boolean>;
}>>;
progressUpdateIntervalMillis: PropTypes.Requireable<number>;
positionMillis: PropTypes.Requireable<number>;
shouldPlay: PropTypes.Requireable<boolean>;
rate: PropTypes.Requireable<number>;
shouldCorrectPitch: PropTypes.Requireable<boolean>;
volume: PropTypes.Requireable<number>;
isMuted: PropTypes.Requireable<boolean>;
isLooping: PropTypes.Requireable<boolean>;
scaleX: PropTypes.Requireable<number>;
scaleY: PropTypes.Requireable<number>;
translateX: PropTypes.Requireable<number>;
translateY: PropTypes.Requireable<number>;
rotation: PropTypes.Requireable<number>;
};
_nativeRef: React.RefObject<React.Component<VideoNativeProps, any, any> & import("react-native").NativeMethodsMixinStatic>;
_onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null;
constructor(props: VideoProps);
setNativeProps(nativeProps: VideoNativeProps): void;
_handleNewStatus: (status: AVPlaybackStatus) => void;
_performOperationAndHandleStatusAsync: (operation: (tag: number) => Promise<AVPlaybackStatus>) => Promise<AVPlaybackStatus>;
_setFullscreen: (value: boolean) => Promise<AVPlaybackStatus>;
presentFullscreenPlayer: () => Promise<AVPlaybackStatus>;
presentIOSFullscreenPlayer: () => Promise<AVPlaybackStatus>;
presentFullscreenPlayerAsync: () => Promise<AVPlaybackStatus>;
dismissFullscreenPlayer: () => Promise<AVPlaybackStatus>;
dismissIOSFullscreenPlayer: () => void;
getStatusAsync: () => Promise<AVPlaybackStatus>;
loadAsync: (source: AVPlaybackSource, initialStatus?: AVPlaybackStatusToSet, downloadFirst?: boolean) => Promise<AVPlaybackStatus>;
unloadAsync: () => Promise<AVPlaybackStatus>;
setStatusAsync: (status: AVPlaybackStatusToSet) => Promise<AVPlaybackStatus>;
replayAsync: (status?: AVPlaybackStatusToSet) => Promise<AVPlaybackStatus>;
setOnPlaybackStatusUpdate(onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null): void;
playAsync: () => Promise<AVPlaybackStatus>;
playFromPositionAsync: (positionMillis: number, tolerances?: {
toleranceMillisBefore?: number;
toleranceMillisAfter?: number;
}) => Promise<AVPlaybackStatus>;
pauseAsync: () => Promise<AVPlaybackStatus>;
stopAsync: () => Promise<AVPlaybackStatus>;
setPositionAsync: (positionMillis: number, tolerances?: {
toleranceMillisBefore?: number;
toleranceMillisAfter?: number;
}) => Promise<AVPlaybackStatus>;
setRateAsync: (rate: number, shouldCorrectPitch: boolean) => Promise<AVPlaybackStatus>;
setVolumeAsync: (volume: number) => Promise<AVPlaybackStatus>;
setIsMutedAsync: (isMuted: boolean) => Promise<AVPlaybackStatus>;
setIsLoopingAsync: (isLooping: boolean) => Promise<AVPlaybackStatus>;
setProgressUpdateIntervalAsync: (progressUpdateIntervalMillis: number) => Promise<AVPlaybackStatus>;
_nativeOnPlaybackStatusUpdate: (event: {
nativeEvent: AVPlaybackStatus;
}) => void;
_nativeOnLoadStart: () => void;
_nativeOnLoad: (event: {
nativeEvent: AVPlaybackStatus;
}) => void;
_nativeOnError: (event: {
nativeEvent: {
error: string;
};
}) => void;
_nativeOnReadyForDisplay: (event: {
nativeEvent: VideoReadyForDisplayEvent;
}) => void;
_nativeOnFullscreenUpdate: (event: {
nativeEvent: VideoFullscreenUpdateEvent;
}) => void;
_renderPoster: () => JSX.Element | null;
render(): JSX.Element;
}