UNPKG

rx-player

Version:
38 lines (37 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = disableRemotePlaybackOnManagedMediaSource; var browser_compatibility_types_1 = require("./browser_compatibility_types"); /** * Temporarily disables remote playback on a media element by setting the * `disableRemotePlayback` attribute to `true` when using a `ManagedMediaSource`. * The original value of the `disableRemotePlayback` attribute is restored when * the cancellation signal is triggered. * * This is useful when the `ManagedMediaSource` is being used and * the media element needs to ensure that remote playback (e.g., Airplay) is disabled * during the playback session. * @param {HTMLElement} mediaElement - The media element whose `disableRemotePlayback` * attribute will be modified. * @param {CancellationSignal} cancellationSignal - The signal that, when triggered, * restores the `disableRemotePlayback` attribute to its original value. */ function disableRemotePlaybackOnManagedMediaSource(mediaElement, cancellationSignal) { if (browser_compatibility_types_1.default.isManagedMediaSource && "disableRemotePlayback" in mediaElement) { var disableRemotePlaybackPreviousValue_1 = mediaElement.disableRemotePlayback; cancellationSignal.register(function () { /** * Restore the `disableRemotePlayback` attribute to its previous value. * This ensures that the media element's state is the same as it was before * calling `RxPlayer.loadVideo` in the application. */ mediaElement.disableRemotePlayback = disableRemotePlaybackPreviousValue_1; }); /** * Using ManagedMediaSource needs to disableRemotePlayback or to provide * an Airplay source alternative, such as HLS. * https://github.com/w3c/media-source/issues/320 */ mediaElement.disableRemotePlayback = true; } }