fix: Increase reliability of media auto actions (e.g. play) (#1934)

Refactors media player handling entirely to make the code more
consistent and less boilerplate. Add testing for media player actions.

- Closes #1921
- Closes #1916
This commit is contained in:
Dermot Duffy
2025-03-03 20:59:01 -08:00
committed by GitHub
parent d4650eae8a
commit 3b77b11196
58 changed files with 1972 additions and 1165 deletions
+9 -2
View File
@@ -39,7 +39,8 @@ export interface MediaLoadedInfo {
width: number;
height: number;
technology?: MediaTechnology[];
player?: AdvancedCameraCardMediaPlayer;
mediaPlayerController?: MediaPlayerController;
capabilities?: MediaLoadedCapabilities;
}
@@ -63,7 +64,7 @@ export type WebkitHTMLVideoElement = HTMLVideoElement & {
export type FullscreenElement = HTMLElement;
export interface AdvancedCameraCardMediaPlayer {
export interface MediaPlayerController {
play(): Promise<void>;
pause(): Promise<void>;
mute(): Promise<void>;
@@ -77,6 +78,12 @@ export interface AdvancedCameraCardMediaPlayer {
getFullscreenElement(): FullscreenElement | null;
}
export interface MediaPlayer {
getMediaPlayerController(): Promise<MediaPlayerController | null>;
}
export type MediaPlayerElement<T extends HTMLElement = HTMLElement> = T & MediaPlayer;
export type LovelaceCardWithEditor = LovelaceCard & {
constructor: {
getConfigElement(): Promise<LovelaceCardEditor>;