UNPKG

soundcloud.ts

Version:

Soundcloud API v2 wrapper with typings.

90 lines (74 loc) 2.63 kB
import type {SoundcloudTrack} from "./TrackTypes" export interface SoundcloudWidget { bind<Value extends SoundcloudEventValue>( event: Value, callback: SoundcloudEventCallback<Value>, ): void unbind(event: SoundcloudEventValue): void load(url: string, options?: SoundcloudLoadOptions): void play(): void pause(): void toggle(): void seekTo(ms: number): void setVolume(volume: number): void next(): void prev(): void skip(index: number): void getVolume(callback: (volume: number) => void): void getDuration(callback: (duration: number) => void): void getPosition(callback: (position: number) => void): void getSounds(callback: (sounds: SoundcloudTrack[]) => void): void getCurrentSound(callback: (sound: SoundcloudTrack) => void): void getCurrentSoundIndex(callback: (index: number) => void): void isPaused(callback: (paused: boolean) => void): void } export interface SoundcloudLoadOptions { callback?(): void [param: string]: unknown } export interface SoundcloudAudioEvents { LOAD_PROGRESS: "loadProgress" PLAY_PROGRESS: "playProgress" PLAY: "play" PAUSE: "pause" FINISH: "finish" SEEK: "seek" } export type SoundcloudAudioEventKey = keyof SoundcloudAudioEvents export type SoundcloudAudioEventValue = SoundcloudAudioEvents[SoundcloudAudioEventKey] export type SoundcloudAudioEventCallback = (data: SoundcloudAudioData) => void export interface SoundcloudAudioData { relativePosition: number loadProgress: number currentPosition: number } export interface SoundcloudUIEvents { READY: "ready" CLICK_DOWNLOAD: "downloadClicked" CLICK_BUY: "buyClicked" OPEN_SHARE_PANEL: "sharePanelOpened" ERROR: "error" } export type SoundcloudUIEventKey = keyof SoundcloudUIEvents export type SoundcloudUIEventValue = SoundcloudUIEvents[SoundcloudUIEventKey] export type SoundcloudUIEventCallback = () => void export type SoundcloudEventKey = SoundcloudAudioEventKey | SoundcloudUIEventKey export type SoundcloudEventValue = | SoundcloudAudioEventValue | SoundcloudUIEventValue export type SoundcloudEvents = SoundcloudAudioEvents & SoundcloudUIEvents export type SoundcloudEventCallback<Value extends SoundcloudEventValue> = Value extends SoundcloudAudioEventValue ? SoundcloudAudioEventCallback : SoundcloudUIEventCallback declare global { interface Window { SC?: { Widget: { (element: string | HTMLIFrameElement): SoundcloudWidget Events: SoundcloudEvents } } } }