rooks
Version:
Essential React custom hooks ⚓ to super charge your components!
62 lines • 1.92 kB
TypeScript
/**
* useAudio
* @description Enhanced audio hook with comprehensive controls and state management
* @see {@link https://rooks.vercel.app/docs/hooks/useAudio}
*/
import { RefCallback } from "react";
type UseAudioOptions = {
autoPlay?: boolean;
isMuted?: boolean;
volume?: number;
playbackRate?: number;
loop?: boolean;
preload?: "none" | "metadata" | "auto";
};
type UseAudioCallbacks = {
onPlay?: () => void;
onPause?: () => void;
onEnded?: () => void;
onMute?: () => void;
onUnmute?: () => void;
onLoadedMetadata?: () => void;
onTimeUpdate?: (currentTime: number) => void;
onDurationChange?: (duration: number) => void;
onVolumeChange?: (volume: number) => void;
onRateChange?: (rate: number) => void;
onError?: (error: string) => void;
onLoadStart?: () => void;
onCanPlay?: () => void;
onWaiting?: () => void;
};
type AudioState = {
isPlaying: boolean;
isMuted: boolean;
volume: number;
currentTime: number;
duration: number;
playbackRate: number;
isLoading: boolean;
isBuffering: boolean;
loop: boolean;
hasError: boolean;
error?: string;
};
type AudioControls = {
play: () => void;
pause: () => void;
togglePlay: () => void;
mute: () => void;
unmute: () => void;
toggleMute: () => void;
setVolume: (volume: number) => void;
setCurrentTime: (time: number) => void;
setPlaybackRate: (rate: number) => void;
seek: (seconds: number) => void;
fastForward: (seconds: number) => void;
rewind: (seconds: number) => void;
setLoop: (loop: boolean) => void;
};
declare function useAudio(options?: UseAudioOptions, callbacks?: UseAudioCallbacks): [RefCallback<HTMLAudioElement>, AudioState, AudioControls];
export { useAudio };
export type { UseAudioOptions, UseAudioCallbacks, AudioState, AudioControls };
//# sourceMappingURL=useAudio.d.ts.map