@vueuse/sound
Version:
🔊 A Vue composable for playing sound effects
38 lines (34 loc) • 1.2 kB
TypeScript
import { HowlOptions, Howl } from 'howler';
import { Ref, ComputedRef } from 'vue-demi';
interface HowlStatic {
new (properties: HowlOptions): Howl;
}
type MaybeRef<T> = T | Ref<T> | ComputedRef<T>;
interface SpriteMap {
[key: string]: [number, number];
}
type ComposableOptions = {
volume?: MaybeRef<number>;
playbackRate?: MaybeRef<number>;
interrupt?: boolean;
soundEnabled?: boolean;
autoplay?: boolean;
sprite?: SpriteMap;
onload?: () => void;
} & Omit<HowlOptions, 'src'>;
interface PlayOptions {
id?: number;
forceSoundEnabled?: boolean;
playbackRate?: number;
}
type PlayFunction = (options?: PlayOptions) => void;
interface ReturnedValue {
play: PlayFunction;
sound: Ref<Howl | null>;
stop: (id?: number) => void;
pause: (id?: number) => void;
isPlaying: Ref<boolean>;
duration: Ref<number | null>;
}
declare function useSound(url: MaybeRef<string>, { volume, playbackRate, soundEnabled, interrupt, autoplay, onload, ...delegated }?: ComposableOptions): ReturnedValue;
export { type ComposableOptions, type HowlStatic, type MaybeRef, type PlayFunction, type PlayOptions, type ReturnedValue, type SpriteMap, useSound };