react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
73 lines • 2.39 kB
TypeScript
import { ReactNode } from 'react';
import type BaseAudioContext from '../core/BaseAudioContext';
import type { IAudioFileSourceNode } from '../jsi-interfaces';
export interface AudioURISource {
uri?: string | undefined;
headers?: {
[key: string]: string;
} | undefined;
}
export type AudioRequireSource = number;
export interface TimeRanges {
length: number;
start(index: number): number;
end(index: number): number;
}
export type AudioSource = AudioURISource | AudioRequireSource | string;
export type PreloadType = 'auto' | 'metadata' | 'none';
export type AudioTagPlaybackState = 'idle' | 'playing' | 'paused';
export interface AudioTagHandle {
play: () => void;
pause: () => void;
seekToTime: (seconds: number) => void;
setVolume: (volume: number) => void;
setMuted: (muted: boolean) => void;
setPlaybackRate: (playbackRate: number) => void;
}
/**
* Internal handle surface used by MediaElementAudioSourceNode to obtain the
* underlying file source. Not exported from the package public API.
*/
export interface InternalAudioTagHandle extends AudioTagHandle {
getFileSourceNode: () => IAudioFileSourceNode | null;
}
interface AudioControlProps {
autoPlay: boolean;
controls: boolean;
loop: boolean;
muted: boolean;
preload: PreloadType;
/**
* When true, download the full remote file instead of streaming via HTTP
* ranges. Native only — ignored on web.
*/
forceDownload: boolean;
source: AudioSource;
playbackRate: number;
preservesPitch: boolean;
volume: number;
children?: ReactNode;
context?: BaseAudioContext;
}
interface AudioReadonlyProps {
}
type TMPEmptyEventHandler = () => void;
type TMPNumberEventHandler = (number: number) => void;
type TMPErrorEventHandler = (error: Error) => void;
interface AudioEventProps {
onLoadStart: TMPEmptyEventHandler;
onLoad: TMPEmptyEventHandler;
onError: TMPErrorEventHandler;
onPositionChange: TMPNumberEventHandler;
onEnded: TMPEmptyEventHandler;
onPlay: TMPEmptyEventHandler;
onPause: TMPEmptyEventHandler;
onVolumeChange: TMPNumberEventHandler;
}
export interface AudioPropsBase extends AudioControlProps, AudioReadonlyProps, AudioEventProps {
}
export type AudioProps = Partial<AudioPropsBase> & {
source: AudioSource;
};
export {};
//# sourceMappingURL=types.d.ts.map