react-native-theoplayer 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -1
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +9 -15
- package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +12 -0
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +2 -1
- package/ios/THEOplayerRCTBridge.m +3 -0
- package/ios/THEOplayerRCTMainEventHandler.swift +1 -1
- package/ios/THEOplayerRCTPlayerAPI.swift +15 -0
- package/ios/THEOplayerRCTTypeUtils.swift +26 -0
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +49 -24
- package/lib/commonjs/api/abr/ABRConfiguration.js +25 -0
- package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/commonjs/api/player/THEOplayer.js +18 -0
- package/lib/commonjs/api/player/THEOplayer.js.map +1 -1
- package/lib/commonjs/api/track/Track.js +5 -1
- package/lib/commonjs/api/track/Track.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +2 -6
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/NativePlayerState.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +8 -0
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +112 -53
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/module/api/abr/ABRConfiguration.js +19 -0
- package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/module/api/player/THEOplayer.js +16 -1
- package/lib/module/api/player/THEOplayer.js.map +1 -1
- package/lib/module/api/track/Track.js +4 -1
- package/lib/module/api/track/Track.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +2 -6
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/NativePlayerState.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +9 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js +112 -53
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/typescript/api/abr/ABRConfiguration.d.ts +5 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +22 -0
- package/lib/typescript/api/track/Track.d.ts +1 -0
- package/lib/typescript/internal/adapter/NativePlayerState.d.ts +2 -0
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +3 -1
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +7 -5
- package/package.json +9 -4
- package/react-native-theoplayer.podspec +1 -1
- package/src/api/abr/ABRConfiguration.ts +5 -1
- package/src/api/player/THEOplayer.ts +24 -0
- package/src/api/track/Track.ts +5 -1
- package/src/internal/THEOplayerView.web.tsx +2 -6
- package/src/internal/adapter/NativePlayerState.ts +2 -0
- package/src/internal/adapter/THEOplayerAdapter.ts +11 -0
- package/src/internal/adapter/THEOplayerWebAdapter.ts +106 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["THEOplayer.ts"],"sourcesContent":["import type { EventDispatcher } from '../event/EventDispatcher';\nimport type { PlayerEventMap } from './PlayerEventMap';\nimport type { ABRConfiguration } from '../abr/ABRConfiguration';\nimport type { SourceDescription } from '../source/SourceDescription';\nimport type { AdsAPI } from '../ads/AdsAPI';\nimport type { CastAPI } from '../cast/CastAPI';\nimport type { MediaTrack } from '../track/MediaTrack';\nimport type { TextTrack } from '../track/TextTrack';\nimport type { TimeRange } from '../timeranges/TimeRange';\nimport type { TextTrackStyle } from '../track/TextTrackStyle';\nimport type { PresentationMode } from '../presentation/PresentationMode';\nimport type { PiPConfiguration } from '../pip/PiPConfiguration';\nimport type { BackgroundAudioConfiguration } from '../backgroundAudio/BackgroundAudioConfiguration';\n\nexport type PreloadType = 'none' | 'metadata' | 'auto' | '';\n\nexport type NativeHandleType = unknown;\n\n/**\n * The THEOplayer API.\n */\nexport interface THEOplayer extends EventDispatcher<PlayerEventMap> {\n /**\n * The player's adaptive bitrate (ABR) configuration.\n *\n * @remarks\n * <br/> - This property is supported on Android & Web platforms only.\n */\n readonly abr: ABRConfiguration | undefined;\n\n /**\n * A source description that determines the current media resource.\n */\n source: SourceDescription | undefined;\n\n /**\n * Start or resume playback.\n */\n play(): void;\n\n /**\n * Pause playback.\n */\n pause(): void;\n\n /**\n * Whether the player is paused.\n */\n readonly paused: boolean;\n\n /**\n * Whether the player should immediately start playback after source change.\n */\n autoplay: boolean;\n\n /**\n * The preload setting of the player.\n */\n preload: PreloadType;\n\n /**\n * Returns a list of TimeRanges that represents the ranges of the media resource that are seekable by the player.\n */\n seekable: TimeRange[];\n\n /**\n * Returns a list of TimeRanges that represents the ranges of the media resource that are buffered by the player.\n */\n buffered: TimeRange[];\n\n /**\n * Used to set the playback rate of the media.\n *\n * @example\n * <br/> - `playbackRate = 0.70` will slow down the playback rate of the media by 30%.\n * <br/> - `playbackRate = 1.25` will speed up the playback rate of the media by 25%.\n *\n * @remarks\n * <br/> - Playback rate is represented by a number where `1` is default playback speed.\n * <br/> - Playback rate must be a positive number.\n * <br/> - It is recommended that you limit the range to between 0.5 and 4.\n */\n playbackRate: number;\n\n /**\n * Used to set the volume of the audio.\n *\n * @remarks\n * <br/> - Volume is represented by a floating point number between `0.0` and `1.0`.\n */\n volume: number;\n\n /**\n * Determines whether audio is muted.\n */\n muted: boolean;\n\n /**\n * Whether the player is seeking.\n */\n readonly seeking: boolean;\n\n /**\n * The PresentationMode of the player. Can be switched to: `picture-in-picture`, `fullscreen` or `inline`\n */\n presentationMode: PresentationMode;\n\n /**\n * List of audio tracks of the current source.\n */\n audioTracks: MediaTrack[];\n\n /**\n * List of video tracks of the current source.\n */\n videoTracks: MediaTrack[];\n\n /**\n * List of text tracks of the current source.\n */\n textTracks: TextTrack[];\n\n /**\n * Used to set the current selected text track by passing its `uid`, or `undefined` to select none.\n */\n selectedTextTrack: number | undefined;\n\n /**\n * The text track style API.\n *\n * @remarks\n * Only available for Web.\n */\n readonly textTrackStyle: TextTrackStyle;\n\n /**\n * Used to set the current selected video track by passing its `uid`, or `undefined` to select none.\n */\n selectedVideoTrack: number | undefined;\n\n /**\n * Used to set the current selected video quality by passing its `uid`, or `undefined` to select none.\n */\n targetVideoQuality: number | number[] | undefined;\n\n /**\n * Used to set the current selected audio track by passing its `uid`, or `undefined` to select none.\n */\n selectedAudioTrack: number | undefined;\n\n /**\n * The current playback position of the media, in milliseconds.\n */\n currentTime: number;\n\n /**\n * The active configuration for PiP.\n */\n pipConfiguration: PiPConfiguration;\n\n /**\n * The active configuration for PiP.\n */\n backgroundAudioConfiguration: BackgroundAudioConfiguration;\n\n /**\n * The duration of the media, in milliseconds.\n */\n readonly duration: number;\n\n /**\n * The API for advertisements.\n */\n readonly ads: AdsAPI;\n\n /**\n * The API for casting devices.\n */\n readonly cast: CastAPI;\n\n /**\n * Native player handle.\n */\n readonly nativeHandle: NativeHandleType;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["AspectRatio"],"sources":["THEOplayer.ts"],"sourcesContent":["import type { EventDispatcher } from '../event/EventDispatcher';\nimport type { PlayerEventMap } from './PlayerEventMap';\nimport type { ABRConfiguration } from '../abr/ABRConfiguration';\nimport type { SourceDescription } from '../source/SourceDescription';\nimport type { AdsAPI } from '../ads/AdsAPI';\nimport type { CastAPI } from '../cast/CastAPI';\nimport type { MediaTrack } from '../track/MediaTrack';\nimport type { TextTrack } from '../track/TextTrack';\nimport type { TimeRange } from '../timeranges/TimeRange';\nimport type { TextTrackStyle } from '../track/TextTrackStyle';\nimport type { PresentationMode } from '../presentation/PresentationMode';\nimport type { PiPConfiguration } from '../pip/PiPConfiguration';\nimport type { BackgroundAudioConfiguration } from '../backgroundAudio/BackgroundAudioConfiguration';\n\nexport type PreloadType = 'none' | 'metadata' | 'auto' | '';\n\n/**\n * Specifies an aspect ratio for the player.\n *\n * <br/> - `FIT` (default): Scales the player so that all content fits inside its bounding box, keeping the original aspect ratio of the content..\n * <br/> - `FILL`: Scales the player so that all content fits inside the bounding box, which will be stretched to fill it entirely.\n * <br/> - `ASPECT_FILL`: Scales the player so that the content fills up the entire bounding box, keeping the original aspect ratio of the content.\n *\n * @public\n * @defaultValue `'FIT'`\n */\nexport enum AspectRatio {\n FIT = 'fit',\n FILL = 'fill',\n ASPECT_FILL = 'aspectFill',\n}\n\nexport type NativeHandleType = unknown;\n\n/**\n * The THEOplayer API.\n */\nexport interface THEOplayer extends EventDispatcher<PlayerEventMap> {\n /**\n * The player's adaptive bitrate (ABR) configuration.\n *\n * @remarks\n * <br/> - This property is supported on Android & Web platforms only.\n */\n readonly abr: ABRConfiguration | undefined;\n\n /**\n * A source description that determines the current media resource.\n */\n source: SourceDescription | undefined;\n\n /**\n * Start or resume playback.\n */\n play(): void;\n\n /**\n * Pause playback.\n */\n pause(): void;\n\n /**\n * Whether the player is paused.\n */\n readonly paused: boolean;\n\n /**\n * Whether the player should immediately start playback after source change.\n */\n autoplay: boolean;\n\n /**\n * The preload setting of the player.\n */\n preload: PreloadType;\n\n /**\n * Returns a list of TimeRanges that represents the ranges of the media resource that are seekable by the player.\n */\n seekable: TimeRange[];\n\n /**\n * Returns a list of TimeRanges that represents the ranges of the media resource that are buffered by the player.\n */\n buffered: TimeRange[];\n\n /**\n * Used to set the playback rate of the media.\n *\n * @example\n * <br/> - `playbackRate = 0.70` will slow down the playback rate of the media by 30%.\n * <br/> - `playbackRate = 1.25` will speed up the playback rate of the media by 25%.\n *\n * @remarks\n * <br/> - Playback rate is represented by a number where `1` is default playback speed.\n * <br/> - Playback rate must be a positive number.\n * <br/> - It is recommended that you limit the range to between 0.5 and 4.\n */\n playbackRate: number;\n\n /**\n * Used to set the volume of the audio.\n *\n * @remarks\n * <br/> - Volume is represented by a floating point number between `0.0` and `1.0`.\n */\n volume: number;\n\n /**\n * Determines whether audio is muted.\n */\n muted: boolean;\n\n /**\n * Whether the player is seeking.\n */\n readonly seeking: boolean;\n\n /**\n * The PresentationMode of the player. Can be switched to: `picture-in-picture`, `fullscreen` or `inline`\n */\n presentationMode: PresentationMode;\n\n /**\n * List of audio tracks of the current source.\n */\n audioTracks: MediaTrack[];\n\n /**\n * List of video tracks of the current source.\n */\n videoTracks: MediaTrack[];\n\n /**\n * List of text tracks of the current source.\n */\n textTracks: TextTrack[];\n\n /**\n * Used to set the current selected text track by passing its `uid`, or `undefined` to select none.\n */\n selectedTextTrack: number | undefined;\n\n /**\n * The text track style API.\n *\n * @remarks\n * Only available for Web.\n */\n readonly textTrackStyle: TextTrackStyle;\n\n /**\n * Used to set the current selected video track by passing its `uid`, or `undefined` to select none.\n */\n selectedVideoTrack: number | undefined;\n\n /**\n * Used to set the current selected video quality by passing its `uid`, or `undefined` to select none.\n */\n targetVideoQuality: number | number[] | undefined;\n\n /**\n * Used to set the current selected audio track by passing its `uid`, or `undefined` to select none.\n */\n selectedAudioTrack: number | undefined;\n\n /**\n * The current playback position of the media, in milliseconds.\n */\n currentTime: number;\n\n /**\n * Used to set the aspect ratio of the player.\n *\n * @remarks\n * Only available for iOS and Android.\n */\n aspectRatio: AspectRatio;\n\n /**\n * The active configuration for PiP.\n */\n pipConfiguration: PiPConfiguration;\n\n /**\n * The active configuration for PiP.\n */\n backgroundAudioConfiguration: BackgroundAudioConfiguration;\n\n /**\n * The duration of the media, in milliseconds.\n */\n readonly duration: number;\n\n /**\n * The API for advertisements.\n */\n readonly ads: AdsAPI;\n\n /**\n * The API for casting devices.\n */\n readonly cast: CastAPI;\n\n /**\n * Native player handle.\n */\n readonly nativeHandle: NativeHandleType;\n}\n"],"mappings":"AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,WAAW;AAItB,WAJWA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;AAAA,GAAXA,WAAW,KAAXA,WAAW"}
|
|
@@ -14,6 +14,9 @@ export function removeTrack(trackList, track) {
|
|
|
14
14
|
return trackList && track ? trackList.filter(t => t.uid !== track.uid) : trackList;
|
|
15
15
|
}
|
|
16
16
|
export function addTrack(trackList, track) {
|
|
17
|
-
return trackList && track && !hasTrack(trackList, track) ? [...trackList, track] : trackList;
|
|
17
|
+
return trackList && track && !hasTrack(trackList, track) ? sortTracks([...trackList, track]) : trackList;
|
|
18
|
+
}
|
|
19
|
+
export function sortTracks(trackList) {
|
|
20
|
+
return (trackList === null || trackList === void 0 ? void 0 : trackList.sort((t1, t2) => t1.uid - t2.uid)) || [];
|
|
18
21
|
}
|
|
19
22
|
//# sourceMappingURL=Track.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["hasTrack","trackList","track","find","t","uid","removeTrack","filter","addTrack"],"sources":["Track.ts"],"sourcesContent":["/**\n * Represents a track of a media resource.\n *\n * @remarks\n * <br/> - A specific track type (e.g. {@link TextTrack}) will always be used.\n *\n * @public\n */\nexport interface Track {\n /**\n * The kind of the track.\n *\n * @remarks\n * <br/> - The values for this property depend on the specific type of the track.\n */\n readonly kind: string;\n\n /**\n * The label of the track.\n */\n label: string;\n\n /**\n * The identifier of the track.\n *\n * @remarks\n * <br/> - This identifier can be used to distinguish between related tracks, e.g. tracks in the same list.\n *\n * @privateRemarks\n * <br/> - This identifier is a randomly generated string.\n */\n readonly id: string;\n\n /**\n * A unique identifier of the track.\n *\n * @remarks\n * <br/> - This identifier is unique across tracks of a THEOplayer instance and can be used to distinguish between tracks.\n * <br/> - This identifier is a randomly generated number.\n */\n readonly uid: number;\n\n /**\n * The language of the track.\n */\n readonly language: string;\n}\n\nexport function hasTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): boolean {\n return !!(trackList && track && trackList.find((t) => t.uid === track.uid));\n}\n\nexport function removeTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): TTrack[] {\n return trackList && track ? trackList.filter((t) => t.uid !== track.uid) : trackList;\n}\n\nexport function addTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): TTrack[] {\n return trackList && track && !hasTrack(trackList, track) ? [...trackList, track] : trackList;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyCA,OAAO,SAASA,QAAQA,CAAuBC,SAAmB,EAAEC,KAAa,EAAW;EAC1F,OAAO,CAAC,EAAED,SAAS,IAAIC,KAAK,IAAID,SAAS,CAACE,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKH,KAAK,CAACG,GAAG,CAAC,CAAC;AAC7E;AAEA,OAAO,SAASC,WAAWA,CAAuBL,SAAmB,EAAEC,KAAa,EAAY;EAC9F,OAAOD,SAAS,IAAIC,KAAK,GAAGD,SAAS,CAACM,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKH,KAAK,CAACG,GAAG,CAAC,GAAGJ,SAAS;AACtF;AAEA,OAAO,SAASO,QAAQA,CAAuBP,SAAmB,EAAEC,KAAa,EAAY;EAC3F,OAAOD,SAAS,IAAIC,KAAK,IAAI,CAACF,QAAQ,CAACC,SAAS,EAAEC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"names":["hasTrack","trackList","track","find","t","uid","removeTrack","filter","addTrack","sortTracks","sort","t1","t2"],"sources":["Track.ts"],"sourcesContent":["/**\n * Represents a track of a media resource.\n *\n * @remarks\n * <br/> - A specific track type (e.g. {@link TextTrack}) will always be used.\n *\n * @public\n */\nexport interface Track {\n /**\n * The kind of the track.\n *\n * @remarks\n * <br/> - The values for this property depend on the specific type of the track.\n */\n readonly kind: string;\n\n /**\n * The label of the track.\n */\n label: string;\n\n /**\n * The identifier of the track.\n *\n * @remarks\n * <br/> - This identifier can be used to distinguish between related tracks, e.g. tracks in the same list.\n *\n * @privateRemarks\n * <br/> - This identifier is a randomly generated string.\n */\n readonly id: string;\n\n /**\n * A unique identifier of the track.\n *\n * @remarks\n * <br/> - This identifier is unique across tracks of a THEOplayer instance and can be used to distinguish between tracks.\n * <br/> - This identifier is a randomly generated number.\n */\n readonly uid: number;\n\n /**\n * The language of the track.\n */\n readonly language: string;\n}\n\nexport function hasTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): boolean {\n return !!(trackList && track && trackList.find((t) => t.uid === track.uid));\n}\n\nexport function removeTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): TTrack[] {\n return trackList && track ? trackList.filter((t) => t.uid !== track.uid) : trackList;\n}\n\nexport function addTrack<TTrack extends Track>(trackList: TTrack[], track: TTrack): TTrack[] {\n return trackList && track && !hasTrack(trackList, track) ? sortTracks([...trackList, track]) : trackList;\n}\n\nexport function sortTracks<TTrack extends Track>(trackList?: TTrack[]): TTrack[] {\n return trackList?.sort((t1: TTrack, t2: TTrack) => t1.uid - t2.uid) || [];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyCA,OAAO,SAASA,QAAQA,CAAuBC,SAAmB,EAAEC,KAAa,EAAW;EAC1F,OAAO,CAAC,EAAED,SAAS,IAAIC,KAAK,IAAID,SAAS,CAACE,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKH,KAAK,CAACG,GAAG,CAAC,CAAC;AAC7E;AAEA,OAAO,SAASC,WAAWA,CAAuBL,SAAmB,EAAEC,KAAa,EAAY;EAC9F,OAAOD,SAAS,IAAIC,KAAK,GAAGD,SAAS,CAACM,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKH,KAAK,CAACG,GAAG,CAAC,GAAGJ,SAAS;AACtF;AAEA,OAAO,SAASO,QAAQA,CAAuBP,SAAmB,EAAEC,KAAa,EAAY;EAC3F,OAAOD,SAAS,IAAIC,KAAK,IAAI,CAACF,QAAQ,CAACC,SAAS,EAAEC,KAAK,CAAC,GAAGO,UAAU,CAAC,CAAC,GAAGR,SAAS,EAAEC,KAAK,CAAC,CAAC,GAAGD,SAAS;AAC1G;AAEA,OAAO,SAASQ,UAAUA,CAAuBR,SAAoB,EAAY;EAC/E,OAAO,CAAAA,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAES,IAAI,CAAC,CAACC,EAAU,EAAEC,EAAU,KAAKD,EAAE,CAACN,GAAG,GAAGO,EAAE,CAACP,GAAG,CAAC,KAAI,EAAE;AAC3E"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useRef } from 'react';
|
|
2
2
|
import * as THEOplayer from 'theoplayer';
|
|
3
3
|
import { THEOplayerWebAdapter } from './adapter/THEOplayerWebAdapter';
|
|
4
|
-
import { BaseEvent } from './adapter/event/BaseEvent';
|
|
5
|
-
import { PlayerEventType } from 'react-native-theoplayer';
|
|
6
4
|
export function THEOplayerView(props) {
|
|
7
5
|
const {
|
|
8
6
|
config,
|
|
@@ -47,7 +45,7 @@ export function THEOplayerView(props) {
|
|
|
47
45
|
|
|
48
46
|
// Clean-up
|
|
49
47
|
return () => {
|
|
50
|
-
var _adapter$current
|
|
48
|
+
var _adapter$current;
|
|
51
49
|
// Notify the player will be destroyed.
|
|
52
50
|
const {
|
|
53
51
|
onPlayerDestroy
|
|
@@ -55,9 +53,7 @@ export function THEOplayerView(props) {
|
|
|
55
53
|
if (adapter !== null && adapter !== void 0 && adapter.current && onPlayerDestroy) {
|
|
56
54
|
onPlayerDestroy(adapter === null || adapter === void 0 ? void 0 : adapter.current);
|
|
57
55
|
}
|
|
58
|
-
adapter === null || adapter === void 0 ? void 0 : (_adapter$current = adapter.current) === null || _adapter$current === void 0 ? void 0 : _adapter$current.
|
|
59
|
-
adapter === null || adapter === void 0 ? void 0 : (_adapter$current2 = adapter.current) === null || _adapter$current2 === void 0 ? void 0 : _adapter$current2.destroy();
|
|
60
|
-
player === null || player === void 0 ? void 0 : (_player$current = player.current) === null || _player$current === void 0 ? void 0 : _player$current.destroy();
|
|
56
|
+
adapter === null || adapter === void 0 ? void 0 : (_adapter$current = adapter.current) === null || _adapter$current === void 0 ? void 0 : _adapter$current.destroy();
|
|
61
57
|
};
|
|
62
58
|
}, [container]);
|
|
63
59
|
const chromeless = (config === null || config === void 0 ? void 0 : config.chromeless) === undefined || (config === null || config === void 0 ? void 0 : config.chromeless) === true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","THEOplayer","THEOplayerWebAdapter","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","THEOplayer","THEOplayerWebAdapter","THEOplayerView","props","config","children","player","adapter","container","current","_props$onPlayerReady","chromeless","undefined","updatedConfig","allowNativeFullscreen","ChromelessPlayer","Player","ui","fluid","window","nativePlayer","onPlayerReady","call","_adapter$current","onPlayerDestroy","destroy","createElement","Fragment","ref","style","styles","className","display","position","width","height","maxHeight","maxWidth","aspectRatio"],"sources":["THEOplayerView.web.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport type { THEOplayerViewProps } from 'react-native-theoplayer';\nimport * as THEOplayer from 'theoplayer';\nimport { THEOplayerWebAdapter } from './adapter/THEOplayerWebAdapter';\n\nexport function THEOplayerView(props: React.PropsWithChildren<THEOplayerViewProps>) {\n const { config, children } = props;\n const player = useRef<THEOplayer.ChromelessPlayer | null>(null);\n const adapter = useRef<THEOplayerWebAdapter | null>(null);\n const container = useRef<null | HTMLDivElement>(null);\n\n useEffect(() => {\n // Create player inside container.\n if (container.current) {\n const chromeless = config?.chromeless === true || config?.chromeless === undefined;\n const updatedConfig = { ...config, allowNativeFullscreen: true };\n if (chromeless) {\n player.current = new THEOplayer.ChromelessPlayer(container.current, updatedConfig);\n } else {\n player.current = new THEOplayer.Player(container.current, {\n ...updatedConfig,\n ui: {\n fluid: true,\n },\n } as THEOplayer.PlayerConfiguration);\n }\n\n // Adapt native player to react-native player.\n adapter.current = new THEOplayerWebAdapter(player.current, config);\n\n // Expose players for easy access\n // @ts-ignore\n window.player = adapter.current;\n\n // @ts-ignore\n window.nativePlayer = player;\n\n // Notify the player is ready\n props.onPlayerReady?.(adapter.current);\n }\n\n // Clean-up\n return () => {\n // Notify the player will be destroyed.\n const { onPlayerDestroy } = props;\n if (adapter?.current && onPlayerDestroy) {\n onPlayerDestroy(adapter?.current);\n }\n adapter?.current?.destroy();\n };\n }, [container]);\n\n const chromeless = config?.chromeless === undefined || config?.chromeless === true;\n return (\n <>\n <div\n ref={container}\n style={styles.container}\n className={chromeless ? 'theoplayer-container' : 'theoplayer-container video-js theoplayer-skin'}\n />\n {children}\n </>\n );\n}\n\nconst styles = {\n // by default stretch the video to cover the container.\n // Override using the 'theoplayer-container' class.\n container: {\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n maxHeight: '100vh',\n maxWidth: '100vw',\n aspectRatio: '16 / 9',\n } as React.CSSProperties,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["NativePlayerState.ts"],"sourcesContent":["import type { MediaTrack, PreloadType, PresentationMode, SourceDescription, TextTrack, TimeRange } from 'react-native-theoplayer';\nimport type { BackgroundAudioConfiguration } from '../../api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { PiPConfiguration } from 'react-native-theoplayer';\n\nexport interface NativePlayerState {\n source: SourceDescription | undefined;\n autoplay: boolean;\n paused: boolean;\n seekable: TimeRange[];\n buffered: TimeRange[];\n pipConfig: PiPConfiguration;\n backgroundAudioConfig: BackgroundAudioConfiguration;\n presentationMode: PresentationMode;\n muted: boolean;\n seeking: boolean;\n volume: number;\n currentTime: number;\n duration: number;\n playbackRate: number;\n preload: PreloadType;\n audioTracks: MediaTrack[];\n videoTracks: MediaTrack[];\n textTracks: TextTrack[];\n targetVideoQuality: number | number[] | undefined;\n selectedVideoTrack: number | undefined;\n selectedAudioTrack: number | undefined;\n selectedTextTrack: number | undefined;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["NativePlayerState.ts"],"sourcesContent":["import type { MediaTrack, PreloadType, PresentationMode, SourceDescription, TextTrack, TimeRange } from 'react-native-theoplayer';\nimport type { BackgroundAudioConfiguration } from '../../api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { PiPConfiguration } from 'react-native-theoplayer';\nimport type { AspectRatio } from 'react-native-theoplayer';\n\nexport interface NativePlayerState {\n source: SourceDescription | undefined;\n autoplay: boolean;\n paused: boolean;\n seekable: TimeRange[];\n buffered: TimeRange[];\n pipConfig: PiPConfiguration;\n backgroundAudioConfig: BackgroundAudioConfiguration;\n presentationMode: PresentationMode;\n muted: boolean;\n seeking: boolean;\n volume: number;\n currentTime: number;\n duration: number;\n playbackRate: number;\n preload: PreloadType;\n aspectRatio: AspectRatio;\n audioTracks: MediaTrack[];\n videoTracks: MediaTrack[];\n textTracks: TextTrack[];\n targetVideoQuality: number | number[] | undefined;\n selectedVideoTrack: number | undefined;\n selectedAudioTrack: number | undefined;\n selectedTextTrack: number | undefined;\n}\n"],"mappings":""}
|
|
@@ -2,7 +2,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
2
2
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
3
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
4
|
import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';
|
|
5
|
-
import { addTrack, findMediaTrackByUid, MediaTrackEventType, MediaTrackType, PlayerEventType, PresentationMode, removeTrack, TextTrackMode, TrackListEventType } from 'react-native-theoplayer';
|
|
5
|
+
import { addTrack, AspectRatio, findMediaTrackByUid, MediaTrackEventType, MediaTrackType, PlayerEventType, PresentationMode, removeTrack, TextTrackMode, TrackListEventType } from 'react-native-theoplayer';
|
|
6
6
|
import { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';
|
|
7
7
|
import { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';
|
|
8
8
|
import { AbrAdapter } from './abr/AbrAdapter';
|
|
@@ -28,6 +28,7 @@ const defaultPlayerState = {
|
|
|
28
28
|
duration: NaN,
|
|
29
29
|
playbackRate: 1,
|
|
30
30
|
preload: 'none',
|
|
31
|
+
aspectRatio: AspectRatio.FIT,
|
|
31
32
|
audioTracks: [],
|
|
32
33
|
videoTracks: [],
|
|
33
34
|
textTracks: [],
|
|
@@ -366,6 +367,13 @@ export class THEOplayerAdapter extends DefaultEventDispatcher {
|
|
|
366
367
|
this._state.volume = volume;
|
|
367
368
|
NativeModules.PlayerModule.setVolume(this._view.nativeHandle, volume);
|
|
368
369
|
}
|
|
370
|
+
get aspectRatio() {
|
|
371
|
+
return this._state.aspectRatio;
|
|
372
|
+
}
|
|
373
|
+
set aspectRatio(ratio) {
|
|
374
|
+
this._state.aspectRatio = ratio;
|
|
375
|
+
NativeModules.PlayerModule.setAspectRatio(this._view.nativeHandle, ratio);
|
|
376
|
+
}
|
|
369
377
|
pause() {
|
|
370
378
|
this._state.paused = true;
|
|
371
379
|
NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DefaultEventDispatcher","addTrack","findMediaTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTrack","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","TextTrackStyleAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","_state","play","pause","event","_event$seekable","_event$buffered","sort","a","b","end","subType","track","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","trackUid","tracks","VIDEO","ACTIVE_QUALITY_CHANGED","Object","assign","activeQuality","qualities","isAudio","AUDIO","_view","_adsAdapter","_castAdapter","_abrAdapter","_textTrackStyleAdapter","addEventListener","SOURCE_CHANGE","onSourceChange","LOADED_METADATA","onLoadedMetadata","PAUSE","onPause","PLAYING","onPlaying","TIME_UPDATE","onTimeupdate","DURATION_CHANGE","onDurationChange","RATE_CHANGE","onRateChange","SEEKING","onSeeking","SEEKED","onSeeked","PROGRESS","onProgress","TEXT_TRACK_LIST","onTextTrackList","MEDIA_TRACK","onMediaTrack","MEDIA_TRACK_LIST","onMediaTrackList","PRESENTATIONMODE_CHANGE","onPresentationModeChange","abr","OS","ads","PlayerModule","setPaused","nativeHandle","type","setPreload","seekableEnd","ranges","cast","isNaN","seekTime","Infinity","setCurrentTime","pipConfiguration","setPipConfig","backgroundAudioConfiguration","setBackgroundAudioConfig","setPresentationMode","setMuted","setPlaybackRate","setSelectedAudioTrack","setSelectedVideoTrack","forEach","uid","mode","showing","disabled","setSelectedTextTrack","textTrackStyle","setSource","target","Array","isArray","targetQuality","setTargetVideoQuality","setVolume","initializeWithNativePlayerState_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent,\n LoadedMetadataEvent,\n MediaTrack,\n MediaTrackEvent,\n MediaTrackListEvent,\n NativeHandleType,\n PiPConfiguration,\n PlayerEventMap,\n PresentationModeChangeEvent,\n ProgressEvent,\n RateChangeEvent,\n SourceDescription,\n TextTrack,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTrack,\n findMediaTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PreloadType,\n PresentationMode,\n removeTrack,\n TextTrackMode,\n TextTrackStyle,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';\nimport { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';\nimport { AbrAdapter } from './abr/AbrAdapter';\nimport { NativeModules, Platform } from 'react-native';\nimport { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';\nimport type { BackgroundAudioConfiguration } from 'src/api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { NativePlayerState } from './NativePlayerState';\n\nconst defaultPlayerState: NativePlayerState = {\n source: undefined,\n autoplay: false,\n paused: false,\n seekable: [],\n buffered: [],\n pipConfig: { startsAutomatically: false },\n backgroundAudioConfig: { enabled: false },\n presentationMode: PresentationMode.inline,\n muted: false,\n seeking: false,\n volume: 1,\n currentTime: 0,\n duration: NaN,\n playbackRate: 1,\n preload: 'none',\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n targetVideoQuality: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n selectedTextTrack: undefined,\n};\n\nexport class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> implements THEOplayer {\n private readonly _view: THEOplayerView;\n private readonly _state: NativePlayerState;\n private readonly _adsAdapter: THEOplayerNativeAdsAdapter;\n private readonly _castAdapter: THEOplayerNativeCastAdapter;\n private readonly _abrAdapter: AbrAdapter;\n private readonly _textTrackStyleAdapter: TextTrackStyleAdapter;\n\n constructor(view: THEOplayerView, initialState: NativePlayerState = defaultPlayerState) {\n super();\n this._view = view;\n this._state = { ...initialState };\n this._adsAdapter = new THEOplayerNativeAdsAdapter(this._view);\n this._castAdapter = new THEOplayerNativeCastAdapter(this, this._view);\n this._abrAdapter = new AbrAdapter(this._view);\n this._textTrackStyleAdapter = new TextTrackStyleAdapter(this._view);\n\n this.addEventListener(PlayerEventType.SOURCE_CHANGE, this.onSourceChange);\n this.addEventListener(PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);\n this.addEventListener(PlayerEventType.PAUSE, this.onPause);\n this.addEventListener(PlayerEventType.PLAYING, this.onPlaying);\n this.addEventListener(PlayerEventType.TIME_UPDATE, this.onTimeupdate);\n this.addEventListener(PlayerEventType.DURATION_CHANGE, this.onDurationChange);\n this.addEventListener(PlayerEventType.RATE_CHANGE, this.onRateChange);\n this.addEventListener(PlayerEventType.SEEKING, this.onSeeking);\n this.addEventListener(PlayerEventType.SEEKED, this.onSeeked);\n this.addEventListener(PlayerEventType.PROGRESS, this.onProgress);\n this.addEventListener(PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);\n this.addEventListener(PlayerEventType.MEDIA_TRACK, this.onMediaTrack);\n this.addEventListener(PlayerEventType.MEDIA_TRACK_LIST, this.onMediaTrackList);\n this.addEventListener(PlayerEventType.PRESENTATIONMODE_CHANGE, this.onPresentationModeChange);\n }\n\n private onSourceChange = () => {\n if (this._state.autoplay) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n private onPause = () => {\n this._state.paused = true;\n };\n\n private onPlaying = () => {\n this._state.paused = false;\n };\n\n private onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._state.presentationMode = event.presentationMode;\n };\n\n private onTimeupdate = (event: TimeUpdateEvent) => {\n this._state.currentTime = event.currentTime;\n };\n\n private onLoadedMetadata = (event: LoadedMetadataEvent) => {\n this._state.duration = event.duration;\n this._state.audioTracks = event.audioTracks;\n this._state.videoTracks = event.videoTracks;\n this._state.textTracks = event.textTracks;\n this._state.selectedAudioTrack = event.selectedAudioTrack;\n this._state.selectedVideoTrack = event.selectedVideoTrack;\n this._state.selectedTextTrack = event.selectedTextTrack;\n };\n\n private onDurationChange = (event: DurationChangeEvent) => {\n this._state.duration = event.duration;\n };\n\n private onRateChange = (event: RateChangeEvent) => {\n this._state.playbackRate = event.playbackRate;\n };\n\n private onSeeking = () => {\n this._state.seeking = true;\n };\n\n private onSeeked = () => {\n this._state.seeking = false;\n };\n\n private onProgress = (event: ProgressEvent) => {\n this._state.seekable = event.seekable?.sort((a, b) => a.end - b.end);\n this._state.buffered = event.buffered?.sort((a, b) => a.end - b.end);\n };\n\n private onTextTrackList = (event: TextTrackListEvent) => {\n const { subType, track } = event;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.REMOVE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.CHANGE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n }\n };\n\n private onMediaTrack = (event: MediaTrackEvent) => {\n const { subType, trackType, trackUid } = event;\n const tracks = trackType === MediaTrackType.VIDEO ? this._state.videoTracks : this._state.audioTracks;\n const track = findMediaTrackByUid(tracks, trackUid);\n switch (subType) {\n case MediaTrackEventType.ACTIVE_QUALITY_CHANGED:\n // Update local state\n if (track) {\n Object.assign(track, { ...track, activeQuality: event.qualities });\n }\n break;\n }\n };\n\n private onMediaTrackList = (event: MediaTrackListEvent) => {\n const { subType, trackType, track } = event;\n const isAudio = trackType === MediaTrackType.AUDIO;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n if (isAudio) {\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.REMOVE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.CHANGE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n }\n };\n\n get abr(): ABRConfiguration | undefined {\n return Platform.OS === 'android' ? this._abrAdapter : undefined;\n }\n\n get ads(): AdsAPI {\n return this._adsAdapter;\n }\n\n set autoplay(autoplay: boolean) {\n this._state.autoplay = autoplay;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, !autoplay);\n }\n\n get autoplay(): boolean {\n return this._state.autoplay;\n }\n\n set preload(type: PreloadType) {\n this._state.preload = type;\n NativeModules.PlayerModule.setPreload(this._view.nativeHandle, type);\n }\n\n get preload(): PreloadType {\n return this._state.preload;\n }\n\n get seekable() {\n return this._state.seekable;\n }\n\n private seekableEnd(): number {\n const ranges = this.seekable;\n return ranges.length === 0 ? 0 : ranges[ranges.length - 1].end;\n }\n\n get buffered() {\n return this._state.buffered;\n }\n\n get cast(): CastAPI {\n return this._castAdapter;\n }\n\n get currentTime(): number {\n return this._state.currentTime;\n }\n\n set currentTime(currentTime: number) {\n if (isNaN(currentTime)) {\n return;\n }\n\n // Sanitise currentTime\n let seekTime = currentTime;\n if (currentTime === Infinity) {\n seekTime = this.seekableEnd();\n }\n\n this._state.currentTime = seekTime;\n NativeModules.PlayerModule.setCurrentTime(this._view.nativeHandle, seekTime);\n }\n\n get duration(): number {\n return this._state.duration;\n }\n\n get pipConfiguration(): PiPConfiguration {\n return this._state.pipConfig;\n }\n\n set pipConfiguration(pipConfiguration: PiPConfiguration) {\n this._state.pipConfig = pipConfiguration;\n NativeModules.PlayerModule.setPipConfig(this._view.nativeHandle, pipConfiguration);\n }\n\n get backgroundAudioConfiguration(): BackgroundAudioConfiguration {\n return this._state.backgroundAudioConfig;\n }\n\n set backgroundAudioConfiguration(backgroundAudioConfiguration: BackgroundAudioConfiguration) {\n this._state.backgroundAudioConfig = backgroundAudioConfiguration;\n NativeModules.PlayerModule.setBackgroundAudioConfig(this._view.nativeHandle, backgroundAudioConfiguration);\n }\n\n get presentationMode(): PresentationMode {\n return this._state.presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n this._state.presentationMode = presentationMode;\n NativeModules.PlayerModule.setPresentationMode(this._view.nativeHandle, presentationMode);\n }\n\n get muted(): boolean {\n return this._state.muted;\n }\n\n set muted(muted: boolean) {\n this._state.muted = muted;\n NativeModules.PlayerModule.setMuted(this._view.nativeHandle, muted);\n }\n\n get seeking(): boolean {\n return this._state.seeking;\n }\n\n get paused(): boolean {\n return this._state.paused;\n }\n\n get playbackRate(): number {\n return this._state.playbackRate;\n }\n\n set playbackRate(playbackRate: number) {\n this._state.playbackRate = playbackRate;\n NativeModules.PlayerModule.setPlaybackRate(this._view.nativeHandle, playbackRate);\n }\n\n get audioTracks(): MediaTrack[] {\n return this._state.audioTracks;\n }\n\n get selectedAudioTrack(): number | undefined {\n return this._state.selectedAudioTrack;\n }\n\n set selectedAudioTrack(trackUid: number | undefined) {\n this._state.selectedAudioTrack = trackUid;\n NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get videoTracks(): MediaTrack[] {\n return this._state.videoTracks;\n }\n\n get selectedVideoTrack(): number | undefined {\n return this._state.selectedVideoTrack;\n }\n\n set selectedVideoTrack(trackUid: number | undefined) {\n this._state.selectedVideoTrack = trackUid;\n this._state.targetVideoQuality = undefined;\n NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTracks(): TextTrack[] {\n return this._state.textTracks;\n }\n\n get selectedTextTrack(): number | undefined {\n return this._state.selectedTextTrack;\n }\n\n set selectedTextTrack(trackUid: number | undefined) {\n this._state.selectedTextTrack = trackUid;\n this.textTracks.forEach((track) => {\n if (track.uid === trackUid) {\n track.mode = TextTrackMode.showing;\n } else if (track.mode === TextTrackMode.showing) {\n track.mode = TextTrackMode.disabled;\n }\n });\n NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTrackStyle(): TextTrackStyle {\n return this._textTrackStyleAdapter;\n }\n\n get source(): SourceDescription | undefined {\n return this._state.source;\n }\n\n set source(source: SourceDescription | undefined) {\n // This is to correctly reset autoplay during a source change.\n this.pause();\n this._state.source = source;\n NativeModules.PlayerModule.setSource(this._view.nativeHandle, source);\n // Reset state for play-out of new source\n Object.assign(this._state, {\n playbackRate: 1,\n seeking: false,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n seekable: [],\n buffered: [],\n selectedTextTrack: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n targetVideoQuality: undefined,\n });\n }\n\n get targetVideoQuality(): number | number[] | undefined {\n return this._state.targetVideoQuality;\n }\n\n set targetVideoQuality(target: number | number[] | undefined) {\n // Always pass an array for targetVideoQuality.\n this._state.targetVideoQuality = !target ? [] : Array.isArray(target) ? target : [target];\n\n // Update local state\n const track = findMediaTrackByUid(this._state.videoTracks, this.selectedVideoTrack);\n if (track) {\n Object.assign(track, { ...track, targetQuality: this._state.targetVideoQuality });\n }\n NativeModules.PlayerModule.setTargetVideoQuality(this._view.nativeHandle, this._state.targetVideoQuality);\n }\n\n get volume(): number {\n return this._state.volume;\n }\n\n set volume(volume: number) {\n this._state.volume = volume;\n NativeModules.PlayerModule.setVolume(this._view.nativeHandle, volume);\n }\n\n pause(): void {\n this._state.paused = true;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);\n }\n\n play(): void {\n this._state.paused = false;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, false);\n }\n\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n initializeWithNativePlayerState_(state: NativePlayerState) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n}\n"],"mappings":";;;AAAA,SAASA,sBAAsB,QAAQ,gCAAgC;AAuBvE,SACEC,QAAQ,EACRC,mBAAmB,EACnBC,mBAAmB,EACnBC,cAAc,EACdC,eAAe,EAEfC,gBAAgB,EAChBC,WAAW,EACXC,aAAa,EAEbC,kBAAkB,QACb,yBAAyB;AAChC,SAASC,0BAA0B,QAAQ,kCAAkC;AAC7E,SAASC,2BAA2B,QAAQ,oCAAoC;AAChF,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,qBAAqB,QAAQ,+BAA+B;AAIrE,MAAMC,kBAAqC,GAAG;EAC5CC,MAAM,EAAEC,SAAS;EACjBC,QAAQ,EAAE,KAAK;EACfC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,SAAS,EAAE;IAAEC,mBAAmB,EAAE;EAAM,CAAC;EACzCC,qBAAqB,EAAE;IAAEC,OAAO,EAAE;EAAM,CAAC;EACzCC,gBAAgB,EAAErB,gBAAgB,CAACsB,MAAM;EACzCC,KAAK,EAAE,KAAK;EACZC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE,CAAC;EACTC,WAAW,EAAE,CAAC;EACdC,QAAQ,EAAEC,GAAG;EACbC,YAAY,EAAE,CAAC;EACfC,OAAO,EAAE,MAAM;EACfC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAE,EAAE;EACfC,UAAU,EAAE,EAAE;EACdC,kBAAkB,EAAEtB,SAAS;EAC7BuB,kBAAkB,EAAEvB,SAAS;EAC7BwB,kBAAkB,EAAExB,SAAS;EAC7ByB,iBAAiB,EAAEzB;AACrB,CAAC;AAED,OAAO,MAAM0B,iBAAiB,SAAS5C,sBAAsB,CAAuC;EAQlG6C,WAAWA,CAACC,IAAoB,EAAwD;IAAA,IAAtDC,YAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9B,SAAA,GAAA8B,SAAA,MAAGhC,kBAAkB;IACpF,KAAK,EAAE;IAACkC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,yBAwBe,MAAM;MAC7B,IAAI,IAAI,CAACC,MAAM,CAAChC,QAAQ,EAAE;QACxB,IAAI,CAACiC,IAAI,EAAE;MACb,CAAC,MAAM;QACL,IAAI,CAACC,KAAK,EAAE;MACd;IACF,CAAC;IAAAH,eAAA,kBAEiB,MAAM;MACtB,IAAI,CAACC,MAAM,CAAC/B,MAAM,GAAG,IAAI;IAC3B,CAAC;IAAA8B,eAAA,oBAEmB,MAAM;MACxB,IAAI,CAACC,MAAM,CAAC/B,MAAM,GAAG,KAAK;IAC5B,CAAC;IAAA8B,eAAA,mCAEmCI,KAAkC,IAAK;MACzE,IAAI,CAACH,MAAM,CAACxB,gBAAgB,GAAG2B,KAAK,CAAC3B,gBAAgB;IACvD,CAAC;IAAAuB,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,IAAI,CAACH,MAAM,CAACnB,WAAW,GAAGsB,KAAK,CAACtB,WAAW;IAC7C,CAAC;IAAAkB,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,IAAI,CAACH,MAAM,CAAClB,QAAQ,GAAGqB,KAAK,CAACrB,QAAQ;MACrC,IAAI,CAACkB,MAAM,CAACd,WAAW,GAAGiB,KAAK,CAACjB,WAAW;MAC3C,IAAI,CAACc,MAAM,CAACb,WAAW,GAAGgB,KAAK,CAAChB,WAAW;MAC3C,IAAI,CAACa,MAAM,CAACZ,UAAU,GAAGe,KAAK,CAACf,UAAU;MACzC,IAAI,CAACY,MAAM,CAACT,kBAAkB,GAAGY,KAAK,CAACZ,kBAAkB;MACzD,IAAI,CAACS,MAAM,CAACV,kBAAkB,GAAGa,KAAK,CAACb,kBAAkB;MACzD,IAAI,CAACU,MAAM,CAACR,iBAAiB,GAAGW,KAAK,CAACX,iBAAiB;IACzD,CAAC;IAAAO,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,IAAI,CAACH,MAAM,CAAClB,QAAQ,GAAGqB,KAAK,CAACrB,QAAQ;IACvC,CAAC;IAAAiB,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,IAAI,CAACH,MAAM,CAAChB,YAAY,GAAGmB,KAAK,CAACnB,YAAY;IAC/C,CAAC;IAAAe,eAAA,oBAEmB,MAAM;MACxB,IAAI,CAACC,MAAM,CAACrB,OAAO,GAAG,IAAI;IAC5B,CAAC;IAAAoB,eAAA,mBAEkB,MAAM;MACvB,IAAI,CAACC,MAAM,CAACrB,OAAO,GAAG,KAAK;IAC7B,CAAC;IAAAoB,eAAA,qBAEqBI,KAAoB,IAAK;MAAA,IAAAC,eAAA,EAAAC,eAAA;MAC7C,IAAI,CAACL,MAAM,CAAC9B,QAAQ,IAAAkC,eAAA,GAAGD,KAAK,CAACjC,QAAQ,cAAAkC,eAAA,uBAAdA,eAAA,CAAgBE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,GAAG,GAAGD,CAAC,CAACC,GAAG,CAAC;MACpE,IAAI,CAACT,MAAM,CAAC7B,QAAQ,IAAAkC,eAAA,GAAGF,KAAK,CAAChC,QAAQ,cAAAkC,eAAA,uBAAdA,eAAA,CAAgBC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,GAAG,GAAGD,CAAC,CAACC,GAAG,CAAC;IACtE,CAAC;IAAAV,eAAA,0BAE0BI,KAAyB,IAAK;MACvD,MAAM;QAAEO,OAAO;QAAEC;MAAM,CAAC,GAAGR,KAAK;MAChC,QAAQO,OAAO;QACb,KAAKpD,kBAAkB,CAACsD,SAAS;UAC/B,IAAI,CAACZ,MAAM,CAACZ,UAAU,GAAGtC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UAChE;QACF,KAAKrD,kBAAkB,CAACuD,YAAY;UAClC,IAAI,CAACb,MAAM,CAACZ,UAAU,GAAGhC,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UACnE;QACF,KAAKrD,kBAAkB,CAACwD,YAAY;UAClC,IAAI,CAACd,MAAM,CAACZ,UAAU,GAAGhC,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UACnE,IAAI,CAACX,MAAM,CAACZ,UAAU,GAAGtC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UAChE;MAAM;IAEZ,CAAC;IAAAZ,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,MAAM;QAAEO,OAAO;QAAEK,SAAS;QAAEC;MAAS,CAAC,GAAGb,KAAK;MAC9C,MAAMc,MAAM,GAAGF,SAAS,KAAK9D,cAAc,CAACiE,KAAK,GAAG,IAAI,CAAClB,MAAM,CAACb,WAAW,GAAG,IAAI,CAACa,MAAM,CAACd,WAAW;MACrG,MAAMyB,KAAK,GAAG5D,mBAAmB,CAACkE,MAAM,EAAED,QAAQ,CAAC;MACnD,QAAQN,OAAO;QACb,KAAK1D,mBAAmB,CAACmE,sBAAsB;UAC7C;UACA,IAAIR,KAAK,EAAE;YACTS,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;cAAE,GAAGA,KAAK;cAAEW,aAAa,EAAEnB,KAAK,CAACoB;YAAU,CAAC,CAAC;UACpE;UACA;MAAM;IAEZ,CAAC;IAAAxB,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,MAAM;QAAEO,OAAO;QAAEK,SAAS;QAAEJ;MAAM,CAAC,GAAGR,KAAK;MAC3C,MAAMqB,OAAO,GAAGT,SAAS,KAAK9D,cAAc,CAACwE,KAAK;MAClD,QAAQf,OAAO;QACb,KAAKpD,kBAAkB,CAACsD,SAAS;UAC/B,IAAIY,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAGpC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACpE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGrC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACpE;UACA;QACF,KAAKrD,kBAAkB,CAACuD,YAAY;UAClC,IAAIW,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAG9B,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACvE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAG/B,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACvE;UACA;QACF,KAAKrD,kBAAkB,CAACwD,YAAY;UAClC,IAAIU,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAG9B,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;YACrE,IAAI,CAACX,MAAM,CAACd,WAAW,GAAGpC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACpE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAG/B,WAAW,CAAC,IAAI,CAAC4C,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;YACrE,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGrC,QAAQ,CAAC,IAAI,CAACkD,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACpE;UACA;MAAM;IAEZ,CAAC;IAxIC,IAAI,CAACe,KAAK,GAAG/B,IAAI;IACjB,IAAI,CAACK,MAAM,GAAG;MAAE,GAAGJ;IAAa,CAAC;IACjC,IAAI,CAAC+B,WAAW,GAAG,IAAIpE,0BAA0B,CAAC,IAAI,CAACmE,KAAK,CAAC;IAC7D,IAAI,CAACE,YAAY,GAAG,IAAIpE,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAACkE,KAAK,CAAC;IACrE,IAAI,CAACG,WAAW,GAAG,IAAIpE,UAAU,CAAC,IAAI,CAACiE,KAAK,CAAC;IAC7C,IAAI,CAACI,sBAAsB,GAAG,IAAIlE,qBAAqB,CAAC,IAAI,CAAC8D,KAAK,CAAC;IAEnE,IAAI,CAACK,gBAAgB,CAAC7E,eAAe,CAAC8E,aAAa,EAAE,IAAI,CAACC,cAAc,CAAC;IACzE,IAAI,CAACF,gBAAgB,CAAC7E,eAAe,CAACgF,eAAe,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC7E,IAAI,CAACJ,gBAAgB,CAAC7E,eAAe,CAACkF,KAAK,EAAE,IAAI,CAACC,OAAO,CAAC;IAC1D,IAAI,CAACN,gBAAgB,CAAC7E,eAAe,CAACoF,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC;IAC9D,IAAI,CAACR,gBAAgB,CAAC7E,eAAe,CAACsF,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACV,gBAAgB,CAAC7E,eAAe,CAACwF,eAAe,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC7E,IAAI,CAACZ,gBAAgB,CAAC7E,eAAe,CAAC0F,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACd,gBAAgB,CAAC7E,eAAe,CAAC4F,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC;IAC9D,IAAI,CAAChB,gBAAgB,CAAC7E,eAAe,CAAC8F,MAAM,EAAE,IAAI,CAACC,QAAQ,CAAC;IAC5D,IAAI,CAAClB,gBAAgB,CAAC7E,eAAe,CAACgG,QAAQ,EAAE,IAAI,CAACC,UAAU,CAAC;IAChE,IAAI,CAACpB,gBAAgB,CAAC7E,eAAe,CAACkG,eAAe,EAAE,IAAI,CAACC,eAAe,CAAC;IAC5E,IAAI,CAACtB,gBAAgB,CAAC7E,eAAe,CAACoG,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACxB,gBAAgB,CAAC7E,eAAe,CAACsG,gBAAgB,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC9E,IAAI,CAAC1B,gBAAgB,CAAC7E,eAAe,CAACwG,uBAAuB,EAAE,IAAI,CAACC,wBAAwB,CAAC;EAC/F;EAqHA,IAAIC,GAAGA,CAAA,EAAiC;IACtC,OAAOjG,QAAQ,CAACkG,EAAE,KAAK,SAAS,GAAG,IAAI,CAAChC,WAAW,GAAG9D,SAAS;EACjE;EAEA,IAAI+F,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACnC,WAAW;EACzB;EAEA,IAAI3D,QAAQA,CAACA,QAAiB,EAAE;IAC9B,IAAI,CAACgC,MAAM,CAAChC,QAAQ,GAAGA,QAAQ;IAC/BN,aAAa,CAACqG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,CAACjG,QAAQ,CAAC;EAC1E;EAEA,IAAIA,QAAQA,CAAA,EAAY;IACtB,OAAO,IAAI,CAACgC,MAAM,CAAChC,QAAQ;EAC7B;EAEA,IAAIiB,OAAOA,CAACiF,IAAiB,EAAE;IAC7B,IAAI,CAAClE,MAAM,CAACf,OAAO,GAAGiF,IAAI;IAC1BxG,aAAa,CAACqG,YAAY,CAACI,UAAU,CAAC,IAAI,CAACzC,KAAK,CAACuC,YAAY,EAAEC,IAAI,CAAC;EACtE;EAEA,IAAIjF,OAAOA,CAAA,EAAgB;IACzB,OAAO,IAAI,CAACe,MAAM,CAACf,OAAO;EAC5B;EAEA,IAAIf,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC8B,MAAM,CAAC9B,QAAQ;EAC7B;EAEQkG,WAAWA,CAAA,EAAW;IAC5B,MAAMC,MAAM,GAAG,IAAI,CAACnG,QAAQ;IAC5B,OAAOmG,MAAM,CAACvE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAGuE,MAAM,CAACA,MAAM,CAACvE,MAAM,GAAG,CAAC,CAAC,CAACW,GAAG;EAChE;EAEA,IAAItC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC6B,MAAM,CAAC7B,QAAQ;EAC7B;EAEA,IAAImG,IAAIA,CAAA,EAAY;IAClB,OAAO,IAAI,CAAC1C,YAAY;EAC1B;EAEA,IAAI/C,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACmB,MAAM,CAACnB,WAAW;EAChC;EAEA,IAAIA,WAAWA,CAACA,WAAmB,EAAE;IACnC,IAAI0F,KAAK,CAAC1F,WAAW,CAAC,EAAE;MACtB;IACF;;IAEA;IACA,IAAI2F,QAAQ,GAAG3F,WAAW;IAC1B,IAAIA,WAAW,KAAK4F,QAAQ,EAAE;MAC5BD,QAAQ,GAAG,IAAI,CAACJ,WAAW,EAAE;IAC/B;IAEA,IAAI,CAACpE,MAAM,CAACnB,WAAW,GAAG2F,QAAQ;IAClC9G,aAAa,CAACqG,YAAY,CAACW,cAAc,CAAC,IAAI,CAAChD,KAAK,CAACuC,YAAY,EAAEO,QAAQ,CAAC;EAC9E;EAEA,IAAI1F,QAAQA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACkB,MAAM,CAAClB,QAAQ;EAC7B;EAEA,IAAI6F,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAAC3E,MAAM,CAAC5B,SAAS;EAC9B;EAEA,IAAIuG,gBAAgBA,CAACA,gBAAkC,EAAE;IACvD,IAAI,CAAC3E,MAAM,CAAC5B,SAAS,GAAGuG,gBAAgB;IACxCjH,aAAa,CAACqG,YAAY,CAACa,YAAY,CAAC,IAAI,CAAClD,KAAK,CAACuC,YAAY,EAAEU,gBAAgB,CAAC;EACpF;EAEA,IAAIE,4BAA4BA,CAAA,EAAiC;IAC/D,OAAO,IAAI,CAAC7E,MAAM,CAAC1B,qBAAqB;EAC1C;EAEA,IAAIuG,4BAA4BA,CAACA,4BAA0D,EAAE;IAC3F,IAAI,CAAC7E,MAAM,CAAC1B,qBAAqB,GAAGuG,4BAA4B;IAChEnH,aAAa,CAACqG,YAAY,CAACe,wBAAwB,CAAC,IAAI,CAACpD,KAAK,CAACuC,YAAY,EAAEY,4BAA4B,CAAC;EAC5G;EAEA,IAAIrG,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACwB,MAAM,CAACxB,gBAAgB;EACrC;EAEA,IAAIA,gBAAgBA,CAACA,gBAAkC,EAAE;IACvD,IAAI,CAACwB,MAAM,CAACxB,gBAAgB,GAAGA,gBAAgB;IAC/Cd,aAAa,CAACqG,YAAY,CAACgB,mBAAmB,CAAC,IAAI,CAACrD,KAAK,CAACuC,YAAY,EAAEzF,gBAAgB,CAAC;EAC3F;EAEA,IAAIE,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACsB,MAAM,CAACtB,KAAK;EAC1B;EAEA,IAAIA,KAAKA,CAACA,KAAc,EAAE;IACxB,IAAI,CAACsB,MAAM,CAACtB,KAAK,GAAGA,KAAK;IACzBhB,aAAa,CAACqG,YAAY,CAACiB,QAAQ,CAAC,IAAI,CAACtD,KAAK,CAACuC,YAAY,EAAEvF,KAAK,CAAC;EACrE;EAEA,IAAIC,OAAOA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACqB,MAAM,CAACrB,OAAO;EAC5B;EAEA,IAAIV,MAAMA,CAAA,EAAY;IACpB,OAAO,IAAI,CAAC+B,MAAM,CAAC/B,MAAM;EAC3B;EAEA,IAAIe,YAAYA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACgB,MAAM,CAAChB,YAAY;EACjC;EAEA,IAAIA,YAAYA,CAACA,YAAoB,EAAE;IACrC,IAAI,CAACgB,MAAM,CAAChB,YAAY,GAAGA,YAAY;IACvCtB,aAAa,CAACqG,YAAY,CAACkB,eAAe,CAAC,IAAI,CAACvD,KAAK,CAACuC,YAAY,EAAEjF,YAAY,CAAC;EACnF;EAEA,IAAIE,WAAWA,CAAA,EAAiB;IAC9B,OAAO,IAAI,CAACc,MAAM,CAACd,WAAW;EAChC;EAEA,IAAIK,kBAAkBA,CAAA,EAAuB;IAC3C,OAAO,IAAI,CAACS,MAAM,CAACT,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAACyB,QAA4B,EAAE;IACnD,IAAI,CAAChB,MAAM,CAACT,kBAAkB,GAAGyB,QAAQ;IACzCtD,aAAa,CAACqG,YAAY,CAACmB,qBAAqB,CAAC,IAAI,CAACxD,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC3F;EAEA,IAAI7B,WAAWA,CAAA,EAAiB;IAC9B,OAAO,IAAI,CAACa,MAAM,CAACb,WAAW;EAChC;EAEA,IAAIG,kBAAkBA,CAAA,EAAuB;IAC3C,OAAO,IAAI,CAACU,MAAM,CAACV,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAAC0B,QAA4B,EAAE;IACnD,IAAI,CAAChB,MAAM,CAACV,kBAAkB,GAAG0B,QAAQ;IACzC,IAAI,CAAChB,MAAM,CAACX,kBAAkB,GAAGtB,SAAS;IAC1CL,aAAa,CAACqG,YAAY,CAACoB,qBAAqB,CAAC,IAAI,CAACzD,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC3F;EAEA,IAAI5B,UAAUA,CAAA,EAAgB;IAC5B,OAAO,IAAI,CAACY,MAAM,CAACZ,UAAU;EAC/B;EAEA,IAAII,iBAAiBA,CAAA,EAAuB;IAC1C,OAAO,IAAI,CAACQ,MAAM,CAACR,iBAAiB;EACtC;EAEA,IAAIA,iBAAiBA,CAACwB,QAA4B,EAAE;IAClD,IAAI,CAAChB,MAAM,CAACR,iBAAiB,GAAGwB,QAAQ;IACxC,IAAI,CAAC5B,UAAU,CAACgG,OAAO,CAAEzE,KAAK,IAAK;MACjC,IAAIA,KAAK,CAAC0E,GAAG,KAAKrE,QAAQ,EAAE;QAC1BL,KAAK,CAAC2E,IAAI,GAAGjI,aAAa,CAACkI,OAAO;MACpC,CAAC,MAAM,IAAI5E,KAAK,CAAC2E,IAAI,KAAKjI,aAAa,CAACkI,OAAO,EAAE;QAC/C5E,KAAK,CAAC2E,IAAI,GAAGjI,aAAa,CAACmI,QAAQ;MACrC;IACF,CAAC,CAAC;IACF9H,aAAa,CAACqG,YAAY,CAAC0B,oBAAoB,CAAC,IAAI,CAAC/D,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC1F;EAEA,IAAI0E,cAAcA,CAAA,EAAmB;IACnC,OAAO,IAAI,CAAC5D,sBAAsB;EACpC;EAEA,IAAIhE,MAAMA,CAAA,EAAkC;IAC1C,OAAO,IAAI,CAACkC,MAAM,CAAClC,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACA,MAAqC,EAAE;IAChD;IACA,IAAI,CAACoC,KAAK,EAAE;IACZ,IAAI,CAACF,MAAM,CAAClC,MAAM,GAAGA,MAAM;IAC3BJ,aAAa,CAACqG,YAAY,CAAC4B,SAAS,CAAC,IAAI,CAACjE,KAAK,CAACuC,YAAY,EAAEnG,MAAM,CAAC;IACrE;IACAsD,MAAM,CAACC,MAAM,CAAC,IAAI,CAACrB,MAAM,EAAE;MACzBhB,YAAY,EAAE,CAAC;MACfL,OAAO,EAAE,KAAK;MACdO,WAAW,EAAE,EAAE;MACfC,WAAW,EAAE,EAAE;MACfC,UAAU,EAAE,EAAE;MACdlB,QAAQ,EAAE,EAAE;MACZC,QAAQ,EAAE,EAAE;MACZqB,iBAAiB,EAAEzB,SAAS;MAC5BuB,kBAAkB,EAAEvB,SAAS;MAC7BwB,kBAAkB,EAAExB,SAAS;MAC7BsB,kBAAkB,EAAEtB;IACtB,CAAC,CAAC;EACJ;EAEA,IAAIsB,kBAAkBA,CAAA,EAAkC;IACtD,OAAO,IAAI,CAACW,MAAM,CAACX,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAACuG,MAAqC,EAAE;IAC5D;IACA,IAAI,CAAC5F,MAAM,CAACX,kBAAkB,GAAG,CAACuG,MAAM,GAAG,EAAE,GAAGC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;;IAEzF;IACA,MAAMjF,KAAK,GAAG5D,mBAAmB,CAAC,IAAI,CAACiD,MAAM,CAACb,WAAW,EAAE,IAAI,CAACG,kBAAkB,CAAC;IACnF,IAAIqB,KAAK,EAAE;MACTS,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;QAAE,GAAGA,KAAK;QAAEoF,aAAa,EAAE,IAAI,CAAC/F,MAAM,CAACX;MAAmB,CAAC,CAAC;IACnF;IACA3B,aAAa,CAACqG,YAAY,CAACiC,qBAAqB,CAAC,IAAI,CAACtE,KAAK,CAACuC,YAAY,EAAE,IAAI,CAACjE,MAAM,CAACX,kBAAkB,CAAC;EAC3G;EAEA,IAAIT,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACoB,MAAM,CAACpB,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACA,MAAc,EAAE;IACzB,IAAI,CAACoB,MAAM,CAACpB,MAAM,GAAGA,MAAM;IAC3BlB,aAAa,CAACqG,YAAY,CAACkC,SAAS,CAAC,IAAI,CAACvE,KAAK,CAACuC,YAAY,EAAErF,MAAM,CAAC;EACvE;EAEAsB,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACF,MAAM,CAAC/B,MAAM,GAAG,IAAI;IACzBP,aAAa,CAACqG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,IAAI,CAAC;EACrE;EAEAhE,IAAIA,CAAA,EAAS;IACX,IAAI,CAACD,MAAM,CAAC/B,MAAM,GAAG,KAAK;IAC1BP,aAAa,CAACqG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,KAAK,CAAC;EACtE;EAEA,IAAIA,YAAYA,CAAA,EAAqB;IACnC,OAAO,IAAI,CAACvC,KAAK,CAACuC,YAAY;EAChC;EAEAiC,gCAAgCA,CAACC,KAAwB,EAAE;IACzD/E,MAAM,CAACC,MAAM,CAAC,IAAI,CAACrB,MAAM,EAAEmG,KAAK,CAAC;IACjC,IAAI,CAACvE,YAAY,CAACwE,KAAK,EAAE;EAC3B;AACF"}
|
|
1
|
+
{"version":3,"names":["DefaultEventDispatcher","addTrack","AspectRatio","findMediaTrackByUid","MediaTrackEventType","MediaTrackType","PlayerEventType","PresentationMode","removeTrack","TextTrackMode","TrackListEventType","THEOplayerNativeAdsAdapter","THEOplayerNativeCastAdapter","AbrAdapter","NativeModules","Platform","TextTrackStyleAdapter","defaultPlayerState","source","undefined","autoplay","paused","seekable","buffered","pipConfig","startsAutomatically","backgroundAudioConfig","enabled","presentationMode","inline","muted","seeking","volume","currentTime","duration","NaN","playbackRate","preload","aspectRatio","FIT","audioTracks","videoTracks","textTracks","targetVideoQuality","selectedVideoTrack","selectedAudioTrack","selectedTextTrack","THEOplayerAdapter","constructor","view","initialState","arguments","length","_defineProperty","_state","play","pause","event","_event$seekable","_event$buffered","sort","a","b","end","subType","track","ADD_TRACK","REMOVE_TRACK","CHANGE_TRACK","trackType","trackUid","tracks","VIDEO","ACTIVE_QUALITY_CHANGED","Object","assign","activeQuality","qualities","isAudio","AUDIO","_view","_adsAdapter","_castAdapter","_abrAdapter","_textTrackStyleAdapter","addEventListener","SOURCE_CHANGE","onSourceChange","LOADED_METADATA","onLoadedMetadata","PAUSE","onPause","PLAYING","onPlaying","TIME_UPDATE","onTimeupdate","DURATION_CHANGE","onDurationChange","RATE_CHANGE","onRateChange","SEEKING","onSeeking","SEEKED","onSeeked","PROGRESS","onProgress","TEXT_TRACK_LIST","onTextTrackList","MEDIA_TRACK","onMediaTrack","MEDIA_TRACK_LIST","onMediaTrackList","PRESENTATIONMODE_CHANGE","onPresentationModeChange","abr","OS","ads","PlayerModule","setPaused","nativeHandle","type","setPreload","seekableEnd","ranges","cast","isNaN","seekTime","Infinity","setCurrentTime","pipConfiguration","setPipConfig","backgroundAudioConfiguration","setBackgroundAudioConfig","setPresentationMode","setMuted","setPlaybackRate","setSelectedAudioTrack","setSelectedVideoTrack","forEach","uid","mode","showing","disabled","setSelectedTextTrack","textTrackStyle","setSource","target","Array","isArray","targetQuality","setTargetVideoQuality","setVolume","ratio","setAspectRatio","initializeWithNativePlayerState_","state","init_"],"sources":["THEOplayerAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';\nimport type {\n ABRConfiguration,\n AdsAPI,\n CastAPI,\n DurationChangeEvent,\n LoadedMetadataEvent,\n MediaTrack,\n MediaTrackEvent,\n MediaTrackListEvent,\n NativeHandleType,\n PiPConfiguration,\n PlayerEventMap,\n PresentationModeChangeEvent,\n ProgressEvent,\n RateChangeEvent,\n SourceDescription,\n TextTrack,\n TextTrackListEvent,\n THEOplayer,\n THEOplayerView,\n TimeUpdateEvent,\n} from 'react-native-theoplayer';\nimport {\n addTrack,\n AspectRatio,\n findMediaTrackByUid,\n MediaTrackEventType,\n MediaTrackType,\n PlayerEventType,\n PreloadType,\n PresentationMode,\n removeTrack,\n TextTrackMode,\n TextTrackStyle,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAdapter } from './ads/THEOplayerNativeAdsAdapter';\nimport { THEOplayerNativeCastAdapter } from './cast/THEOplayerNativeCastAdapter';\nimport { AbrAdapter } from './abr/AbrAdapter';\nimport { NativeModules, Platform } from 'react-native';\nimport { TextTrackStyleAdapter } from './track/TextTrackStyleAdapter';\nimport type { BackgroundAudioConfiguration } from 'src/api/backgroundAudio/BackgroundAudioConfiguration';\nimport type { NativePlayerState } from './NativePlayerState';\n\nconst defaultPlayerState: NativePlayerState = {\n source: undefined,\n autoplay: false,\n paused: false,\n seekable: [],\n buffered: [],\n pipConfig: { startsAutomatically: false },\n backgroundAudioConfig: { enabled: false },\n presentationMode: PresentationMode.inline,\n muted: false,\n seeking: false,\n volume: 1,\n currentTime: 0,\n duration: NaN,\n playbackRate: 1,\n preload: 'none',\n aspectRatio: AspectRatio.FIT,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n targetVideoQuality: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n selectedTextTrack: undefined,\n};\n\nexport class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> implements THEOplayer {\n private readonly _view: THEOplayerView;\n private readonly _state: NativePlayerState;\n private readonly _adsAdapter: THEOplayerNativeAdsAdapter;\n private readonly _castAdapter: THEOplayerNativeCastAdapter;\n private readonly _abrAdapter: AbrAdapter;\n private readonly _textTrackStyleAdapter: TextTrackStyleAdapter;\n\n constructor(view: THEOplayerView, initialState: NativePlayerState = defaultPlayerState) {\n super();\n this._view = view;\n this._state = { ...initialState };\n this._adsAdapter = new THEOplayerNativeAdsAdapter(this._view);\n this._castAdapter = new THEOplayerNativeCastAdapter(this, this._view);\n this._abrAdapter = new AbrAdapter(this._view);\n this._textTrackStyleAdapter = new TextTrackStyleAdapter(this._view);\n\n this.addEventListener(PlayerEventType.SOURCE_CHANGE, this.onSourceChange);\n this.addEventListener(PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);\n this.addEventListener(PlayerEventType.PAUSE, this.onPause);\n this.addEventListener(PlayerEventType.PLAYING, this.onPlaying);\n this.addEventListener(PlayerEventType.TIME_UPDATE, this.onTimeupdate);\n this.addEventListener(PlayerEventType.DURATION_CHANGE, this.onDurationChange);\n this.addEventListener(PlayerEventType.RATE_CHANGE, this.onRateChange);\n this.addEventListener(PlayerEventType.SEEKING, this.onSeeking);\n this.addEventListener(PlayerEventType.SEEKED, this.onSeeked);\n this.addEventListener(PlayerEventType.PROGRESS, this.onProgress);\n this.addEventListener(PlayerEventType.TEXT_TRACK_LIST, this.onTextTrackList);\n this.addEventListener(PlayerEventType.MEDIA_TRACK, this.onMediaTrack);\n this.addEventListener(PlayerEventType.MEDIA_TRACK_LIST, this.onMediaTrackList);\n this.addEventListener(PlayerEventType.PRESENTATIONMODE_CHANGE, this.onPresentationModeChange);\n }\n\n private onSourceChange = () => {\n if (this._state.autoplay) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n private onPause = () => {\n this._state.paused = true;\n };\n\n private onPlaying = () => {\n this._state.paused = false;\n };\n\n private onPresentationModeChange = (event: PresentationModeChangeEvent) => {\n this._state.presentationMode = event.presentationMode;\n };\n\n private onTimeupdate = (event: TimeUpdateEvent) => {\n this._state.currentTime = event.currentTime;\n };\n\n private onLoadedMetadata = (event: LoadedMetadataEvent) => {\n this._state.duration = event.duration;\n this._state.audioTracks = event.audioTracks;\n this._state.videoTracks = event.videoTracks;\n this._state.textTracks = event.textTracks;\n this._state.selectedAudioTrack = event.selectedAudioTrack;\n this._state.selectedVideoTrack = event.selectedVideoTrack;\n this._state.selectedTextTrack = event.selectedTextTrack;\n };\n\n private onDurationChange = (event: DurationChangeEvent) => {\n this._state.duration = event.duration;\n };\n\n private onRateChange = (event: RateChangeEvent) => {\n this._state.playbackRate = event.playbackRate;\n };\n\n private onSeeking = () => {\n this._state.seeking = true;\n };\n\n private onSeeked = () => {\n this._state.seeking = false;\n };\n\n private onProgress = (event: ProgressEvent) => {\n this._state.seekable = event.seekable?.sort((a, b) => a.end - b.end);\n this._state.buffered = event.buffered?.sort((a, b) => a.end - b.end);\n };\n\n private onTextTrackList = (event: TextTrackListEvent) => {\n const { subType, track } = event;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.REMOVE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n break;\n case TrackListEventType.CHANGE_TRACK:\n this._state.textTracks = removeTrack(this._state.textTracks, track);\n this._state.textTracks = addTrack(this._state.textTracks, track);\n break;\n }\n };\n\n private onMediaTrack = (event: MediaTrackEvent) => {\n const { subType, trackType, trackUid } = event;\n const tracks = trackType === MediaTrackType.VIDEO ? this._state.videoTracks : this._state.audioTracks;\n const track = findMediaTrackByUid(tracks, trackUid);\n switch (subType) {\n case MediaTrackEventType.ACTIVE_QUALITY_CHANGED:\n // Update local state\n if (track) {\n Object.assign(track, { ...track, activeQuality: event.qualities });\n }\n break;\n }\n };\n\n private onMediaTrackList = (event: MediaTrackListEvent) => {\n const { subType, trackType, track } = event;\n const isAudio = trackType === MediaTrackType.AUDIO;\n switch (subType) {\n case TrackListEventType.ADD_TRACK:\n if (isAudio) {\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.REMOVE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n }\n break;\n case TrackListEventType.CHANGE_TRACK:\n if (isAudio) {\n this._state.audioTracks = removeTrack(this._state.audioTracks, track);\n this._state.audioTracks = addTrack(this._state.audioTracks, track);\n } else {\n this._state.videoTracks = removeTrack(this._state.videoTracks, track);\n this._state.videoTracks = addTrack(this._state.videoTracks, track);\n }\n break;\n }\n };\n\n get abr(): ABRConfiguration | undefined {\n return Platform.OS === 'android' ? this._abrAdapter : undefined;\n }\n\n get ads(): AdsAPI {\n return this._adsAdapter;\n }\n\n set autoplay(autoplay: boolean) {\n this._state.autoplay = autoplay;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, !autoplay);\n }\n\n get autoplay(): boolean {\n return this._state.autoplay;\n }\n\n set preload(type: PreloadType) {\n this._state.preload = type;\n NativeModules.PlayerModule.setPreload(this._view.nativeHandle, type);\n }\n\n get preload(): PreloadType {\n return this._state.preload;\n }\n\n get seekable() {\n return this._state.seekable;\n }\n\n private seekableEnd(): number {\n const ranges = this.seekable;\n return ranges.length === 0 ? 0 : ranges[ranges.length - 1].end;\n }\n\n get buffered() {\n return this._state.buffered;\n }\n\n get cast(): CastAPI {\n return this._castAdapter;\n }\n\n get currentTime(): number {\n return this._state.currentTime;\n }\n\n set currentTime(currentTime: number) {\n if (isNaN(currentTime)) {\n return;\n }\n\n // Sanitise currentTime\n let seekTime = currentTime;\n if (currentTime === Infinity) {\n seekTime = this.seekableEnd();\n }\n\n this._state.currentTime = seekTime;\n NativeModules.PlayerModule.setCurrentTime(this._view.nativeHandle, seekTime);\n }\n\n get duration(): number {\n return this._state.duration;\n }\n\n get pipConfiguration(): PiPConfiguration {\n return this._state.pipConfig;\n }\n\n set pipConfiguration(pipConfiguration: PiPConfiguration) {\n this._state.pipConfig = pipConfiguration;\n NativeModules.PlayerModule.setPipConfig(this._view.nativeHandle, pipConfiguration);\n }\n\n get backgroundAudioConfiguration(): BackgroundAudioConfiguration {\n return this._state.backgroundAudioConfig;\n }\n\n set backgroundAudioConfiguration(backgroundAudioConfiguration: BackgroundAudioConfiguration) {\n this._state.backgroundAudioConfig = backgroundAudioConfiguration;\n NativeModules.PlayerModule.setBackgroundAudioConfig(this._view.nativeHandle, backgroundAudioConfiguration);\n }\n\n get presentationMode(): PresentationMode {\n return this._state.presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n this._state.presentationMode = presentationMode;\n NativeModules.PlayerModule.setPresentationMode(this._view.nativeHandle, presentationMode);\n }\n\n get muted(): boolean {\n return this._state.muted;\n }\n\n set muted(muted: boolean) {\n this._state.muted = muted;\n NativeModules.PlayerModule.setMuted(this._view.nativeHandle, muted);\n }\n\n get seeking(): boolean {\n return this._state.seeking;\n }\n\n get paused(): boolean {\n return this._state.paused;\n }\n\n get playbackRate(): number {\n return this._state.playbackRate;\n }\n\n set playbackRate(playbackRate: number) {\n this._state.playbackRate = playbackRate;\n NativeModules.PlayerModule.setPlaybackRate(this._view.nativeHandle, playbackRate);\n }\n\n get audioTracks(): MediaTrack[] {\n return this._state.audioTracks;\n }\n\n get selectedAudioTrack(): number | undefined {\n return this._state.selectedAudioTrack;\n }\n\n set selectedAudioTrack(trackUid: number | undefined) {\n this._state.selectedAudioTrack = trackUid;\n NativeModules.PlayerModule.setSelectedAudioTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get videoTracks(): MediaTrack[] {\n return this._state.videoTracks;\n }\n\n get selectedVideoTrack(): number | undefined {\n return this._state.selectedVideoTrack;\n }\n\n set selectedVideoTrack(trackUid: number | undefined) {\n this._state.selectedVideoTrack = trackUid;\n this._state.targetVideoQuality = undefined;\n NativeModules.PlayerModule.setSelectedVideoTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTracks(): TextTrack[] {\n return this._state.textTracks;\n }\n\n get selectedTextTrack(): number | undefined {\n return this._state.selectedTextTrack;\n }\n\n set selectedTextTrack(trackUid: number | undefined) {\n this._state.selectedTextTrack = trackUid;\n this.textTracks.forEach((track) => {\n if (track.uid === trackUid) {\n track.mode = TextTrackMode.showing;\n } else if (track.mode === TextTrackMode.showing) {\n track.mode = TextTrackMode.disabled;\n }\n });\n NativeModules.PlayerModule.setSelectedTextTrack(this._view.nativeHandle, trackUid || -1);\n }\n\n get textTrackStyle(): TextTrackStyle {\n return this._textTrackStyleAdapter;\n }\n\n get source(): SourceDescription | undefined {\n return this._state.source;\n }\n\n set source(source: SourceDescription | undefined) {\n // This is to correctly reset autoplay during a source change.\n this.pause();\n this._state.source = source;\n NativeModules.PlayerModule.setSource(this._view.nativeHandle, source);\n // Reset state for play-out of new source\n Object.assign(this._state, {\n playbackRate: 1,\n seeking: false,\n audioTracks: [],\n videoTracks: [],\n textTracks: [],\n seekable: [],\n buffered: [],\n selectedTextTrack: undefined,\n selectedVideoTrack: undefined,\n selectedAudioTrack: undefined,\n targetVideoQuality: undefined,\n });\n }\n\n get targetVideoQuality(): number | number[] | undefined {\n return this._state.targetVideoQuality;\n }\n\n set targetVideoQuality(target: number | number[] | undefined) {\n // Always pass an array for targetVideoQuality.\n this._state.targetVideoQuality = !target ? [] : Array.isArray(target) ? target : [target];\n\n // Update local state\n const track = findMediaTrackByUid(this._state.videoTracks, this.selectedVideoTrack);\n if (track) {\n Object.assign(track, { ...track, targetQuality: this._state.targetVideoQuality });\n }\n NativeModules.PlayerModule.setTargetVideoQuality(this._view.nativeHandle, this._state.targetVideoQuality);\n }\n\n get volume(): number {\n return this._state.volume;\n }\n\n set volume(volume: number) {\n this._state.volume = volume;\n NativeModules.PlayerModule.setVolume(this._view.nativeHandle, volume);\n }\n\n get aspectRatio(): AspectRatio {\n return this._state.aspectRatio;\n }\n\n set aspectRatio(ratio: AspectRatio) {\n this._state.aspectRatio = ratio;\n NativeModules.PlayerModule.setAspectRatio(this._view.nativeHandle, ratio);\n }\n\n pause(): void {\n this._state.paused = true;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, true);\n }\n\n play(): void {\n this._state.paused = false;\n NativeModules.PlayerModule.setPaused(this._view.nativeHandle, false);\n }\n\n get nativeHandle(): NativeHandleType {\n return this._view.nativeHandle;\n }\n\n initializeWithNativePlayerState_(state: NativePlayerState) {\n Object.assign(this._state, state);\n this._castAdapter.init_();\n }\n}\n"],"mappings":";;;AAAA,SAASA,sBAAsB,QAAQ,gCAAgC;AAuBvE,SACEC,QAAQ,EACRC,WAAW,EACXC,mBAAmB,EACnBC,mBAAmB,EACnBC,cAAc,EACdC,eAAe,EAEfC,gBAAgB,EAChBC,WAAW,EACXC,aAAa,EAEbC,kBAAkB,QACb,yBAAyB;AAChC,SAASC,0BAA0B,QAAQ,kCAAkC;AAC7E,SAASC,2BAA2B,QAAQ,oCAAoC;AAChF,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,qBAAqB,QAAQ,+BAA+B;AAIrE,MAAMC,kBAAqC,GAAG;EAC5CC,MAAM,EAAEC,SAAS;EACjBC,QAAQ,EAAE,KAAK;EACfC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,SAAS,EAAE;IAAEC,mBAAmB,EAAE;EAAM,CAAC;EACzCC,qBAAqB,EAAE;IAAEC,OAAO,EAAE;EAAM,CAAC;EACzCC,gBAAgB,EAAErB,gBAAgB,CAACsB,MAAM;EACzCC,KAAK,EAAE,KAAK;EACZC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE,CAAC;EACTC,WAAW,EAAE,CAAC;EACdC,QAAQ,EAAEC,GAAG;EACbC,YAAY,EAAE,CAAC;EACfC,OAAO,EAAE,MAAM;EACfC,WAAW,EAAEpC,WAAW,CAACqC,GAAG;EAC5BC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAE,EAAE;EACfC,UAAU,EAAE,EAAE;EACdC,kBAAkB,EAAExB,SAAS;EAC7ByB,kBAAkB,EAAEzB,SAAS;EAC7B0B,kBAAkB,EAAE1B,SAAS;EAC7B2B,iBAAiB,EAAE3B;AACrB,CAAC;AAED,OAAO,MAAM4B,iBAAiB,SAAS/C,sBAAsB,CAAuC;EAQlGgD,WAAWA,CAACC,IAAoB,EAAwD;IAAA,IAAtDC,YAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAhC,SAAA,GAAAgC,SAAA,MAAGlC,kBAAkB;IACpF,KAAK,EAAE;IAACoC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,yBAwBe,MAAM;MAC7B,IAAI,IAAI,CAACC,MAAM,CAAClC,QAAQ,EAAE;QACxB,IAAI,CAACmC,IAAI,EAAE;MACb,CAAC,MAAM;QACL,IAAI,CAACC,KAAK,EAAE;MACd;IACF,CAAC;IAAAH,eAAA,kBAEiB,MAAM;MACtB,IAAI,CAACC,MAAM,CAACjC,MAAM,GAAG,IAAI;IAC3B,CAAC;IAAAgC,eAAA,oBAEmB,MAAM;MACxB,IAAI,CAACC,MAAM,CAACjC,MAAM,GAAG,KAAK;IAC5B,CAAC;IAAAgC,eAAA,mCAEmCI,KAAkC,IAAK;MACzE,IAAI,CAACH,MAAM,CAAC1B,gBAAgB,GAAG6B,KAAK,CAAC7B,gBAAgB;IACvD,CAAC;IAAAyB,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,IAAI,CAACH,MAAM,CAACrB,WAAW,GAAGwB,KAAK,CAACxB,WAAW;IAC7C,CAAC;IAAAoB,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,IAAI,CAACH,MAAM,CAACpB,QAAQ,GAAGuB,KAAK,CAACvB,QAAQ;MACrC,IAAI,CAACoB,MAAM,CAACd,WAAW,GAAGiB,KAAK,CAACjB,WAAW;MAC3C,IAAI,CAACc,MAAM,CAACb,WAAW,GAAGgB,KAAK,CAAChB,WAAW;MAC3C,IAAI,CAACa,MAAM,CAACZ,UAAU,GAAGe,KAAK,CAACf,UAAU;MACzC,IAAI,CAACY,MAAM,CAACT,kBAAkB,GAAGY,KAAK,CAACZ,kBAAkB;MACzD,IAAI,CAACS,MAAM,CAACV,kBAAkB,GAAGa,KAAK,CAACb,kBAAkB;MACzD,IAAI,CAACU,MAAM,CAACR,iBAAiB,GAAGW,KAAK,CAACX,iBAAiB;IACzD,CAAC;IAAAO,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,IAAI,CAACH,MAAM,CAACpB,QAAQ,GAAGuB,KAAK,CAACvB,QAAQ;IACvC,CAAC;IAAAmB,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,IAAI,CAACH,MAAM,CAAClB,YAAY,GAAGqB,KAAK,CAACrB,YAAY;IAC/C,CAAC;IAAAiB,eAAA,oBAEmB,MAAM;MACxB,IAAI,CAACC,MAAM,CAACvB,OAAO,GAAG,IAAI;IAC5B,CAAC;IAAAsB,eAAA,mBAEkB,MAAM;MACvB,IAAI,CAACC,MAAM,CAACvB,OAAO,GAAG,KAAK;IAC7B,CAAC;IAAAsB,eAAA,qBAEqBI,KAAoB,IAAK;MAAA,IAAAC,eAAA,EAAAC,eAAA;MAC7C,IAAI,CAACL,MAAM,CAAChC,QAAQ,IAAAoC,eAAA,GAAGD,KAAK,CAACnC,QAAQ,cAAAoC,eAAA,uBAAdA,eAAA,CAAgBE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,GAAG,GAAGD,CAAC,CAACC,GAAG,CAAC;MACpE,IAAI,CAACT,MAAM,CAAC/B,QAAQ,IAAAoC,eAAA,GAAGF,KAAK,CAAClC,QAAQ,cAAAoC,eAAA,uBAAdA,eAAA,CAAgBC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,GAAG,GAAGD,CAAC,CAACC,GAAG,CAAC;IACtE,CAAC;IAAAV,eAAA,0BAE0BI,KAAyB,IAAK;MACvD,MAAM;QAAEO,OAAO;QAAEC;MAAM,CAAC,GAAGR,KAAK;MAChC,QAAQO,OAAO;QACb,KAAKtD,kBAAkB,CAACwD,SAAS;UAC/B,IAAI,CAACZ,MAAM,CAACZ,UAAU,GAAGzC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UAChE;QACF,KAAKvD,kBAAkB,CAACyD,YAAY;UAClC,IAAI,CAACb,MAAM,CAACZ,UAAU,GAAGlC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UACnE;QACF,KAAKvD,kBAAkB,CAAC0D,YAAY;UAClC,IAAI,CAACd,MAAM,CAACZ,UAAU,GAAGlC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UACnE,IAAI,CAACX,MAAM,CAACZ,UAAU,GAAGzC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACZ,UAAU,EAAEuB,KAAK,CAAC;UAChE;MAAM;IAEZ,CAAC;IAAAZ,eAAA,uBAEuBI,KAAsB,IAAK;MACjD,MAAM;QAAEO,OAAO;QAAEK,SAAS;QAAEC;MAAS,CAAC,GAAGb,KAAK;MAC9C,MAAMc,MAAM,GAAGF,SAAS,KAAKhE,cAAc,CAACmE,KAAK,GAAG,IAAI,CAAClB,MAAM,CAACb,WAAW,GAAG,IAAI,CAACa,MAAM,CAACd,WAAW;MACrG,MAAMyB,KAAK,GAAG9D,mBAAmB,CAACoE,MAAM,EAAED,QAAQ,CAAC;MACnD,QAAQN,OAAO;QACb,KAAK5D,mBAAmB,CAACqE,sBAAsB;UAC7C;UACA,IAAIR,KAAK,EAAE;YACTS,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;cAAE,GAAGA,KAAK;cAAEW,aAAa,EAAEnB,KAAK,CAACoB;YAAU,CAAC,CAAC;UACpE;UACA;MAAM;IAEZ,CAAC;IAAAxB,eAAA,2BAE2BI,KAA0B,IAAK;MACzD,MAAM;QAAEO,OAAO;QAAEK,SAAS;QAAEJ;MAAM,CAAC,GAAGR,KAAK;MAC3C,MAAMqB,OAAO,GAAGT,SAAS,KAAKhE,cAAc,CAAC0E,KAAK;MAClD,QAAQf,OAAO;QACb,KAAKtD,kBAAkB,CAACwD,SAAS;UAC/B,IAAIY,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAGvC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACpE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGxC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACpE;UACA;QACF,KAAKvD,kBAAkB,CAACyD,YAAY;UAClC,IAAIW,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAGhC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACvE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGjC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACvE;UACA;QACF,KAAKvD,kBAAkB,CAAC0D,YAAY;UAClC,IAAIU,OAAO,EAAE;YACX,IAAI,CAACxB,MAAM,CAACd,WAAW,GAAGhC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;YACrE,IAAI,CAACX,MAAM,CAACd,WAAW,GAAGvC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACd,WAAW,EAAEyB,KAAK,CAAC;UACpE,CAAC,MAAM;YACL,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGjC,WAAW,CAAC,IAAI,CAAC8C,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;YACrE,IAAI,CAACX,MAAM,CAACb,WAAW,GAAGxC,QAAQ,CAAC,IAAI,CAACqD,MAAM,CAACb,WAAW,EAAEwB,KAAK,CAAC;UACpE;UACA;MAAM;IAEZ,CAAC;IAxIC,IAAI,CAACe,KAAK,GAAG/B,IAAI;IACjB,IAAI,CAACK,MAAM,GAAG;MAAE,GAAGJ;IAAa,CAAC;IACjC,IAAI,CAAC+B,WAAW,GAAG,IAAItE,0BAA0B,CAAC,IAAI,CAACqE,KAAK,CAAC;IAC7D,IAAI,CAACE,YAAY,GAAG,IAAItE,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAACoE,KAAK,CAAC;IACrE,IAAI,CAACG,WAAW,GAAG,IAAItE,UAAU,CAAC,IAAI,CAACmE,KAAK,CAAC;IAC7C,IAAI,CAACI,sBAAsB,GAAG,IAAIpE,qBAAqB,CAAC,IAAI,CAACgE,KAAK,CAAC;IAEnE,IAAI,CAACK,gBAAgB,CAAC/E,eAAe,CAACgF,aAAa,EAAE,IAAI,CAACC,cAAc,CAAC;IACzE,IAAI,CAACF,gBAAgB,CAAC/E,eAAe,CAACkF,eAAe,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC7E,IAAI,CAACJ,gBAAgB,CAAC/E,eAAe,CAACoF,KAAK,EAAE,IAAI,CAACC,OAAO,CAAC;IAC1D,IAAI,CAACN,gBAAgB,CAAC/E,eAAe,CAACsF,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC;IAC9D,IAAI,CAACR,gBAAgB,CAAC/E,eAAe,CAACwF,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACV,gBAAgB,CAAC/E,eAAe,CAAC0F,eAAe,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC7E,IAAI,CAACZ,gBAAgB,CAAC/E,eAAe,CAAC4F,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACd,gBAAgB,CAAC/E,eAAe,CAAC8F,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC;IAC9D,IAAI,CAAChB,gBAAgB,CAAC/E,eAAe,CAACgG,MAAM,EAAE,IAAI,CAACC,QAAQ,CAAC;IAC5D,IAAI,CAAClB,gBAAgB,CAAC/E,eAAe,CAACkG,QAAQ,EAAE,IAAI,CAACC,UAAU,CAAC;IAChE,IAAI,CAACpB,gBAAgB,CAAC/E,eAAe,CAACoG,eAAe,EAAE,IAAI,CAACC,eAAe,CAAC;IAC5E,IAAI,CAACtB,gBAAgB,CAAC/E,eAAe,CAACsG,WAAW,EAAE,IAAI,CAACC,YAAY,CAAC;IACrE,IAAI,CAACxB,gBAAgB,CAAC/E,eAAe,CAACwG,gBAAgB,EAAE,IAAI,CAACC,gBAAgB,CAAC;IAC9E,IAAI,CAAC1B,gBAAgB,CAAC/E,eAAe,CAAC0G,uBAAuB,EAAE,IAAI,CAACC,wBAAwB,CAAC;EAC/F;EAqHA,IAAIC,GAAGA,CAAA,EAAiC;IACtC,OAAOnG,QAAQ,CAACoG,EAAE,KAAK,SAAS,GAAG,IAAI,CAAChC,WAAW,GAAGhE,SAAS;EACjE;EAEA,IAAIiG,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACnC,WAAW;EACzB;EAEA,IAAI7D,QAAQA,CAACA,QAAiB,EAAE;IAC9B,IAAI,CAACkC,MAAM,CAAClC,QAAQ,GAAGA,QAAQ;IAC/BN,aAAa,CAACuG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,CAACnG,QAAQ,CAAC;EAC1E;EAEA,IAAIA,QAAQA,CAAA,EAAY;IACtB,OAAO,IAAI,CAACkC,MAAM,CAAClC,QAAQ;EAC7B;EAEA,IAAIiB,OAAOA,CAACmF,IAAiB,EAAE;IAC7B,IAAI,CAAClE,MAAM,CAACjB,OAAO,GAAGmF,IAAI;IAC1B1G,aAAa,CAACuG,YAAY,CAACI,UAAU,CAAC,IAAI,CAACzC,KAAK,CAACuC,YAAY,EAAEC,IAAI,CAAC;EACtE;EAEA,IAAInF,OAAOA,CAAA,EAAgB;IACzB,OAAO,IAAI,CAACiB,MAAM,CAACjB,OAAO;EAC5B;EAEA,IAAIf,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACgC,MAAM,CAAChC,QAAQ;EAC7B;EAEQoG,WAAWA,CAAA,EAAW;IAC5B,MAAMC,MAAM,GAAG,IAAI,CAACrG,QAAQ;IAC5B,OAAOqG,MAAM,CAACvE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAGuE,MAAM,CAACA,MAAM,CAACvE,MAAM,GAAG,CAAC,CAAC,CAACW,GAAG;EAChE;EAEA,IAAIxC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC+B,MAAM,CAAC/B,QAAQ;EAC7B;EAEA,IAAIqG,IAAIA,CAAA,EAAY;IAClB,OAAO,IAAI,CAAC1C,YAAY;EAC1B;EAEA,IAAIjD,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACqB,MAAM,CAACrB,WAAW;EAChC;EAEA,IAAIA,WAAWA,CAACA,WAAmB,EAAE;IACnC,IAAI4F,KAAK,CAAC5F,WAAW,CAAC,EAAE;MACtB;IACF;;IAEA;IACA,IAAI6F,QAAQ,GAAG7F,WAAW;IAC1B,IAAIA,WAAW,KAAK8F,QAAQ,EAAE;MAC5BD,QAAQ,GAAG,IAAI,CAACJ,WAAW,EAAE;IAC/B;IAEA,IAAI,CAACpE,MAAM,CAACrB,WAAW,GAAG6F,QAAQ;IAClChH,aAAa,CAACuG,YAAY,CAACW,cAAc,CAAC,IAAI,CAAChD,KAAK,CAACuC,YAAY,EAAEO,QAAQ,CAAC;EAC9E;EAEA,IAAI5F,QAAQA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACoB,MAAM,CAACpB,QAAQ;EAC7B;EAEA,IAAI+F,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAAC3E,MAAM,CAAC9B,SAAS;EAC9B;EAEA,IAAIyG,gBAAgBA,CAACA,gBAAkC,EAAE;IACvD,IAAI,CAAC3E,MAAM,CAAC9B,SAAS,GAAGyG,gBAAgB;IACxCnH,aAAa,CAACuG,YAAY,CAACa,YAAY,CAAC,IAAI,CAAClD,KAAK,CAACuC,YAAY,EAAEU,gBAAgB,CAAC;EACpF;EAEA,IAAIE,4BAA4BA,CAAA,EAAiC;IAC/D,OAAO,IAAI,CAAC7E,MAAM,CAAC5B,qBAAqB;EAC1C;EAEA,IAAIyG,4BAA4BA,CAACA,4BAA0D,EAAE;IAC3F,IAAI,CAAC7E,MAAM,CAAC5B,qBAAqB,GAAGyG,4BAA4B;IAChErH,aAAa,CAACuG,YAAY,CAACe,wBAAwB,CAAC,IAAI,CAACpD,KAAK,CAACuC,YAAY,EAAEY,4BAA4B,CAAC;EAC5G;EAEA,IAAIvG,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAAC0B,MAAM,CAAC1B,gBAAgB;EACrC;EAEA,IAAIA,gBAAgBA,CAACA,gBAAkC,EAAE;IACvD,IAAI,CAAC0B,MAAM,CAAC1B,gBAAgB,GAAGA,gBAAgB;IAC/Cd,aAAa,CAACuG,YAAY,CAACgB,mBAAmB,CAAC,IAAI,CAACrD,KAAK,CAACuC,YAAY,EAAE3F,gBAAgB,CAAC;EAC3F;EAEA,IAAIE,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACwB,MAAM,CAACxB,KAAK;EAC1B;EAEA,IAAIA,KAAKA,CAACA,KAAc,EAAE;IACxB,IAAI,CAACwB,MAAM,CAACxB,KAAK,GAAGA,KAAK;IACzBhB,aAAa,CAACuG,YAAY,CAACiB,QAAQ,CAAC,IAAI,CAACtD,KAAK,CAACuC,YAAY,EAAEzF,KAAK,CAAC;EACrE;EAEA,IAAIC,OAAOA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACuB,MAAM,CAACvB,OAAO;EAC5B;EAEA,IAAIV,MAAMA,CAAA,EAAY;IACpB,OAAO,IAAI,CAACiC,MAAM,CAACjC,MAAM;EAC3B;EAEA,IAAIe,YAAYA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACkB,MAAM,CAAClB,YAAY;EACjC;EAEA,IAAIA,YAAYA,CAACA,YAAoB,EAAE;IACrC,IAAI,CAACkB,MAAM,CAAClB,YAAY,GAAGA,YAAY;IACvCtB,aAAa,CAACuG,YAAY,CAACkB,eAAe,CAAC,IAAI,CAACvD,KAAK,CAACuC,YAAY,EAAEnF,YAAY,CAAC;EACnF;EAEA,IAAII,WAAWA,CAAA,EAAiB;IAC9B,OAAO,IAAI,CAACc,MAAM,CAACd,WAAW;EAChC;EAEA,IAAIK,kBAAkBA,CAAA,EAAuB;IAC3C,OAAO,IAAI,CAACS,MAAM,CAACT,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAACyB,QAA4B,EAAE;IACnD,IAAI,CAAChB,MAAM,CAACT,kBAAkB,GAAGyB,QAAQ;IACzCxD,aAAa,CAACuG,YAAY,CAACmB,qBAAqB,CAAC,IAAI,CAACxD,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC3F;EAEA,IAAI7B,WAAWA,CAAA,EAAiB;IAC9B,OAAO,IAAI,CAACa,MAAM,CAACb,WAAW;EAChC;EAEA,IAAIG,kBAAkBA,CAAA,EAAuB;IAC3C,OAAO,IAAI,CAACU,MAAM,CAACV,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAAC0B,QAA4B,EAAE;IACnD,IAAI,CAAChB,MAAM,CAACV,kBAAkB,GAAG0B,QAAQ;IACzC,IAAI,CAAChB,MAAM,CAACX,kBAAkB,GAAGxB,SAAS;IAC1CL,aAAa,CAACuG,YAAY,CAACoB,qBAAqB,CAAC,IAAI,CAACzD,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC3F;EAEA,IAAI5B,UAAUA,CAAA,EAAgB;IAC5B,OAAO,IAAI,CAACY,MAAM,CAACZ,UAAU;EAC/B;EAEA,IAAII,iBAAiBA,CAAA,EAAuB;IAC1C,OAAO,IAAI,CAACQ,MAAM,CAACR,iBAAiB;EACtC;EAEA,IAAIA,iBAAiBA,CAACwB,QAA4B,EAAE;IAClD,IAAI,CAAChB,MAAM,CAACR,iBAAiB,GAAGwB,QAAQ;IACxC,IAAI,CAAC5B,UAAU,CAACgG,OAAO,CAAEzE,KAAK,IAAK;MACjC,IAAIA,KAAK,CAAC0E,GAAG,KAAKrE,QAAQ,EAAE;QAC1BL,KAAK,CAAC2E,IAAI,GAAGnI,aAAa,CAACoI,OAAO;MACpC,CAAC,MAAM,IAAI5E,KAAK,CAAC2E,IAAI,KAAKnI,aAAa,CAACoI,OAAO,EAAE;QAC/C5E,KAAK,CAAC2E,IAAI,GAAGnI,aAAa,CAACqI,QAAQ;MACrC;IACF,CAAC,CAAC;IACFhI,aAAa,CAACuG,YAAY,CAAC0B,oBAAoB,CAAC,IAAI,CAAC/D,KAAK,CAACuC,YAAY,EAAEjD,QAAQ,IAAI,CAAC,CAAC,CAAC;EAC1F;EAEA,IAAI0E,cAAcA,CAAA,EAAmB;IACnC,OAAO,IAAI,CAAC5D,sBAAsB;EACpC;EAEA,IAAIlE,MAAMA,CAAA,EAAkC;IAC1C,OAAO,IAAI,CAACoC,MAAM,CAACpC,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACA,MAAqC,EAAE;IAChD;IACA,IAAI,CAACsC,KAAK,EAAE;IACZ,IAAI,CAACF,MAAM,CAACpC,MAAM,GAAGA,MAAM;IAC3BJ,aAAa,CAACuG,YAAY,CAAC4B,SAAS,CAAC,IAAI,CAACjE,KAAK,CAACuC,YAAY,EAAErG,MAAM,CAAC;IACrE;IACAwD,MAAM,CAACC,MAAM,CAAC,IAAI,CAACrB,MAAM,EAAE;MACzBlB,YAAY,EAAE,CAAC;MACfL,OAAO,EAAE,KAAK;MACdS,WAAW,EAAE,EAAE;MACfC,WAAW,EAAE,EAAE;MACfC,UAAU,EAAE,EAAE;MACdpB,QAAQ,EAAE,EAAE;MACZC,QAAQ,EAAE,EAAE;MACZuB,iBAAiB,EAAE3B,SAAS;MAC5ByB,kBAAkB,EAAEzB,SAAS;MAC7B0B,kBAAkB,EAAE1B,SAAS;MAC7BwB,kBAAkB,EAAExB;IACtB,CAAC,CAAC;EACJ;EAEA,IAAIwB,kBAAkBA,CAAA,EAAkC;IACtD,OAAO,IAAI,CAACW,MAAM,CAACX,kBAAkB;EACvC;EAEA,IAAIA,kBAAkBA,CAACuG,MAAqC,EAAE;IAC5D;IACA,IAAI,CAAC5F,MAAM,CAACX,kBAAkB,GAAG,CAACuG,MAAM,GAAG,EAAE,GAAGC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;;IAEzF;IACA,MAAMjF,KAAK,GAAG9D,mBAAmB,CAAC,IAAI,CAACmD,MAAM,CAACb,WAAW,EAAE,IAAI,CAACG,kBAAkB,CAAC;IACnF,IAAIqB,KAAK,EAAE;MACTS,MAAM,CAACC,MAAM,CAACV,KAAK,EAAE;QAAE,GAAGA,KAAK;QAAEoF,aAAa,EAAE,IAAI,CAAC/F,MAAM,CAACX;MAAmB,CAAC,CAAC;IACnF;IACA7B,aAAa,CAACuG,YAAY,CAACiC,qBAAqB,CAAC,IAAI,CAACtE,KAAK,CAACuC,YAAY,EAAE,IAAI,CAACjE,MAAM,CAACX,kBAAkB,CAAC;EAC3G;EAEA,IAAIX,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACsB,MAAM,CAACtB,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACA,MAAc,EAAE;IACzB,IAAI,CAACsB,MAAM,CAACtB,MAAM,GAAGA,MAAM;IAC3BlB,aAAa,CAACuG,YAAY,CAACkC,SAAS,CAAC,IAAI,CAACvE,KAAK,CAACuC,YAAY,EAAEvF,MAAM,CAAC;EACvE;EAEA,IAAIM,WAAWA,CAAA,EAAgB;IAC7B,OAAO,IAAI,CAACgB,MAAM,CAAChB,WAAW;EAChC;EAEA,IAAIA,WAAWA,CAACkH,KAAkB,EAAE;IAClC,IAAI,CAAClG,MAAM,CAAChB,WAAW,GAAGkH,KAAK;IAC/B1I,aAAa,CAACuG,YAAY,CAACoC,cAAc,CAAC,IAAI,CAACzE,KAAK,CAACuC,YAAY,EAAEiC,KAAK,CAAC;EAC3E;EAEAhG,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACF,MAAM,CAACjC,MAAM,GAAG,IAAI;IACzBP,aAAa,CAACuG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,IAAI,CAAC;EACrE;EAEAhE,IAAIA,CAAA,EAAS;IACX,IAAI,CAACD,MAAM,CAACjC,MAAM,GAAG,KAAK;IAC1BP,aAAa,CAACuG,YAAY,CAACC,SAAS,CAAC,IAAI,CAACtC,KAAK,CAACuC,YAAY,EAAE,KAAK,CAAC;EACtE;EAEA,IAAIA,YAAYA,CAAA,EAAqB;IACnC,OAAO,IAAI,CAACvC,KAAK,CAACuC,YAAY;EAChC;EAEAmC,gCAAgCA,CAACC,KAAwB,EAAE;IACzDjF,MAAM,CAACC,MAAM,CAAC,IAAI,CAACrB,MAAM,EAAEqG,KAAK,CAAC;IACjC,IAAI,CAACzE,YAAY,CAAC0E,KAAK,EAAE;EAC3B;AACF"}
|
|
@@ -2,13 +2,14 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
2
2
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
3
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
4
|
import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';
|
|
5
|
+
import { AspectRatio, PlayerEventType, PresentationMode } from 'react-native-theoplayer';
|
|
5
6
|
import { THEOplayerWebAdsAdapter } from './ads/THEOplayerWebAdsAdapter';
|
|
6
7
|
import { THEOplayerWebCastAdapter } from './cast/THEOplayerWebCastAdapter';
|
|
7
8
|
import { findNativeQualitiesByUid, fromNativeMediaTrackList, fromNativeTextTrackList } from './web/TrackUtils';
|
|
8
9
|
import { WebEventForwarder } from './WebEventForwarder';
|
|
9
10
|
import { WebPresentationModeManager } from './web/WebPresentationModeManager';
|
|
10
11
|
import { WebMediaSession } from './web/WebMediaSession';
|
|
11
|
-
import {
|
|
12
|
+
import { BaseEvent } from './event/BaseEvent';
|
|
12
13
|
const defaultBackgroundAudioConfiguration = {
|
|
13
14
|
enabled: false
|
|
14
15
|
};
|
|
@@ -19,17 +20,20 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
19
20
|
constructor(player, config) {
|
|
20
21
|
var _config$mediaControl;
|
|
21
22
|
super();
|
|
22
|
-
_defineProperty(this, "_player", void 0);
|
|
23
23
|
_defineProperty(this, "_adsAdapter", void 0);
|
|
24
24
|
_defineProperty(this, "_castAdapter", void 0);
|
|
25
|
-
_defineProperty(this, "_eventForwarder", void 0);
|
|
26
25
|
_defineProperty(this, "_presentationModeManager", void 0);
|
|
26
|
+
_defineProperty(this, "_player", void 0);
|
|
27
|
+
_defineProperty(this, "_eventForwarder", void 0);
|
|
27
28
|
_defineProperty(this, "_mediaSession", undefined);
|
|
28
29
|
_defineProperty(this, "_targetVideoQuality", undefined);
|
|
29
30
|
_defineProperty(this, "_backgroundAudioConfiguration", defaultBackgroundAudioConfiguration);
|
|
30
31
|
_defineProperty(this, "_pipConfiguration", defaultPipConfiguration);
|
|
31
32
|
_defineProperty(this, "onVisibilityChange", () => {
|
|
32
33
|
var _this$_mediaSession;
|
|
34
|
+
if (!this._player) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
33
37
|
if (document.visibilityState !== 'visible') {
|
|
34
38
|
// Apply background configuration: by default, pause when going to background, unless in pip
|
|
35
39
|
if (this.presentationMode !== PresentationMode.pip && !this.backgroundAudioConfiguration.enabled) {
|
|
@@ -52,37 +56,51 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
get abr() {
|
|
55
|
-
|
|
59
|
+
var _this$_player;
|
|
60
|
+
return (_this$_player = this._player) === null || _this$_player === void 0 ? void 0 : _this$_player.abr;
|
|
56
61
|
}
|
|
57
62
|
get source() {
|
|
58
|
-
|
|
63
|
+
var _this$_player2;
|
|
64
|
+
return (_this$_player2 = this._player) === null || _this$_player2 === void 0 ? void 0 : _this$_player2.source;
|
|
59
65
|
}
|
|
60
66
|
set source(source) {
|
|
61
67
|
this._targetVideoQuality = undefined;
|
|
62
|
-
this._player
|
|
68
|
+
if (this._player) {
|
|
69
|
+
this._player.source = source;
|
|
70
|
+
}
|
|
63
71
|
}
|
|
64
72
|
play() {
|
|
65
|
-
|
|
73
|
+
var _this$_player3;
|
|
74
|
+
(_this$_player3 = this._player) === null || _this$_player3 === void 0 ? void 0 : _this$_player3.play();
|
|
66
75
|
}
|
|
67
76
|
pause() {
|
|
68
|
-
|
|
77
|
+
var _this$_player4;
|
|
78
|
+
(_this$_player4 = this._player) === null || _this$_player4 === void 0 ? void 0 : _this$_player4.pause();
|
|
69
79
|
}
|
|
70
80
|
get paused() {
|
|
71
|
-
return this._player.paused;
|
|
81
|
+
return this._player ? this._player.paused : true;
|
|
72
82
|
}
|
|
73
83
|
get autoplay() {
|
|
74
|
-
return this._player.autoplay;
|
|
84
|
+
return this._player ? this._player.autoplay : false;
|
|
75
85
|
}
|
|
76
86
|
set autoplay(autoplay) {
|
|
77
|
-
this._player
|
|
87
|
+
if (this._player) {
|
|
88
|
+
this._player.autoplay = autoplay;
|
|
89
|
+
}
|
|
78
90
|
}
|
|
79
91
|
set preload(type) {
|
|
80
|
-
this._player
|
|
92
|
+
if (this._player) {
|
|
93
|
+
this._player.preload = type;
|
|
94
|
+
}
|
|
81
95
|
}
|
|
82
96
|
get preload() {
|
|
83
|
-
|
|
97
|
+
var _this$_player5;
|
|
98
|
+
return ((_this$_player5 = this._player) === null || _this$_player5 === void 0 ? void 0 : _this$_player5.preload) || 'none';
|
|
84
99
|
}
|
|
85
100
|
get seekable() {
|
|
101
|
+
if (!this._player) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
86
104
|
const nativeRange = this._player.seekable;
|
|
87
105
|
return [...Array(nativeRange.length)].map((_, index) => ({
|
|
88
106
|
start: 1e3 * nativeRange.start(index),
|
|
@@ -90,6 +108,9 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
90
108
|
}));
|
|
91
109
|
}
|
|
92
110
|
get buffered() {
|
|
111
|
+
if (!this._player) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
93
114
|
const nativeRange = this._player.buffered;
|
|
94
115
|
return [...Array(nativeRange.length)].map((_, index) => ({
|
|
95
116
|
start: 1e3 * nativeRange.start(index),
|
|
@@ -97,10 +118,12 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
97
118
|
}));
|
|
98
119
|
}
|
|
99
120
|
get playbackRate() {
|
|
100
|
-
return this._player.playbackRate;
|
|
121
|
+
return this._player ? this._player.playbackRate : 1;
|
|
101
122
|
}
|
|
102
123
|
set playbackRate(playbackRate) {
|
|
103
|
-
this._player
|
|
124
|
+
if (this._player) {
|
|
125
|
+
this._player.playbackRate = playbackRate;
|
|
126
|
+
}
|
|
104
127
|
}
|
|
105
128
|
get pipConfiguration() {
|
|
106
129
|
return this._pipConfiguration;
|
|
@@ -119,19 +142,23 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
119
142
|
(_this$_mediaSession2 = this._mediaSession) === null || _this$_mediaSession2 === void 0 ? void 0 : _this$_mediaSession2.updateActionHandlers();
|
|
120
143
|
}
|
|
121
144
|
get volume() {
|
|
122
|
-
return this._player.volume;
|
|
145
|
+
return this._player ? this._player.volume : 1;
|
|
123
146
|
}
|
|
124
147
|
set volume(volume) {
|
|
125
|
-
this._player
|
|
148
|
+
if (this._player) {
|
|
149
|
+
this._player.volume = volume;
|
|
150
|
+
}
|
|
126
151
|
}
|
|
127
152
|
get muted() {
|
|
128
|
-
return this._player.muted;
|
|
153
|
+
return this._player ? this._player.muted : false;
|
|
129
154
|
}
|
|
130
155
|
set muted(muted) {
|
|
131
|
-
this._player
|
|
156
|
+
if (this._player) {
|
|
157
|
+
this._player.muted = muted;
|
|
158
|
+
}
|
|
132
159
|
}
|
|
133
160
|
get seeking() {
|
|
134
|
-
return this._player.seeking;
|
|
161
|
+
return this._player ? this._player.seeking : false;
|
|
135
162
|
}
|
|
136
163
|
get presentationMode() {
|
|
137
164
|
return this._presentationModeManager.presentationMode;
|
|
@@ -140,61 +167,82 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
140
167
|
this._presentationModeManager.presentationMode = presentationMode;
|
|
141
168
|
}
|
|
142
169
|
get audioTracks() {
|
|
143
|
-
return fromNativeMediaTrackList(this._player.audioTracks);
|
|
170
|
+
return this._player ? fromNativeMediaTrackList(this._player.audioTracks) : [];
|
|
144
171
|
}
|
|
145
172
|
get videoTracks() {
|
|
146
|
-
return fromNativeMediaTrackList(this._player.videoTracks);
|
|
173
|
+
return this._player ? fromNativeMediaTrackList(this._player.videoTracks) : [];
|
|
147
174
|
}
|
|
148
175
|
get textTracks() {
|
|
149
|
-
return fromNativeTextTrackList(this._player.textTracks);
|
|
176
|
+
return this._player ? fromNativeTextTrackList(this._player.textTracks) : [];
|
|
150
177
|
}
|
|
151
178
|
get selectedTextTrack() {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return textTrack
|
|
155
|
-
|
|
179
|
+
if (this._player) {
|
|
180
|
+
var _this$_player$textTra;
|
|
181
|
+
return (_this$_player$textTra = this._player.textTracks.find(textTrack => {
|
|
182
|
+
return textTrack.mode === 'showing';
|
|
183
|
+
})) === null || _this$_player$textTra === void 0 ? void 0 : _this$_player$textTra.uid;
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
156
186
|
}
|
|
157
187
|
set selectedTextTrack(selectedTextTrack) {
|
|
158
|
-
this._player
|
|
159
|
-
|
|
160
|
-
|
|
188
|
+
if (this._player) {
|
|
189
|
+
this._player.textTracks.forEach(textTrack => {
|
|
190
|
+
textTrack.mode = textTrack.uid === selectedTextTrack ? 'showing' : 'disabled';
|
|
191
|
+
});
|
|
192
|
+
}
|
|
161
193
|
}
|
|
162
194
|
get textTrackStyle() {
|
|
163
|
-
|
|
195
|
+
var _this$_player6;
|
|
196
|
+
return (_this$_player6 = this._player) === null || _this$_player6 === void 0 ? void 0 : _this$_player6.textTrackStyle;
|
|
164
197
|
}
|
|
165
198
|
get selectedVideoTrack() {
|
|
166
|
-
|
|
167
|
-
|
|
199
|
+
if (this._player) {
|
|
200
|
+
var _this$_player$videoTr;
|
|
201
|
+
return (_this$_player$videoTr = this._player.videoTracks.find(videoTrack => videoTrack.enabled)) === null || _this$_player$videoTr === void 0 ? void 0 : _this$_player$videoTr.uid;
|
|
202
|
+
}
|
|
203
|
+
return undefined;
|
|
168
204
|
}
|
|
169
205
|
set selectedVideoTrack(selectedVideoTrack) {
|
|
170
|
-
this.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
206
|
+
if (this._player) {
|
|
207
|
+
this._targetVideoQuality = undefined;
|
|
208
|
+
this._player.videoTracks.forEach(videoTrack => {
|
|
209
|
+
videoTrack.enabled = videoTrack.uid === selectedVideoTrack;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
174
212
|
}
|
|
175
213
|
get selectedAudioTrack() {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
return audioTrack
|
|
179
|
-
|
|
214
|
+
if (this._player) {
|
|
215
|
+
var _this$_player$audioTr;
|
|
216
|
+
return (_this$_player$audioTr = this._player.audioTracks.find(audioTrack => {
|
|
217
|
+
return audioTrack.enabled;
|
|
218
|
+
})) === null || _this$_player$audioTr === void 0 ? void 0 : _this$_player$audioTr.uid;
|
|
219
|
+
}
|
|
220
|
+
return undefined;
|
|
180
221
|
}
|
|
181
222
|
set selectedAudioTrack(selectedAudioTrack) {
|
|
182
|
-
this._player
|
|
183
|
-
|
|
184
|
-
|
|
223
|
+
if (this._player) {
|
|
224
|
+
this._player.audioTracks.forEach(audioTrack => {
|
|
225
|
+
audioTrack.enabled = audioTrack.uid === selectedAudioTrack;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
185
228
|
}
|
|
186
229
|
get targetVideoQuality() {
|
|
187
|
-
|
|
230
|
+
if (this._player) {
|
|
231
|
+
return this._targetVideoQuality;
|
|
232
|
+
}
|
|
233
|
+
return undefined;
|
|
188
234
|
}
|
|
189
235
|
set targetVideoQuality(targetVideoQuality) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
236
|
+
if (this._player) {
|
|
237
|
+
const enabledVideoTrack = this._player.videoTracks.find(videoTrack => videoTrack.enabled);
|
|
238
|
+
if (enabledVideoTrack) {
|
|
239
|
+
enabledVideoTrack.targetQuality = findNativeQualitiesByUid(enabledVideoTrack, targetVideoQuality);
|
|
240
|
+
}
|
|
241
|
+
this._targetVideoQuality = targetVideoQuality;
|
|
193
242
|
}
|
|
194
|
-
this._targetVideoQuality = targetVideoQuality;
|
|
195
243
|
}
|
|
196
244
|
get currentTime() {
|
|
197
|
-
return 1e3 * this._player.currentTime;
|
|
245
|
+
return this._player ? 1e3 * this._player.currentTime : NaN;
|
|
198
246
|
}
|
|
199
247
|
set currentTime(currentTime) {
|
|
200
248
|
if (isNaN(currentTime)) {
|
|
@@ -204,8 +252,14 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
204
252
|
this._player.currentTime = currentTime / 1e3;
|
|
205
253
|
}
|
|
206
254
|
}
|
|
255
|
+
get aspectRatio() {
|
|
256
|
+
return AspectRatio.FIT;
|
|
257
|
+
}
|
|
258
|
+
set aspectRatio(_ratio) {
|
|
259
|
+
// unused
|
|
260
|
+
}
|
|
207
261
|
get duration() {
|
|
208
|
-
return this._player.duration * 1e3;
|
|
262
|
+
return this._player ? this._player.duration * 1e3 : NaN;
|
|
209
263
|
}
|
|
210
264
|
get ads() {
|
|
211
265
|
return this._adsAdapter;
|
|
@@ -214,10 +268,15 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher {
|
|
|
214
268
|
return this._castAdapter;
|
|
215
269
|
}
|
|
216
270
|
destroy() {
|
|
217
|
-
var _this$_mediaSession3;
|
|
218
|
-
this.
|
|
271
|
+
var _this$_eventForwarder, _this$_mediaSession3, _this$_player7;
|
|
272
|
+
this.dispatchEvent(new BaseEvent(PlayerEventType.DESTROY));
|
|
273
|
+
(_this$_eventForwarder = this._eventForwarder) === null || _this$_eventForwarder === void 0 ? void 0 : _this$_eventForwarder.unload();
|
|
219
274
|
(_this$_mediaSession3 = this._mediaSession) === null || _this$_mediaSession3 === void 0 ? void 0 : _this$_mediaSession3.destroy();
|
|
220
275
|
document.removeEventListener('visibilitychange', this.onVisibilityChange);
|
|
276
|
+
this._eventForwarder = undefined;
|
|
277
|
+
this._mediaSession = undefined;
|
|
278
|
+
(_this$_player7 = this._player) === null || _this$_player7 === void 0 ? void 0 : _this$_player7.destroy();
|
|
279
|
+
this._player = undefined;
|
|
221
280
|
}
|
|
222
281
|
get nativeHandle() {
|
|
223
282
|
return this._player;
|