@plutotcool/vue-freecaster
Version:
Freecaster video player integration for vue
94 lines (92 loc) • 3 kB
TypeScript
/**
* @module usePlayer
*/
import { Ref, MaybeRefOrGetter, MaybeRef, HTMLAttributes } from 'vue';
import { Player, PlayerOptions, PlayerEvents } from '../types/Player';
type PlayerAttributes = HTMLAttributes & Record<string, string>;
export interface UsePlayerParameters {
/**
* Freecaster player options
* @default undefined
*/
options?: MaybeRef<PlayerOptions | undefined>;
/**
* Wether the player is enabled
* @default true
*/
enabled?: MaybeRefOrGetter<boolean | undefined>;
/**
* Optional paused model that reads and controls the player state
* @default undefined
*/
paused?: Ref<boolean>;
/**
* Optional muted model that reads and controls the player state
* @default undefined
*/
muted?: Ref<boolean>;
/**
* Optional currentSubtitles model that reads and controls the player state
* @default undefined
*/
currentSubtitles?: Ref<TextTrack | undefined>;
/**
* Optional subtitles model that only reads the player state
* @default undefined
*/
subtitles?: Ref<TextTrack[]>;
/**
* Optional volume model that reads and controls the player state
* @default undefined
*/
volume?: Ref<number>;
/**
* Optional currentTime model that reads and controls the player state
* @default undefined
*/
currentTime?: Ref<number>;
/**
* Optional fullscreen model that reads and controls the player state
* @default undefined
*/
fullscreen?: Ref<boolean>;
/**
* Optional readyState model that only reads the player state
* @default undefined
*/
readyState?: Ref<number>;
/**
* Optional player model returned by the composable, fallbacks to an empty ref
* @default undefined
*/
player?: MaybeRef<Player | undefined>;
/**
* Optional container element ref returned by the composables, fallbacks to an
* empty ref
* @default undefined
*/
element?: MaybeRef<HTMLElement | undefined>;
/**
* Default event listener, called for all events
* @default undefined
*/
emit?: <Type extends keyof PlayerEvents = keyof PlayerEvents>(type: Type, ...args: PlayerEvents[Type]) => void;
/**
* Event listeners
* @default undefined
*/
listeners?: {
[Name in `on${Capitalize<keyof PlayerEvents>}`]?: (...args: PlayerEvents[Name extends `on${infer Event}` ? Uncapitalize<Event> : never]) => void;
};
}
export interface UsePlayerContext extends UsePlayerParameters {
listeners: Required<UsePlayerParameters>['listeners'];
options: Ref<PlayerOptions | undefined>;
enabled: Ref<boolean | undefined>;
player: Ref<Player | undefined>;
element: Ref<HTMLElement | undefined>;
attributes: Ref<PlayerAttributes>;
key: Ref<number>;
}
export declare function usePlayer(parameters?: UsePlayerParameters): UsePlayerContext;
export type { Player, PlayerOptions, PlayerEvents };