/ packages / ui / src / services / MediaPlayerService / IMediaPlayerService.ts
IMediaPlayerService.ts
 1  import { Signal } from '@preact/signals-react';
 2  import { IVideoFile } from 'ipmc-interfaces';
 3  
 4  export const IMediaPlayerServiceSymbol = Symbol.for('MediaPlayerSymbol');
 5  
 6  /**
 7   * Service to controll media playback.
 8   */
 9  export interface IMediaPlayerService {
10  	/**
11  	 * Initializes a video player.
12  	 * @param el Video element to use.
13  	 * @param file File to play.
14  	 */
15  	initializeVideo(el: HTMLVideoElement, file: IVideoFile): () => void;
16  
17  	/**
18  	 * Toggles play state.
19  	 */
20  	togglePlay(): void;
21  
22  	/**
23  	 * Select a subtitle track.
24  	 * @param trackName Subtitle track to use (undefined if none).
25  	 */
26  	selectSubtitle(trackName?: string): void;
27  
28  	/**
29  	 * Available languages, only available for videos.
30  	 */
31  	languages: Signal<any[]>;
32  
33  	/**
34  	 * Available subtitles, only available for videos.
35  	 */
36  	subtitles: Signal<any[]>;
37  
38  	/**
39  	 * Whether or not media is currently playing.
40  	 */
41  	playing: Signal<boolean>;
42  }