feat(core): Support AirPlay on MSE (#1692)

This commit is contained in:
Santiago Puppo
2026-06-30 10:31:49 -07:00
committed by GitHub
parent 5d44c4debf
commit 3f2f4a4a5a
6 changed files with 301 additions and 13 deletions
-1
View File
@@ -44,7 +44,6 @@ export type {
export {
isWebKitAirPlayCapable,
supportsWebKitAirPlay,
type WebKitAirPlayMedia,
type WebKitDocument,
type WebKitFullscreenElement,
type WebKitPresentationMode,
+3 -6
View File
@@ -1,13 +1,10 @@
/** WebKit-only addition to HTMLMediaElement exposing the active AirPlay flag. */
export interface WebKitAirPlayMedia extends HTMLMediaElement {
readonly webkitCurrentPlaybackTargetIsWireless: boolean;
}
/** WebKit presentation mode values for iOS Safari. */
export type WebKitPresentationMode = 'inline' | 'fullscreen' | 'picture-in-picture';
/** Extended HTMLVideoElement with WebKit vendor APIs. */
export interface WebKitVideoElement extends HTMLVideoElement {
/** Whether the current playback target is wireless (WebKit) */
webkitCurrentPlaybackTargetIsWireless?: boolean;
/** Current WebKit presentation mode (iOS Safari). */
webkitPresentationMode?: WebKitPresentationMode;
/** Set WebKit presentation mode (iOS Safari). */
@@ -39,6 +36,6 @@ export function supportsWebKitAirPlay(): boolean {
}
/** Whether `media` exposes WebKit's AirPlay APIs. */
export function isWebKitAirPlayCapable(media: EventTarget): media is WebKitAirPlayMedia {
export function isWebKitAirPlayCapable(media: EventTarget): media is WebKitVideoElement {
return supportsWebKitAirPlay() && 'webkitCurrentPlaybackTargetIsWireless' in media;
}