UNPKG

@sanyueqi/web-components

Version:

Web components

292 lines (263 loc) 6 kB
// music-player-plugin.d.ts /** * 音乐平台类型 */ declare type MusicServer = 'netease' | 'tencent' | 'kugou' | 'xiami' | 'baidu'; /** * 音乐类型 */ declare type MusicType = 'song' | 'playlist' | 'album' | 'search' | 'artist'; /** * 循环模式 */ declare type LoopMode = 'all' | 'one' | 'none'; /** * 播放顺序 */ declare type OrderMode = 'list' | 'random'; /** * 预加载模式 */ declare type PreloadMode = 'none' | 'metadata' | 'auto'; /** * 歌词类型 */ declare type LrcType = 0 | 1 | 2 | 3; /** * 本地音乐项 */ declare interface LocalMusicItem { /** 歌曲名称 */ name: string; /** 歌手名称 */ artist: string; /** 音乐文件 URL */ url: string; /** 封面图片 URL */ cover?: string; /** LRC 格式歌词 */ lrc?: string; } /** * MetingJS 配置 */ declare interface MetingConfig { /** Meting API 地址 */ api?: string; /** 音乐平台 */ server: MusicServer; /** 音乐类型 */ type: MusicType; /** 歌单/专辑/单曲 ID 或搜索关键词 */ id: string; /** 认证 token */ auth?: string; /** 备用 API 列表 */ fallbackApis?: string[]; /** MetingJS 脚本路径 */ jsPath?: string; } /** * 播放器配置 */ declare interface PlayerConfig { /** 是否自动播放 */ autoplay?: boolean; /** 主题色 */ theme?: string; /** 循环模式 */ loop?: LoopMode; /** 播放顺序 */ order?: OrderMode; /** 预加载模式 */ preload?: PreloadMode; /** 默认音量 (0-1) */ volume?: number; /** 是否互斥播放 */ mutex?: boolean; /** 歌词类型 */ lrcType?: LrcType; /** 歌词是否默认隐藏 */ lrcHidden?: boolean; /** 播放列表是否默认折叠 */ listFolded?: boolean; /** 播放列表最大高度 */ listMaxHeight?: string; /** localStorage 存储键名 */ storageName?: string; } /** * 响应式配置 */ declare interface ResponsiveConfig { /** 移动端配置 */ mobile: { /** 在移动端是否隐藏 */ hide: boolean; /** 移动端断点 */ breakpoint: number; }; } /** * 音乐播放器完整配置 */ declare interface MusicPlayerConfig { /** 启用音乐播放器功能 */ enable: boolean; /** APlayer CSS 文件路径 */ aplayerCss?: string; /** APlayer JS 文件路径 */ aplayerJs?: string; /** 使用模式 */ mode: 'meting' | 'local'; /** Meting API 配置 */ meting?: MetingConfig; /** 本地音乐配置 */ local?: { playlist: LocalMusicItem[]; }; /** APlayer 配置选项 */ player?: PlayerConfig; /** 响应式配置 */ responsive?: ResponsiveConfig; } /** * APlayer 事件类型 */ declare type APlayerEvent = | 'play' | 'pause' | 'ended' | 'loading' | 'loadstart' | 'loadeddata' | 'canplay' | 'playing' | 'seeked' | 'volumechange' | 'lrcshow' | 'lrchide'; /** * APlayer 实例接口 */ declare interface APlayerInstance { /** 播放 */ play(): void; /** 暂停 */ pause(): void; /** 跳转到指定时间 */ seek(time: number): void; /** 切换播放/暂停 */ toggle(): void; /** 播放下一首 */ skipForward(): void; /** 播放上一首 */ skipBack(): void; /** 设置音量 */ volume(percentage: number, isFire?: boolean): void; /** 监听事件 */ on(event: APlayerEvent, handler: () => void): void; /** 销毁实例 */ destroy(): void; /** 音频元素 */ audio: HTMLAudioElement; /** 播放器容器 */ container: HTMLElement; /** 歌词实例 */ lrc?: any; /** 是否暂停 */ paused: boolean; /** 当前音量 */ volume: number; } /** * MetingJS 元素 */ declare interface MetingJSElement extends HTMLElement { /** APlayer 实例 */ aplayer?: APlayerInstance; } /** * 音乐播放器插件主类 */ declare class MusicPlayerPlugin { /** * 构造函数 */ constructor(); /** * 初始化音乐播放器 * @param config - 播放器配置 */ init(config: MusicPlayerConfig): void; /** * 销毁音乐播放器 */ destroy(): void; /** * 获取 APlayer 实例 * @returns APlayer 实例数组 */ getPlayers(): APlayerInstance[]; /** * 获取指定索引的播放器实例 * @param index - 播放器索引 * @returns APlayer 实例 */ getPlayer(index: number): APlayerInstance | null; /** * 显示播放器 */ show(): void; /** * 隐藏播放器 */ hide(): void; /** * 切换播放器显示状态 */ toggle(): void; } /** * 初始化音乐播放器 * @param config - 播放器配置 */ declare function initMusicPlayer(config: MusicPlayerConfig): void; /** * 销毁音乐播放器 */ declare function destroyMusicPlayer(): void; /** * 获取音乐播放器实例 * @returns 音乐播放器实例 */ declare function getMusicPlayerInstance(): MusicPlayerPlugin; /** * 默认导出 */ declare const _default: { init: typeof initMusicPlayer; destroy: typeof destroyMusicPlayer; getInstance: typeof getMusicPlayerInstance; }; export { MusicPlayerPlugin, MusicPlayerConfig, MetingConfig, PlayerConfig, ResponsiveConfig, LocalMusicItem, APlayerInstance, MetingJSElement, MusicServer, MusicType, LoopMode, OrderMode, PreloadMode, LrcType, APlayerEvent, initMusicPlayer, destroyMusicPlayer, getMusicPlayerInstance }; export default _default;