UNPKG

@plutotcool/vue-freecaster

Version:

Freecaster video player integration for vue

94 lines (92 loc) 3 kB
/** * @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 };