diff --git a/types/aplayer.d.ts b/types/aplayer.d.ts index ebbcf295..f0ec3180 100644 --- a/types/aplayer.d.ts +++ b/types/aplayer.d.ts @@ -1,160 +1,156 @@ import { VNode } from 'vue'; -declare global { - namespace APlayer { - export interface InstallOptions { - defaultCover?: string; - productionTip?: boolean; - } +export interface InstallOptions { + defaultCover?: string; + productionTip?: boolean; +} - export type LoopMode = 'all' | 'one' | 'none'; - export type OrderMode = 'list' | 'random'; - export type Preload = 'none' | 'metadata' | 'auto'; - export type AudioType = 'auto' | 'hls' | 'normal'; +export type LoopMode = 'all' | 'one' | 'none'; +export type OrderMode = 'list' | 'random'; +export type Preload = 'none' | 'metadata' | 'auto'; +export type AudioType = 'auto' | 'hls' | 'normal'; - export enum LrcType { - file = 3, - html = 2, // not support - string = 1, - disabled = 0, - } +export enum LrcType { + file = 3, + html = 2, // not support + string = 1, + disabled = 0, +} - export interface Audio { - [index: number]: this; +export interface Audio { + [index: number]: this; - id?: number; - name: string | VNode; // eslint-disable-line no-restricted-globals - artist: string | VNode; - url: string; - cover?: string; - lrc?: string; - theme?: string; - type?: AudioType; - speed?: number; - } + id?: number; + name: string | VNode; // eslint-disable-line no-restricted-globals + artist: string | VNode; + url: string; + cover?: string; + lrc?: string; + theme?: string; + type?: AudioType; + speed?: number; +} - export interface Options { - fixed?: boolean; - mini?: boolean; - autoplay?: boolean; - theme?: string; - loop?: LoopMode; - order?: OrderMode; - preload?: Preload; - volume?: number; - audio: Audio | Audio[]; - customAudioType?: any; - mutex?: boolean; - lrcType?: LrcType; - listFolded?: boolean; - listMaxHeight?: number; - storageName?: string; - } +export interface Options { + fixed?: boolean; + mini?: boolean; + autoplay?: boolean; + theme?: string; + loop?: LoopMode; + order?: OrderMode; + preload?: Preload; + volume?: number; + audio: Audio | Audio[]; + customAudioType?: any; + mutex?: boolean; + lrcType?: LrcType; + listFolded?: boolean; + listMaxHeight?: number; + storageName?: string; +} - export interface Events { - onAbort: Event; - onCanplay: Event; - onCanplaythrough: Event; - onDurationchange: Event; - onEmptied: Event; - onEnded: Event; - onError: Event; - onLoadeddata: Event; - onLoadedmetadata: Event; - onLoadstart: Event; - onPause: Event; - onPlay: Event; - onPlaying: Event; - onProgress: Event; - onRatechange: Event; - onReadystatechange: Event; - onSeeked: Event; - onSeeking: Event; - onStalled: Event; - onSuspend: Event; - onTimeupdate: Event; - onVolumechange: Event; - onWaiting: Event; +export interface Events { + onAbort: Event; + onCanplay: Event; + onCanplaythrough: Event; + onDurationchange: Event; + onEmptied: Event; + onEnded: Event; + onError: Event; + onLoadeddata: Event; + onLoadedmetadata: Event; + onLoadstart: Event; + onPause: Event; + onPlay: Event; + onPlaying: Event; + onProgress: Event; + onRatechange: Event; + onReadystatechange: Event; + onSeeked: Event; + onSeeking: Event; + onStalled: Event; + onSuspend: Event; + onTimeupdate: Event; + onVolumechange: Event; + onWaiting: Event; - onListSwitch: Audio; - onListShow: void; - onListHide: void; - onListAdd: void; - onListRemove: void; - onListClear: void; - onNoticeShow: void; - onNoticeHide: void; - onLrcShow: void; - onLrcHide: void; - onDestroy: void; - } + onListSwitch: Audio; + onListShow: void; + onListHide: void; + onListAdd: void; + onListRemove: void; + onListClear: void; + onNoticeShow: void; + onNoticeHide: void; + onLrcShow: void; + onLrcHide: void; + onDestroy: void; +} - export interface Settings { - currentTime: number; - duration: number | null; - paused: boolean; - mini: boolean; - lrc: boolean; - list: boolean; - volume: number; - loop: LoopMode; - order: OrderMode; - music: Audio | null; - } +export interface Settings { + currentTime: number; + duration: number | null; + paused: boolean; + mini: boolean; + lrc: boolean; + list: boolean; + volume: number; + loop: LoopMode; + order: OrderMode; + music: Audio | null; +} - export interface Media { - /** 返回表示可用音频轨道的 AudioTrackList 对象。 */ - readonly audioTracks: AudioTrackList; - /** 设置或返回是否在就绪(加载完成)后随即播放音频。 */ - readonly autoplay: boolean; - /** 返回表示音频已缓冲部分的 TimeRanges 对象。 */ - readonly buffered: TimeRanges; - /** 设置或返回音频是否应该显示控件(比如播放/暂停等)。 */ - readonly controls: boolean; - /** 设置或返回音频的 CORS 设置。 */ - readonly crossOrigin: string | null; - /** 返回当前音频的 URL。 */ - readonly currentSrc: string; - /** 设置或返回音频中的当前播放位置(以秒计)。 */ - readonly currentTime: number; - /** 设置或返回音频默认是否静音。 */ - readonly defaultMuted: boolean; - /** 设置或返回音频的默认播放速度。 */ - readonly defaultPlaybackRate: number; - /** 返回音频的长度(以秒计)。 */ - readonly duration: number; - /** 返回音频的播放是否已结束。 */ - readonly ended: boolean; - /** 返回表示音频错误状态的 MediaError 对象。 */ - readonly error: MediaError | null; - /** 设置或返回音频是否应在结束时再次播放。 */ - readonly loop: boolean; - /** 设置或返回音频所属媒介组合的名称。 */ - readonly mediaKeys: MediaKeys | null; - /** 设置或返回是否关闭声音。 */ - readonly muted: boolean; - /** 返回音频的当前网络状态。 */ - readonly networkState: number; - /** 设置或返回音频是否暂停。 */ - readonly paused: boolean; - /** 设置或返回音频播放的速度。 */ - readonly playbackRate: number; - /** 返回表示音频已播放部分的 TimeRanges 对象。 */ - readonly played: TimeRanges; - /** 设置或返回音频的 preload 属性的值。 */ - readonly preload: string; - /** 返回音频当前的就绪状态。 */ - readonly readyState: number; - /** 返回表示音频可寻址部分的 TimeRanges 对象。 */ - readonly seekable: TimeRanges; - /** 返回用户当前是否正在音频中进行查找。 */ - readonly seeking: boolean; - /** 设置或返回音频的 src 属性的值。 */ - readonly src: string; - /** 返回表示可用文本轨道的 TextTrackList 对象。 */ - readonly textTracks: TextTrackList; - /** 设置或返回音频的音量。 */ - readonly volume: number; - } - } +export interface Media { + /** 返回表示可用音频轨道的 AudioTrackList 对象。 */ + readonly audioTracks: AudioTrackList; + /** 设置或返回是否在就绪(加载完成)后随即播放音频。 */ + readonly autoplay: boolean; + /** 返回表示音频已缓冲部分的 TimeRanges 对象。 */ + readonly buffered: TimeRanges; + /** 设置或返回音频是否应该显示控件(比如播放/暂停等)。 */ + readonly controls: boolean; + /** 设置或返回音频的 CORS 设置。 */ + readonly crossOrigin: string | null; + /** 返回当前音频的 URL。 */ + readonly currentSrc: string; + /** 设置或返回音频中的当前播放位置(以秒计)。 */ + readonly currentTime: number; + /** 设置或返回音频默认是否静音。 */ + readonly defaultMuted: boolean; + /** 设置或返回音频的默认播放速度。 */ + readonly defaultPlaybackRate: number; + /** 返回音频的长度(以秒计)。 */ + readonly duration: number; + /** 返回音频的播放是否已结束。 */ + readonly ended: boolean; + /** 返回表示音频错误状态的 MediaError 对象。 */ + readonly error: MediaError | null; + /** 设置或返回音频是否应在结束时再次播放。 */ + readonly loop: boolean; + /** 设置或返回音频所属媒介组合的名称。 */ + readonly mediaKeys: MediaKeys | null; + /** 设置或返回是否关闭声音。 */ + readonly muted: boolean; + /** 返回音频的当前网络状态。 */ + readonly networkState: number; + /** 设置或返回音频是否暂停。 */ + readonly paused: boolean; + /** 设置或返回音频播放的速度。 */ + readonly playbackRate: number; + /** 返回表示音频已播放部分的 TimeRanges 对象。 */ + readonly played: TimeRanges; + /** 设置或返回音频的 preload 属性的值。 */ + readonly preload: string; + /** 返回音频当前的就绪状态。 */ + readonly readyState: number; + /** 返回表示音频可寻址部分的 TimeRanges 对象。 */ + readonly seekable: TimeRanges; + /** 返回用户当前是否正在音频中进行查找。 */ + readonly seeking: boolean; + /** 设置或返回音频的 src 属性的值。 */ + readonly src: string; + /** 返回表示可用文本轨道的 TextTrackList 对象。 */ + readonly textTracks: TextTrackList; + /** 设置或返回音频的音量。 */ + readonly volume: number; } diff --git a/types/index.d.ts b/types/index.d.ts index beea244d..c52dabc7 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -2,18 +2,25 @@ import _Vue from 'vue'; import * as Vue from 'vue-tsx-support'; -export class APlayer extends Vue.Component { +import * as _APlayer from './aplayer'; + +export * from './aplayer'; + +// eslint-disable-next-line no-use-before-define +export as namespace APlayer; + +export class APlayer extends Vue.Component<_APlayer.Options, _APlayer.Events> { static readonly version: string; readonly $refs: { container: HTMLDivElement; }; - readonly currentMusic: APlayer.Audio; + readonly currentMusic: _APlayer.Audio; - readonly currentSettings: APlayer.Settings; + readonly currentSettings: _APlayer.Settings; - readonly media: APlayer.Media; + readonly media: _APlayer.Media; play(): Promise; @@ -46,5 +53,5 @@ export class APlayer extends Vue.Component { export default function install( Vue: typeof _Vue, - options?: APlayer.InstallOptions + options?: _APlayer.InstallOptions ): void;