react-native-theoplayer 7.3.0 → 7.5.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 +15 -0
- package/README.md +12 -12
- package/android/build.gradle +5 -4
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.0/ads-wrapper-7.6.0.aar +0 -0
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{7.0.0/ads-wrapper-7.0.0.pom → 7.6.0/ads-wrapper-7.6.0.pom} +2 -2
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
- package/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +9 -0
- package/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt +34 -0
- package/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt +51 -0
- package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +23 -58
- package/ios/THEOplayerRCTPlayerAPI.swift +28 -3
- package/ios/THEOplayerRCTView.swift +7 -0
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +12 -4
- package/ios/backgroundAudio/THEOplayerRCTView+MediaControlConfig.swift +23 -0
- package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/commonjs/api/barrel.js +22 -11
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/resolution/Resolution.js +2 -0
- package/lib/commonjs/api/resolution/Resolution.js.map +1 -0
- package/lib/commonjs/api/resolution/barrel.js +17 -0
- package/lib/commonjs/api/resolution/barrel.js.map +1 -0
- package/lib/commonjs/api/source/ads/barrel.js +0 -22
- package/lib/commonjs/api/source/ads/barrel.js.map +1 -1
- package/lib/commonjs/api/source/ads/ssai/barrel.js +0 -22
- package/lib/commonjs/api/source/ads/ssai/barrel.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.js +30 -4
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +3 -3
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/abr/AbrAdapter.js +17 -1
- package/lib/commonjs/internal/adapter/abr/AbrAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/cast/THEOplayerNativeCastAdapter.js +3 -3
- package/lib/commonjs/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
- package/lib/commonjs/internal/poster/Poster.js +31 -0
- package/lib/commonjs/internal/poster/Poster.js.map +1 -0
- package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/module/api/barrel.js +1 -0
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/resolution/Resolution.js +2 -0
- package/lib/module/api/resolution/Resolution.js.map +1 -0
- package/lib/module/api/resolution/barrel.js +2 -0
- package/lib/module/api/resolution/barrel.js.map +1 -0
- package/lib/module/api/source/ads/barrel.js +0 -2
- package/lib/module/api/source/ads/barrel.js.map +1 -1
- package/lib/module/api/source/ads/ssai/barrel.js +0 -2
- package/lib/module/api/source/ads/ssai/barrel.js.map +1 -1
- package/lib/module/internal/THEOplayerView.js +30 -4
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +3 -3
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/abr/AbrAdapter.js +17 -1
- package/lib/module/internal/adapter/abr/AbrAdapter.js.map +1 -1
- package/lib/module/internal/adapter/cast/THEOplayerNativeCastAdapter.js +3 -3
- package/lib/module/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
- package/lib/module/internal/poster/Poster.js +23 -0
- package/lib/module/internal/poster/Poster.js.map +1 -0
- package/lib/typescript/api/abr/ABRConfiguration.d.ts +23 -0
- package/lib/typescript/api/abr/ABRConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/barrel.d.ts +1 -0
- package/lib/typescript/api/barrel.d.ts.map +1 -1
- package/lib/typescript/api/media/MediaControlConfiguration.d.ts +2 -8
- package/lib/typescript/api/media/MediaControlConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +1 -4
- package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
- package/lib/typescript/api/resolution/Resolution.d.ts +5 -0
- package/lib/typescript/api/resolution/Resolution.d.ts.map +1 -0
- package/lib/typescript/api/resolution/barrel.d.ts +2 -0
- package/lib/typescript/api/resolution/barrel.d.ts.map +1 -0
- package/lib/typescript/api/source/SourceDescription.d.ts +0 -1
- package/lib/typescript/api/source/SourceDescription.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/barrel.d.ts +0 -2
- package/lib/typescript/api/source/ads/barrel.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/ssai/GoogleDAIConfiguration.d.ts +0 -9
- package/lib/typescript/api/source/ads/ssai/GoogleDAIConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts +3 -10
- package/lib/typescript/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/ssai/barrel.d.ts +0 -2
- package/lib/typescript/api/source/ads/ssai/barrel.d.ts.map +1 -1
- package/lib/typescript/internal/THEOplayerView.d.ts +5 -0
- package/lib/typescript/internal/THEOplayerView.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/abr/AbrAdapter.d.ts +7 -1
- package/lib/typescript/internal/adapter/abr/AbrAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/cast/THEOplayerNativeCastAdapter.d.ts +1 -1
- package/lib/typescript/internal/adapter/cast/THEOplayerNativeCastAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/poster/Poster.d.ts +5 -0
- package/lib/typescript/internal/poster/Poster.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/api/abr/ABRConfiguration.ts +26 -0
- package/src/api/barrel.ts +1 -0
- package/src/api/media/MediaControlConfiguration.ts +2 -8
- package/src/api/player/THEOplayer.ts +1 -4
- package/src/api/resolution/Resolution.ts +5 -0
- package/src/api/resolution/barrel.ts +1 -0
- package/src/api/source/SourceDescription.ts +0 -1
- package/src/api/source/ads/barrel.ts +0 -2
- package/src/api/source/ads/ssai/GoogleDAIConfiguration.ts +0 -9
- package/src/api/source/ads/ssai/ServerSideAdInsertionConfiguration.ts +3 -10
- package/src/api/source/ads/ssai/barrel.ts +0 -2
- package/src/internal/THEOplayerView.tsx +25 -3
- package/src/internal/adapter/THEOplayerAdapter.ts +3 -3
- package/src/internal/adapter/abr/AbrAdapter.ts +23 -1
- package/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts +3 -3
- package/src/internal/poster/Poster.tsx +14 -0
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.0.0/ads-wrapper-7.0.0.aar +0 -0
- package/lib/commonjs/api/source/ads/FreeWheelAdDescription.js +0 -6
- package/lib/commonjs/api/source/ads/FreeWheelAdDescription.js.map +0 -1
- package/lib/commonjs/api/source/ads/SpotXAdDescription.js +0 -6
- package/lib/commonjs/api/source/ads/SpotXAdDescription.js.map +0 -1
- package/lib/commonjs/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js +0 -6
- package/lib/commonjs/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js.map +0 -1
- package/lib/commonjs/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js +0 -6
- package/lib/commonjs/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js.map +0 -1
- package/lib/module/api/source/ads/FreeWheelAdDescription.js +0 -2
- package/lib/module/api/source/ads/FreeWheelAdDescription.js.map +0 -1
- package/lib/module/api/source/ads/SpotXAdDescription.js +0 -2
- package/lib/module/api/source/ads/SpotXAdDescription.js.map +0 -1
- package/lib/module/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js +0 -2
- package/lib/module/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.js.map +0 -1
- package/lib/module/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js +0 -2
- package/lib/module/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.js.map +0 -1
- package/lib/typescript/api/source/ads/FreeWheelAdDescription.d.ts +0 -86
- package/lib/typescript/api/source/ads/FreeWheelAdDescription.d.ts.map +0 -1
- package/lib/typescript/api/source/ads/SpotXAdDescription.d.ts +0 -116
- package/lib/typescript/api/source/ads/SpotXAdDescription.d.ts.map +0 -1
- package/lib/typescript/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts +0 -28
- package/lib/typescript/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts.map +0 -1
- package/lib/typescript/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts +0 -47
- package/lib/typescript/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts.map +0 -1
- package/src/api/source/ads/FreeWheelAdDescription.ts +0 -97
- package/src/api/source/ads/SpotXAdDescription.ts +0 -126
- package/src/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.ts +0 -30
- package/src/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.ts +0 -51
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [7.5.0] - 24-06-18
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fixed an issue where the Cast API wouldn't be initialized yet when in the `onPlayerReady` callback.
|
|
13
|
+
- Added support for THEOplayer Android v7.6.0.
|
|
14
|
+
|
|
15
|
+
## [7.4.0] - 24-06-11
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Added support for `SourceDescription.poster` for Android & iOS.
|
|
20
|
+
- Made the intervals for the forward and backward skip buttons on the iOS lockScreen configurable.
|
|
21
|
+
- Added preferredPeakBitRate and preferredMaximumResolution to ABRConfiguration for iOS
|
|
22
|
+
|
|
8
23
|
## [7.3.0] - 24-06-03
|
|
9
24
|
|
|
10
25
|
### Changed
|
package/README.md
CHANGED
|
@@ -131,18 +131,18 @@ please reach out to us for support.
|
|
|
131
131
|
The `react-native-theoplayer` package can be combined with any number of connectors to provide extra
|
|
132
132
|
functionality. Currently, the following connectors are available:
|
|
133
133
|
|
|
134
|
-
|
|
|
135
|
-
|
|
136
|
-
| [
|
|
137
|
-
| [
|
|
138
|
-
| [
|
|
139
|
-
| [
|
|
140
|
-
| [
|
|
141
|
-
| [
|
|
142
|
-
| [
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
134
|
+
| Connector | npm package | Source |
|
|
135
|
+
|----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
|
|
136
|
+
| Adobe analytics, implementing the Media Collections API | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-adobe) | [`Adobe`](https://github.com/THEOplayer/react-native-connectors/tree/main/adobe) |
|
|
137
|
+
| Agama analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-agama) | [`Agama`](https://github.com/THEOplayer/react-native-connectors/tree/main/agama) |
|
|
138
|
+
| Comscore analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-comscore) | [`Comscore`](https://github.com/THEOplayer/react-native-connectors/tree/main/comscore) |
|
|
139
|
+
| Conviva analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-conviva) | [`Conviva`](https://github.com/THEOplayer/react-native-connectors/tree/main/conviva) |
|
|
140
|
+
| Mux analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-mux) | [`Mux`](https://github.com/THEOplayer/react-native-connectors/tree/main/mux) |
|
|
141
|
+
| Nielsen analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-nielsen) | [`Nielsen`](https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen) |
|
|
142
|
+
| Youbora analytics | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-youbora) | [`Youbora`](https://github.com/THEOplayer/react-native-connectors/tree/main/youbora) |
|
|
143
|
+
| Content protection (DRM) | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-drm) | [`DRM`](https://github.com/THEOplayer/react-native-theoplayer-drm) |
|
|
144
|
+
| React Native Open UI | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-ui) | [`Open UI`](https://github.com/THEOplayer/react-native-theoplayer-ui) |
|
|
145
|
+
| A template for<br/>`react-native-theoplayer` connectors. | [](https://www.npmjs.com/package/%40theoplayer%2Freact-native-connector-template) | [`Connector template`](https://github.com/THEOplayer/react-native-theoplayer-connector-template) |
|
|
146
146
|
|
|
147
147
|
## Creating your first app
|
|
148
148
|
|
package/android/build.gradle
CHANGED
|
@@ -112,13 +112,14 @@ dependencies {
|
|
|
112
112
|
implementation "androidx.appcompat:appcompat:${safeExtGet('appcompatVersion', '1.6.1')}"
|
|
113
113
|
implementation "androidx.core:core-ktx:${safeExtGet('corektxVersion', '1.10.1')}"
|
|
114
114
|
|
|
115
|
-
// The minimum supported THEOplayer version is 7.
|
|
116
|
-
def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[7.
|
|
115
|
+
// The minimum supported THEOplayer version is 7.6.0
|
|
116
|
+
def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[7.6.0, 8.0.0)')
|
|
117
|
+
def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[7.5.0, 8.0.0)')
|
|
117
118
|
|
|
118
119
|
println("Using THEOplayer (${versionString(theoplayer_sdk_version)})")
|
|
119
120
|
implementation "com.theoplayer.theoplayer-sdk-android:core:${theoplayer_sdk_version}"
|
|
120
|
-
implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:7.
|
|
121
|
-
implementation "com.theoplayer.android-connector:mediasession:${
|
|
121
|
+
implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:7.6.0"
|
|
122
|
+
implementation "com.theoplayer.android-connector:mediasession:${theoplayer_mediasession_version}"
|
|
122
123
|
|
|
123
124
|
if (enabledGoogleIMA) {
|
|
124
125
|
println('Enable THEOplayer IMA extension.')
|
package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.0/ads-wrapper-7.6.0.aar
ADDED
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
3
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
4
|
-
<modelVersion>7.
|
|
4
|
+
<modelVersion>7.6.0</modelVersion>
|
|
5
5
|
<groupId>com.theoplayer.theoplayer-sdk-android</groupId>
|
|
6
6
|
<artifactId>ads-wrapper</artifactId>
|
|
7
|
-
<version>7.
|
|
7
|
+
<version>7.6.0</version>
|
|
8
8
|
<packaging>aar</packaging>
|
|
9
9
|
</project>
|
package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>com.theoplayer.theoplayer-sdk-android</groupId>
|
|
4
4
|
<artifactId>ads-wrapper</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>7.
|
|
7
|
-
<release>7.
|
|
6
|
+
<latest>7.6.0</latest>
|
|
7
|
+
<release>7.6.0</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>7.
|
|
9
|
+
<version>7.6.0</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20240618230000</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -16,6 +16,7 @@ import java.lang.Exception
|
|
|
16
16
|
|
|
17
17
|
private const val PROP_AD_SYSTEM = "adSystem"
|
|
18
18
|
private const val PROP_AD_INTEGRATION = "integration"
|
|
19
|
+
private const val PROP_AD_CUSTOM_INTEGRATION = "customIntegration"
|
|
19
20
|
private const val PROP_AD_TYPE = "type"
|
|
20
21
|
private const val PROP_AD_ID = "id"
|
|
21
22
|
private const val PROP_AD_BREAK = "adBreak"
|
|
@@ -208,6 +209,10 @@ object AdAdapter {
|
|
|
208
209
|
return AdIntegrationKind.from(ad.getString(PROP_AD_INTEGRATION))
|
|
209
210
|
}
|
|
210
211
|
|
|
212
|
+
override fun getCustomIntegration(): String? {
|
|
213
|
+
return ad.getString(PROP_AD_CUSTOM_INTEGRATION)
|
|
214
|
+
}
|
|
215
|
+
|
|
211
216
|
override fun getImaAd(): com.google.ads.interactivemedia.v3.api.Ad {
|
|
212
217
|
return parseImaAd(ad)
|
|
213
218
|
}
|
|
@@ -279,6 +284,10 @@ object AdAdapter {
|
|
|
279
284
|
override fun getIntegration(): AdIntegrationKind {
|
|
280
285
|
return AdIntegrationKind.from(adBreak.getString(PROP_ADBREAK_INTEGRATION))
|
|
281
286
|
}
|
|
287
|
+
|
|
288
|
+
override fun getCustomIntegration(): String? {
|
|
289
|
+
return adBreak.getString(PROP_AD_CUSTOM_INTEGRATION)
|
|
290
|
+
}
|
|
282
291
|
}
|
|
283
292
|
}
|
|
284
293
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
package com.theoplayer.source
|
|
2
|
+
|
|
3
|
+
import com.google.gson.Gson
|
|
4
|
+
import com.theoplayer.BuildConfig
|
|
5
|
+
import com.theoplayer.android.api.error.ErrorCode
|
|
6
|
+
import com.theoplayer.android.api.error.THEOplayerException
|
|
7
|
+
import com.theoplayer.android.api.source.GoogleDaiTypedSource
|
|
8
|
+
import com.theoplayer.android.api.source.TypedSource
|
|
9
|
+
import com.theoplayer.android.api.source.ssai.dai.GoogleDaiLiveConfiguration
|
|
10
|
+
import com.theoplayer.android.api.source.ssai.dai.GoogleDaiVodConfiguration
|
|
11
|
+
import org.json.JSONObject
|
|
12
|
+
|
|
13
|
+
private const val PROP_AVAILABILITY_TYPE = "availabilityType"
|
|
14
|
+
private const val AVAILABILITY_TYPE_VOD = "vod"
|
|
15
|
+
private const val ERROR_DAI_NOT_ENABLED = "Google DAI support not enabled."
|
|
16
|
+
|
|
17
|
+
@Throws(THEOplayerException::class)
|
|
18
|
+
fun googleDaiBuilderFromJson(builder: TypedSource.Builder, json: JSONObject): TypedSource.Builder {
|
|
19
|
+
// Check whether the integration was enabled
|
|
20
|
+
if (!BuildConfig.EXTENSION_GOOGLE_DAI) {
|
|
21
|
+
throw THEOplayerException(ErrorCode.AD_ERROR, ERROR_DAI_NOT_ENABLED)
|
|
22
|
+
}
|
|
23
|
+
// We need to create a new builder as the player SDK checks for:
|
|
24
|
+
// typedSource is GoogleDaiTypedSource
|
|
25
|
+
return if (json.optString(PROP_AVAILABILITY_TYPE) == AVAILABILITY_TYPE_VOD) {
|
|
26
|
+
GoogleDaiTypedSource.Builder(
|
|
27
|
+
Gson().fromJson(json.toString(), GoogleDaiVodConfiguration::class.java)
|
|
28
|
+
)
|
|
29
|
+
} else {
|
|
30
|
+
GoogleDaiTypedSource.Builder(
|
|
31
|
+
Gson().fromJson(json.toString(), GoogleDaiLiveConfiguration::class.java)
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
package com.theoplayer.source
|
|
2
|
+
|
|
3
|
+
import android.text.TextUtils
|
|
4
|
+
import com.theoplayer.android.api.error.ErrorCode
|
|
5
|
+
import com.theoplayer.android.api.error.THEOplayerException
|
|
6
|
+
import com.theoplayer.android.api.source.SourceType
|
|
7
|
+
import com.theoplayer.android.api.source.TypedSource
|
|
8
|
+
import org.json.JSONObject
|
|
9
|
+
|
|
10
|
+
typealias CustomSSAIAdapter = (json: JSONObject, currentBuilder: TypedSource.Builder) -> TypedSource.Builder
|
|
11
|
+
|
|
12
|
+
private const val ERROR_UNSUPPORTED_SSAI_INTEGRATION = "Unsupported SSAI integration"
|
|
13
|
+
private const val ERROR_MISSING_SSAI_INTEGRATION = "Missing SSAI integration"
|
|
14
|
+
private const val PROP_INTEGRATION = "integration"
|
|
15
|
+
|
|
16
|
+
object SSAIAdapterRegistry {
|
|
17
|
+
private val _adapters: MutableMap<String, CustomSSAIAdapter> = HashMap()
|
|
18
|
+
|
|
19
|
+
fun register(integration: String, adapter: CustomSSAIAdapter) {
|
|
20
|
+
_adapters[integration] = adapter
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
fun hasIntegration(integration: String): Boolean {
|
|
24
|
+
return _adapters[integration] != null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
fun typedSourceBuilderFromJson(json: JSONObject, currentBuilder: TypedSource.Builder, sourceType: SourceType?): TypedSource.Builder {
|
|
28
|
+
// Check for valid SsaiIntegration
|
|
29
|
+
val ssaiIntegrationStr = json.optString(PROP_INTEGRATION)
|
|
30
|
+
|
|
31
|
+
// Check for valid `integration` property, which is mandatory.
|
|
32
|
+
if (TextUtils.isEmpty(ssaiIntegrationStr)) {
|
|
33
|
+
throw THEOplayerException(ErrorCode.AD_ERROR, ERROR_MISSING_SSAI_INTEGRATION)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Check for known SsaiIntegration
|
|
37
|
+
if (!hasIntegration(ssaiIntegrationStr)) {
|
|
38
|
+
throw THEOplayerException(
|
|
39
|
+
ErrorCode.AD_ERROR,
|
|
40
|
+
"$ERROR_UNSUPPORTED_SSAI_INTEGRATION: $ssaiIntegrationStr"
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Prefer DASH if SSAI type not specified
|
|
45
|
+
if (sourceType == null) {
|
|
46
|
+
currentBuilder.type(SourceType.DASH)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return _adapters[ssaiIntegrationStr]?.invoke(json, currentBuilder) ?: currentBuilder
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -2,11 +2,9 @@ package com.theoplayer.source
|
|
|
2
2
|
|
|
3
3
|
import android.text.TextUtils
|
|
4
4
|
import android.util.Log
|
|
5
|
-
import com.facebook.react.bridge.Arguments
|
|
6
5
|
import com.google.gson.Gson
|
|
7
6
|
import com.theoplayer.android.api.error.THEOplayerException
|
|
8
7
|
import com.facebook.react.bridge.ReadableMap
|
|
9
|
-
import com.facebook.react.bridge.WritableArray
|
|
10
8
|
import com.facebook.react.bridge.WritableMap
|
|
11
9
|
import com.theoplayer.android.api.source.SourceDescription
|
|
12
10
|
import com.theoplayer.android.api.source.TypedSource
|
|
@@ -14,10 +12,6 @@ import com.theoplayer.android.api.source.metadata.MetadataDescription
|
|
|
14
12
|
import com.theoplayer.android.api.source.addescription.AdDescription
|
|
15
13
|
import com.theoplayer.android.api.source.TextTrackDescription
|
|
16
14
|
import com.theoplayer.android.api.source.SourceType
|
|
17
|
-
import com.theoplayer.android.api.source.ssai.SsaiIntegration
|
|
18
|
-
import com.theoplayer.android.api.source.GoogleDaiTypedSource
|
|
19
|
-
import com.theoplayer.android.api.source.ssai.dai.GoogleDaiVodConfiguration
|
|
20
|
-
import com.theoplayer.android.api.source.ssai.dai.GoogleDaiLiveConfiguration
|
|
21
15
|
import com.theoplayer.android.api.source.hls.HlsPlaybackConfiguration
|
|
22
16
|
import com.theoplayer.android.api.event.ads.AdIntegrationKind
|
|
23
17
|
import com.theoplayer.android.api.source.addescription.GoogleImaAdDescription
|
|
@@ -55,19 +49,26 @@ private const val PROP_INTEGRATION = "integration"
|
|
|
55
49
|
private const val PROP_TEXT_TRACKS = "textTracks"
|
|
56
50
|
private const val PROP_POSTER = "poster"
|
|
57
51
|
private const val PROP_ADS = "ads"
|
|
58
|
-
private const val PROP_AVAILABILITY_TYPE = "availabilityType"
|
|
59
52
|
private const val PROP_DASH = "dash"
|
|
60
53
|
private const val PROP_DASH_IGNORE_AVAILABILITYWINDOW = "ignoreAvailabilityWindow"
|
|
61
|
-
private const val ERROR_DAI_NOT_ENABLED = "Google DAI support not enabled."
|
|
62
|
-
private const val ERROR_UNSUPPORTED_SSAI_INTEGRATION = "Unsupported SSAI integration"
|
|
63
|
-
private const val ERROR_MISSING_SSAI_INTEGRATION = "Missing SSAI integration"
|
|
64
54
|
private const val ERROR_IMA_NOT_ENABLED = "Google IMA support not enabled."
|
|
65
55
|
private const val ERROR_UNSUPPORTED_CSAI_INTEGRATION = "Unsupported CSAI integration"
|
|
66
56
|
private const val ERROR_MISSING_CSAI_INTEGRATION = "Missing CSAI integration"
|
|
67
57
|
|
|
58
|
+
private const val PROP_SSAI_INTEGRATION_GOOGLE_DAI = "google-dai"
|
|
59
|
+
|
|
68
60
|
class SourceAdapter {
|
|
69
61
|
private val gson = Gson()
|
|
70
62
|
|
|
63
|
+
companion object {
|
|
64
|
+
init {
|
|
65
|
+
// Register default SSAI adapter for Google DAI.
|
|
66
|
+
SSAIAdapterRegistry.register(PROP_SSAI_INTEGRATION_GOOGLE_DAI) { json, currentBuilder ->
|
|
67
|
+
googleDaiBuilderFromJson(currentBuilder, json)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
71
72
|
@Throws(THEOplayerException::class)
|
|
72
73
|
fun parseSourceFromJS(source: ReadableMap?): SourceDescription? {
|
|
73
74
|
if (source == null) {
|
|
@@ -83,17 +84,11 @@ class SourceAdapter {
|
|
|
83
84
|
val jsonSources = jsonSourceObject.optJSONArray(PROP_SOURCES)
|
|
84
85
|
if (jsonSources != null) {
|
|
85
86
|
for (i in 0 until jsonSources.length()) {
|
|
86
|
-
|
|
87
|
-
if (typedSource != null) {
|
|
88
|
-
typedSources.add(typedSource)
|
|
89
|
-
}
|
|
87
|
+
typedSources.add(parseTypedSource(jsonSources[i] as JSONObject))
|
|
90
88
|
}
|
|
91
89
|
} else {
|
|
92
90
|
val jsonSource = jsonSourceObject.optJSONObject(PROP_SOURCES) ?: return null
|
|
93
|
-
|
|
94
|
-
if (typedSource != null) {
|
|
95
|
-
typedSources.add(typedSource)
|
|
96
|
-
}
|
|
91
|
+
typedSources.add(parseTypedSource(jsonSource))
|
|
97
92
|
}
|
|
98
93
|
|
|
99
94
|
// poster
|
|
@@ -142,48 +137,13 @@ class SourceAdapter {
|
|
|
142
137
|
}
|
|
143
138
|
|
|
144
139
|
@Throws(THEOplayerException::class)
|
|
145
|
-
private fun parseTypedSource(jsonTypedSource: JSONObject): TypedSource
|
|
140
|
+
private fun parseTypedSource(jsonTypedSource: JSONObject): TypedSource {
|
|
146
141
|
try {
|
|
147
142
|
var tsBuilder = TypedSource.Builder(jsonTypedSource.optString(PROP_SRC))
|
|
148
143
|
val sourceType = parseSourceType(jsonTypedSource)
|
|
149
144
|
if (jsonTypedSource.has(PROP_SSAI)) {
|
|
150
145
|
val ssaiJson = jsonTypedSource.getJSONObject(PROP_SSAI)
|
|
151
|
-
|
|
152
|
-
// Check for valid SsaiIntegration
|
|
153
|
-
val ssaiIntegrationStr = ssaiJson.optString(PROP_INTEGRATION)
|
|
154
|
-
if (!TextUtils.isEmpty(ssaiIntegrationStr)) {
|
|
155
|
-
val ssaiIntegration = SsaiIntegration.from(ssaiIntegrationStr)
|
|
156
|
-
?: throw THEOplayerException(
|
|
157
|
-
ErrorCode.AD_ERROR,
|
|
158
|
-
"$ERROR_UNSUPPORTED_SSAI_INTEGRATION: $ssaiIntegrationStr"
|
|
159
|
-
)
|
|
160
|
-
when (ssaiIntegration) {
|
|
161
|
-
SsaiIntegration.GOOGLE_DAI -> {
|
|
162
|
-
if (!BuildConfig.EXTENSION_GOOGLE_DAI) {
|
|
163
|
-
throw THEOplayerException(ErrorCode.AD_ERROR, ERROR_DAI_NOT_ENABLED)
|
|
164
|
-
}
|
|
165
|
-
tsBuilder = if (ssaiJson.optString(PROP_AVAILABILITY_TYPE) == "vod") {
|
|
166
|
-
GoogleDaiTypedSource.Builder(
|
|
167
|
-
gson.fromJson(ssaiJson.toString(), GoogleDaiVodConfiguration::class.java)
|
|
168
|
-
)
|
|
169
|
-
} else {
|
|
170
|
-
GoogleDaiTypedSource.Builder(
|
|
171
|
-
gson.fromJson(ssaiJson.toString(), GoogleDaiLiveConfiguration::class.java)
|
|
172
|
-
)
|
|
173
|
-
}
|
|
174
|
-
// Prefer DASH if not SSAI type specified
|
|
175
|
-
if (sourceType == null) {
|
|
176
|
-
tsBuilder.type(SourceType.DASH)
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
else -> throw THEOplayerException(
|
|
180
|
-
ErrorCode.AD_ERROR,
|
|
181
|
-
"$ERROR_UNSUPPORTED_SSAI_INTEGRATION: $ssaiIntegrationStr"
|
|
182
|
-
)
|
|
183
|
-
}
|
|
184
|
-
} else {
|
|
185
|
-
throw THEOplayerException(ErrorCode.AD_ERROR, ERROR_MISSING_SSAI_INTEGRATION)
|
|
186
|
-
}
|
|
146
|
+
tsBuilder = SSAIAdapterRegistry.typedSourceBuilderFromJson(ssaiJson, tsBuilder, sourceType)
|
|
187
147
|
}
|
|
188
148
|
if (sourceType != null) {
|
|
189
149
|
tsBuilder.type(sourceType)
|
|
@@ -216,10 +176,13 @@ class SourceAdapter {
|
|
|
216
176
|
}
|
|
217
177
|
}
|
|
218
178
|
return tsBuilder.build()
|
|
219
|
-
} catch (e:
|
|
220
|
-
|
|
179
|
+
} catch (e: THEOplayerException) {
|
|
180
|
+
// Rethrow THEOplayerException
|
|
181
|
+
throw e
|
|
182
|
+
} catch (e: Exception) {
|
|
183
|
+
// Wrap exception
|
|
184
|
+
throw THEOplayerException(ErrorCode.SOURCE_INVALID, "Invalid source: ${e.message}")
|
|
221
185
|
}
|
|
222
|
-
return null
|
|
223
186
|
}
|
|
224
187
|
|
|
225
188
|
@Throws(THEOplayerException::class)
|
|
@@ -281,12 +244,14 @@ class SourceAdapter {
|
|
|
281
244
|
AdIntegrationKind.GOOGLE_IMA -> parseImaAdFromJS(
|
|
282
245
|
jsonAdDescription
|
|
283
246
|
)
|
|
247
|
+
|
|
284
248
|
AdIntegrationKind.DEFAULT -> {
|
|
285
249
|
throw THEOplayerException(
|
|
286
250
|
ErrorCode.AD_ERROR,
|
|
287
251
|
"$ERROR_UNSUPPORTED_CSAI_INTEGRATION: $integrationKindStr"
|
|
288
252
|
)
|
|
289
253
|
}
|
|
254
|
+
|
|
290
255
|
else -> {
|
|
291
256
|
throw THEOplayerException(
|
|
292
257
|
ErrorCode.AD_ERROR,
|
|
@@ -10,7 +10,6 @@ import THEOplayerSDK
|
|
|
10
10
|
import THEOplayerConnectorSideloadedSubtitle
|
|
11
11
|
#endif
|
|
12
12
|
|
|
13
|
-
let ERROR_MESSAGE_PLAYER_ABR_UNSUPPORTED_FEATURE: String = "Setting an ABRconfig is not supported on iOS/tvOS."
|
|
14
13
|
let ERROR_MESSAGE_PLAYER_QUALITY_UNSUPPORTED_FEATURE: String = "Setting a target video quality is not supported on iOS/tvOS."
|
|
15
14
|
|
|
16
15
|
let TTS_PROP_BACKGROUND_COLOR = "backgroundColor"
|
|
@@ -92,8 +91,34 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
92
91
|
}
|
|
93
92
|
|
|
94
93
|
@objc(setABRConfig:abrConfig:)
|
|
95
|
-
func setABRConfig(_ node: NSNumber,
|
|
96
|
-
|
|
94
|
+
func setABRConfig(_ node: NSNumber, abrConfig: NSDictionary) -> Void {
|
|
95
|
+
DispatchQueue.main.async {
|
|
96
|
+
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
97
|
+
let player = theView.player {
|
|
98
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting abrConfig on TheoPlayer") }
|
|
99
|
+
if let configuredTargetBuffer = abrConfig["targetBuffer"] as? Double {
|
|
100
|
+
player.abr.targetBuffer = configuredTargetBuffer
|
|
101
|
+
} else if let configuredTargetBuffer = abrConfig["targetBuffer"] as? Int {
|
|
102
|
+
player.abr.targetBuffer = Double(configuredTargetBuffer)
|
|
103
|
+
}
|
|
104
|
+
if let configuredPreferredPeakBitRate = abrConfig["preferredPeakBitRate"] as? Double {
|
|
105
|
+
player.abr.preferredPeakBitRate = configuredPreferredPeakBitRate
|
|
106
|
+
} else if let configuredPreferredPeakBitRate = abrConfig["preferredPeakBitRate"] as? Int {
|
|
107
|
+
player.abr.preferredPeakBitRate = Double(configuredPreferredPeakBitRate)
|
|
108
|
+
}
|
|
109
|
+
if let configuredPreferredMaximumResolution = abrConfig["preferredMaximumResolution"] as? [String:Double] {
|
|
110
|
+
if let width = configuredPreferredMaximumResolution["width"],
|
|
111
|
+
let height = configuredPreferredMaximumResolution["height"] {
|
|
112
|
+
player.abr.preferredMaximumResolution = CGSize(width: width, height: height)
|
|
113
|
+
}
|
|
114
|
+
} else if let configuredPreferredMaximumResolution = abrConfig["preferredMaximumResolution"] as? [String:Int] {
|
|
115
|
+
if let width = configuredPreferredMaximumResolution["width"],
|
|
116
|
+
let height = configuredPreferredMaximumResolution["height"] {
|
|
117
|
+
player.abr.preferredMaximumResolution = CGSize(width: Double(width), height: Double(height))
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
97
122
|
}
|
|
98
123
|
|
|
99
124
|
@objc(setCurrentTime:time:)
|
|
@@ -18,10 +18,16 @@ public class THEOplayerRCTView: UIView {
|
|
|
18
18
|
var nowPlayingManager: THEOplayerRCTNowPlayingManager
|
|
19
19
|
var remoteCommandsManager: THEOplayerRCTRemoteCommandsManager
|
|
20
20
|
var pipControlsManager: THEOplayerRCTPipControlsManager
|
|
21
|
+
|
|
21
22
|
var adsConfig = AdsConfig()
|
|
22
23
|
var castConfig = CastConfig()
|
|
23
24
|
var uiConfig = UIConfig()
|
|
24
25
|
|
|
26
|
+
var mediaControlConfig = MediaControlConfig() {
|
|
27
|
+
didSet {
|
|
28
|
+
self.remoteCommandsManager.setMediaControlConfig(mediaControlConfig)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
25
31
|
var pipConfig = PipConfig() {
|
|
26
32
|
didSet {
|
|
27
33
|
self.pipControlsManager.setPipConfig(pipConfig)
|
|
@@ -161,6 +167,7 @@ public class THEOplayerRCTView: UIView {
|
|
|
161
167
|
self.parseAdsConfig(configDict: configDict)
|
|
162
168
|
self.parseCastConfig(configDict: configDict)
|
|
163
169
|
self.parseUIConfig(configDict: configDict)
|
|
170
|
+
self.parseMediaControlConfig(configDict: configDict)
|
|
164
171
|
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] config prop updated.") }
|
|
165
172
|
|
|
166
173
|
// Given the bridged config, create the initial THEOplayer instance
|
|
@@ -4,14 +4,13 @@ import Foundation
|
|
|
4
4
|
import THEOplayerSDK
|
|
5
5
|
import MediaPlayer
|
|
6
6
|
|
|
7
|
-
let DEFAULT_SKIP_INTERVAL: UInt = 15
|
|
8
|
-
|
|
9
7
|
class THEOplayerRCTRemoteCommandsManager: NSObject {
|
|
10
8
|
// MARK: Members
|
|
11
9
|
private weak var player: THEOplayer?
|
|
12
10
|
private var isLive: Bool = false
|
|
13
11
|
private var inAd: Bool = false
|
|
14
12
|
private var backgroundaudioConfig = BackgroundAudioConfig()
|
|
13
|
+
private var mediaControlConfig = MediaControlConfig()
|
|
15
14
|
|
|
16
15
|
// MARK: player Listeners
|
|
17
16
|
private var durationChangeListener: EventListener?
|
|
@@ -39,6 +38,11 @@ class THEOplayerRCTRemoteCommandsManager: NSObject {
|
|
|
39
38
|
self.updateRemoteCommands()
|
|
40
39
|
}
|
|
41
40
|
|
|
41
|
+
func setMediaControlConfig(_ newMediaControlConfig: MediaControlConfig) {
|
|
42
|
+
self.mediaControlConfig = newMediaControlConfig
|
|
43
|
+
self.updateRemoteCommands()
|
|
44
|
+
}
|
|
45
|
+
|
|
42
46
|
private func initRemoteCommands() {
|
|
43
47
|
self.isLive = false
|
|
44
48
|
self.inAd = false
|
|
@@ -61,10 +65,10 @@ class THEOplayerRCTRemoteCommandsManager: NSObject {
|
|
|
61
65
|
// SCRUBBER
|
|
62
66
|
commandCenter.changePlaybackPositionCommand.addTarget(self, action: #selector(onScrubCommand(_:)))
|
|
63
67
|
// ADD SEEK FORWARD
|
|
64
|
-
commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value:
|
|
68
|
+
commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value: self.mediaControlConfig.skipForwardInterval)]
|
|
65
69
|
commandCenter.skipForwardCommand.addTarget(self, action: #selector(onSkipForwardCommand(_:)))
|
|
66
70
|
// ADD SEEK BACKWARD
|
|
67
|
-
commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value:
|
|
71
|
+
commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value: self.mediaControlConfig.skipBackwardInterval)]
|
|
68
72
|
commandCenter.skipBackwardCommand.addTarget(self, action: #selector(onSkipBackwardCommand(_:)))
|
|
69
73
|
|
|
70
74
|
if DEBUG_REMOTECOMMANDS { PrintUtils.printLog(logText: "[NATIVE] Remote commands initialised.") }
|
|
@@ -82,6 +86,10 @@ class THEOplayerRCTRemoteCommandsManager: NSObject {
|
|
|
82
86
|
commandCenter.skipForwardCommand.isEnabled = !self.isLive && !self.inAd && self.backgroundaudioConfig.enabled
|
|
83
87
|
commandCenter.skipBackwardCommand.isEnabled = !self.isLive && !self.inAd && self.backgroundaudioConfig.enabled
|
|
84
88
|
|
|
89
|
+
// set configured skip forward/backward intervals
|
|
90
|
+
commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value: self.mediaControlConfig.skipForwardInterval)]
|
|
91
|
+
commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value: self.mediaControlConfig.skipBackwardInterval)]
|
|
92
|
+
|
|
85
93
|
if DEBUG_REMOTECOMMANDS { PrintUtils.printLog(logText: "[NATIVE] Remote commands updated for \(self.isLive ? "LIVE" : "VOD") (\(self.inAd ? "AD IS PLAYING" : "NO AD PLAYING"), \(self.backgroundaudioConfig.enabled ? "BGAUDIO ENABLED" : "BGAUDIO DISABLED") ).") }
|
|
86
94
|
}
|
|
87
95
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// THEOplayerRCTView+UIConfig.swift
|
|
2
|
+
|
|
3
|
+
import Foundation
|
|
4
|
+
import THEOplayerSDK
|
|
5
|
+
|
|
6
|
+
struct MediaControlConfig {
|
|
7
|
+
var skipForwardInterval: Int = 15
|
|
8
|
+
var skipBackwardInterval: Int = 15
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
extension THEOplayerRCTView {
|
|
12
|
+
|
|
13
|
+
func parseMediaControlConfig(configDict: NSDictionary) {
|
|
14
|
+
if let mediaControlConfig = configDict["mediaControl"] as? NSDictionary {
|
|
15
|
+
if let skipForwardInterval = mediaControlConfig["skipForwardInterval"] as? Int {
|
|
16
|
+
self.mediaControlConfig.skipForwardInterval = skipForwardInterval
|
|
17
|
+
}
|
|
18
|
+
if let skipBackwardInterval = mediaControlConfig["skipBackwardInterval"] as? Int {
|
|
19
|
+
self.mediaControlConfig.skipBackwardInterval = skipBackwardInterval
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ABRStrategyType","exports"],"sourceRoot":"../../../../src","sources":["api/abr/ABRConfiguration.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["ABRStrategyType","exports"],"sourceRoot":"../../../../src","sources":["api/abr/ABRConfiguration.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,IAQYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B;AACA;AACA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AAeA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -157,7 +157,7 @@ Object.keys(_barrel14).forEach(function (key) {
|
|
|
157
157
|
}
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
|
-
var _barrel15 = require("./
|
|
160
|
+
var _barrel15 = require("./resolution/barrel");
|
|
161
161
|
Object.keys(_barrel15).forEach(function (key) {
|
|
162
162
|
if (key === "default" || key === "__esModule") return;
|
|
163
163
|
if (key in exports && exports[key] === _barrel15[key]) return;
|
|
@@ -168,7 +168,7 @@ Object.keys(_barrel15).forEach(function (key) {
|
|
|
168
168
|
}
|
|
169
169
|
});
|
|
170
170
|
});
|
|
171
|
-
var _barrel16 = require("./
|
|
171
|
+
var _barrel16 = require("./track/barrel");
|
|
172
172
|
Object.keys(_barrel16).forEach(function (key) {
|
|
173
173
|
if (key === "default" || key === "__esModule") return;
|
|
174
174
|
if (key in exports && exports[key] === _barrel16[key]) return;
|
|
@@ -179,7 +179,7 @@ Object.keys(_barrel16).forEach(function (key) {
|
|
|
179
179
|
}
|
|
180
180
|
});
|
|
181
181
|
});
|
|
182
|
-
var _barrel17 = require("./
|
|
182
|
+
var _barrel17 = require("./ui/barrel");
|
|
183
183
|
Object.keys(_barrel17).forEach(function (key) {
|
|
184
184
|
if (key === "default" || key === "__esModule") return;
|
|
185
185
|
if (key in exports && exports[key] === _barrel17[key]) return;
|
|
@@ -190,6 +190,17 @@ Object.keys(_barrel17).forEach(function (key) {
|
|
|
190
190
|
}
|
|
191
191
|
});
|
|
192
192
|
});
|
|
193
|
+
var _barrel18 = require("./utils/barrel");
|
|
194
|
+
Object.keys(_barrel18).forEach(function (key) {
|
|
195
|
+
if (key === "default" || key === "__esModule") return;
|
|
196
|
+
if (key in exports && exports[key] === _barrel18[key]) return;
|
|
197
|
+
Object.defineProperty(exports, key, {
|
|
198
|
+
enumerable: true,
|
|
199
|
+
get: function () {
|
|
200
|
+
return _barrel18[key];
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
193
204
|
var _THEOplayerView = require("./THEOplayerView");
|
|
194
205
|
Object.keys(_THEOplayerView).forEach(function (key) {
|
|
195
206
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -201,25 +212,25 @@ Object.keys(_THEOplayerView).forEach(function (key) {
|
|
|
201
212
|
}
|
|
202
213
|
});
|
|
203
214
|
});
|
|
204
|
-
var
|
|
205
|
-
Object.keys(
|
|
215
|
+
var _barrel19 = require("./player/barrel");
|
|
216
|
+
Object.keys(_barrel19).forEach(function (key) {
|
|
206
217
|
if (key === "default" || key === "__esModule") return;
|
|
207
|
-
if (key in exports && exports[key] ===
|
|
218
|
+
if (key in exports && exports[key] === _barrel19[key]) return;
|
|
208
219
|
Object.defineProperty(exports, key, {
|
|
209
220
|
enumerable: true,
|
|
210
221
|
get: function () {
|
|
211
|
-
return
|
|
222
|
+
return _barrel19[key];
|
|
212
223
|
}
|
|
213
224
|
});
|
|
214
225
|
});
|
|
215
|
-
var
|
|
216
|
-
Object.keys(
|
|
226
|
+
var _barrel20 = require("./presentation/barrel");
|
|
227
|
+
Object.keys(_barrel20).forEach(function (key) {
|
|
217
228
|
if (key === "default" || key === "__esModule") return;
|
|
218
|
-
if (key in exports && exports[key] ===
|
|
229
|
+
if (key in exports && exports[key] === _barrel20[key]) return;
|
|
219
230
|
Object.defineProperty(exports, key, {
|
|
220
231
|
enumerable: true,
|
|
221
232
|
get: function () {
|
|
222
|
-
return
|
|
233
|
+
return _barrel20[key];
|
|
223
234
|
}
|
|
224
235
|
});
|
|
225
236
|
});
|