From c0a3277f4cbc7f2abafa1b4f166049d57bdb1ee5 Mon Sep 17 00:00:00 2001 From: Wesley Luyten Date: Tue, 31 Mar 2026 20:35:33 -0500 Subject: [PATCH] fix(core): fix media proxy for React (#1169) --- packages/core/src/core/media/proxy.ts | 22 ++++++++++++++++++- .../core/src/dom/media/native-hls/index.ts | 8 +++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/core/src/core/media/proxy.ts b/packages/core/src/core/media/proxy.ts index 77d7e769..1c2c825b 100644 --- a/packages/core/src/core/media/proxy.ts +++ b/packages/core/src/core/media/proxy.ts @@ -16,7 +16,7 @@ export const ProxyMixin = ( PrimaryClass: AnyConstructor, ...AdditionalClasses: AnyConstructor[] ) => { - class MediaProxy extends EventTarget { + class MediaProxy { #target: EventTarget | null = null; get target() { @@ -47,6 +47,26 @@ export const ProxyMixin = ( if (!this.#target) return; this.#target = null; } + + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions + ): void { + this.#target?.addEventListener(type, listener, options); + } + + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions + ): void { + this.#target?.removeEventListener(type, listener, options); + } + + dispatchEvent(event: Event): boolean { + return this.#target?.dispatchEvent(event) ?? false; + } } for (const Class of [PrimaryClass, ...AdditionalClasses]) { diff --git a/packages/core/src/dom/media/native-hls/index.ts b/packages/core/src/dom/media/native-hls/index.ts index 2e1c4fd9..ef5a73a6 100644 --- a/packages/core/src/dom/media/native-hls/index.ts +++ b/packages/core/src/dom/media/native-hls/index.ts @@ -47,6 +47,14 @@ export class NativeHlsMediaDelegate extends EventTarget { attach(target: HTMLMediaElement) { this.#target = target; + + if (this.preload !== this.#target.preload) { + this.#target.preload = this.preload; + } + + if (this.src !== this.#target.src) { + this.#target.src = this.src; + } } detach() {