react-native-theoplayer 11.0.0 → 11.1.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 CHANGED
@@ -5,6 +5,17 @@ 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
+ ## [11.1.0] - 26-05-27
9
+
10
+ ### Added
11
+
12
+ - Added `useSystemCaptionStyle` flag to `PlayerConfiguration` on Android. When set to `true`, the player will apply the caption styles as configured in the system settings.
13
+ - Added support on iOS for controlling the targetQualities on THEOlive streams.
14
+
15
+ ### Fixed
16
+
17
+ - Fixed an issue where on iOS the contentProtection queryParameters were not converted to string values, resulting in missing parameters in the urls.
18
+
8
19
  ## [11.0.0] - 26-04-16
9
20
 
10
21
  ### Added
@@ -44,6 +44,8 @@ private const val PROP_THEOLIVE_ANALYTICS_DISABLED = "analyticsDisabled"
44
44
  private const val PROP_THEOLIVE_DISCOVERY_URL = "discoveryUrl"
45
45
  private const val PROP_MULTIMEDIA_TUNNELING_ENABLED = "tunnelingEnabled"
46
46
  private const val PROP_DEBUG_LOGS_ENABLED = "debugLogsEnabled"
47
+ private const val PROP_SYSTEM_CAPTION_STYLE = "useSystemCaptionStyle"
48
+
47
49
 
48
50
  class PlayerConfigAdapter(private val configProps: ReadableMap?) {
49
51
 
@@ -83,6 +85,9 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) {
83
85
  if (hasKey(PROP_MULTIMEDIA_TUNNELING_ENABLED)) {
84
86
  tunnelingEnabled(getBoolean(PROP_MULTIMEDIA_TUNNELING_ENABLED))
85
87
  }
88
+ if (hasKey(PROP_SYSTEM_CAPTION_STYLE)) {
89
+ useSystemCaptionStyle(getBoolean(PROP_SYSTEM_CAPTION_STYLE))
90
+ }
86
91
  }
87
92
  }.build()
88
93
  }
@@ -0,0 +1,7 @@
1
+ # EditorConfig helps developers define and maintain consistent
2
+ # coding styles between different editors and IDEs
3
+ # editorconfig.org
4
+
5
+ [*]
6
+ indent_style = space
7
+ indent_size = 4
@@ -113,7 +113,7 @@ RCT_EXTERN_METHOD(setSelectedVideoTrack:(nonnull NSNumber *)node
113
113
  uid:(nonnull NSNumber *)uid)
114
114
 
115
115
  RCT_EXTERN_METHOD(setTargetVideoQuality:(nonnull NSNumber *)node
116
- uid:(nonnull NSNumber *)uid)
116
+ uids:(nonnull NSArray<NSNumber *> *)uids)
117
117
 
118
118
  RCT_EXTERN_METHOD(setPreload:(nonnull NSNumber *)node
119
119
  type:(nonnull NSString *)type)
@@ -10,8 +10,6 @@ import THEOplayerSDK
10
10
  import THEOplayerConnectorSideloadedSubtitle
11
11
  #endif
12
12
 
13
- let ERROR_MESSAGE_PLAYER_QUALITY_UNSUPPORTED_FEATURE: String = "Setting a target video quality is not supported on iOS/tvOS."
14
-
15
13
  let TTS_PROP_BACKGROUND_COLOR = "backgroundColor"
16
14
  let TTS_PROP_EDGE_STYLE = "edgeStyle"
17
15
  let TTS_PROP_FONT_COLOR = "fontColor"
@@ -337,10 +335,32 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
337
335
  }
338
336
  }
339
337
 
340
- @objc(setTargetVideoQuality:uid:)
341
- func setTargetVideoQuality(_ node: NSNumber, uid: [NSNumber]) -> Void {
342
- if DEBUG_PLAYER_API { print(ERROR_MESSAGE_PLAYER_QUALITY_UNSUPPORTED_FEATURE) }
343
- return
338
+ @objc(setTargetVideoQuality:uids:)
339
+ func setTargetVideoQuality(_ node: NSNumber, uids: [NSNumber]) -> Void {
340
+ DispatchQueue.main.async {
341
+ if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
342
+ let player = theView.player {
343
+ let videoTracks: VideoTrackList = player.videoTracks
344
+ guard videoTracks.count > 0 else {
345
+ return
346
+ }
347
+ var activeVideoTrack: VideoTrack?
348
+ for i in 0...videoTracks.count-1 {
349
+ let videoTrack: MediaTrack = videoTracks.get(i)
350
+ if videoTrack.enabled {
351
+ activeVideoTrack = videoTrack as? VideoTrack
352
+ }
353
+ }
354
+ if let foundTrack = activeVideoTrack {
355
+ let matchingQualities = (0..<foundTrack.qualities.count).compactMap { index in
356
+ let quality = foundTrack.qualities.get(index)
357
+ return uids.contains { $0.intValue == quality.bandwidth } ? quality : nil
358
+ }
359
+ foundTrack.targetQualities = matchingQualities
360
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] targetQualities: \(uids) set on active videotrack.") }
361
+ }
362
+ }
363
+ }
344
364
  }
345
365
 
346
366
  @objc(setPreload:type:)
@@ -357,7 +357,12 @@ class THEOplayerRCTSourceDescriptionBuilder {
357
357
  let licenseAcquisitionURL = fairplayData[SD_PROP_LICENSE_URL] as? String
358
358
  let headers = fairplayData[SD_PROP_HEADERS] as? [String:String]
359
359
  let licenseType = fairplayData[SD_PROP_LICENSE_TYPE] as? String
360
- let queryParameters = fairplayData[SD_PROP_QUERY_PARAMETERS] as? [String:String]
360
+ var queryParameters: [String: String] = [:]
361
+ if let allQueryParams = fairplayData[SD_PROP_QUERY_PARAMETERS] as? [String:Any] {
362
+ for (key, value) in allQueryParams {
363
+ queryParameters[key] = "\(value)"
364
+ }
365
+ }
361
366
 
362
367
  fairplayKeySystem = KeySystemConfiguration(
363
368
  licenseAcquisitionURL: licenseAcquisitionURL,
@@ -379,7 +384,12 @@ class THEOplayerRCTSourceDescriptionBuilder {
379
384
  let licenseAcquisitionURL = widevineData[SD_PROP_LICENSE_URL] as? String
380
385
  let headers = widevineData[SD_PROP_HEADERS] as? [String:String]
381
386
  let licenseType = widevineData[SD_PROP_LICENSE_TYPE] as? String
382
- let queryParameters = widevineData[SD_PROP_QUERY_PARAMETERS] as? [String:String]
387
+ var queryParameters: [String: String] = [:]
388
+ if let allQueryParams = widevineData[SD_PROP_QUERY_PARAMETERS] as? [String:Any] {
389
+ for (key, value) in allQueryParams {
390
+ queryParameters[key] = "\(value)"
391
+ }
392
+ }
383
393
 
384
394
  widevineKeySystem = KeySystemConfiguration(
385
395
  licenseAcquisitionURL: licenseAcquisitionURL,
@@ -391,7 +401,12 @@ class THEOplayerRCTSourceDescriptionBuilder {
391
401
  }
392
402
 
393
403
  // global query parameters
394
- let queryParameters = contentProtectionData[SD_PROP_QUERY_PARAMETERS] as? [String:String]
404
+ var queryParameters: [String: String] = [:]
405
+ if let allQueryParams = contentProtectionData[SD_PROP_QUERY_PARAMETERS] as? [String:Any] {
406
+ for (key, value) in allQueryParams {
407
+ queryParameters[key] = "\(value)"
408
+ }
409
+ }
395
410
  let integrationParameters = contentProtectionData[SD_PROP_INTEGRATION_PARAMETERS] as? [String:Any] ?? [:]
396
411
 
397
412
  return MultiplatformDRMConfiguration(
@@ -17,6 +17,7 @@ let DRM_PROP_WIDEVINE: String = "widevine"
17
17
  let DRM_PROP_LICENSE_URL: String = "licenseAcquisitionURL"
18
18
  let DRM_PROP_CERTIFICATE_URL: String = "certificateURL"
19
19
  let DRM_PROP_BASE64_BODY: String = "base64body"
20
+ let DRM_PROP_QUERY_PARAMETERS: String = "queryParameters"
20
21
  let DRM_PROP_FAIRPLAY_SKD_URL: String = "fairplaySkdUrl"
21
22
  let DRM_PROP_STATUS: String = "status"
22
23
  let DRM_PROP_STATUS_TEXT: String = "statusText"
@@ -32,6 +33,9 @@ class THEOplayerRCTContentProtectionAggregator {
32
33
  var aggregatedDrmConfig: [String:Any] = [:]
33
34
  aggregatedDrmConfig[DRM_PROP_INTEGRATION] = drmConfig.customIntegrationId ?? "unknown"
34
35
  aggregatedDrmConfig[DRM_PROP_INTEGRATION_PARAMS] = drmConfig.integrationParameters
36
+ if let queryParameters = drmConfig.queryParameters {
37
+ aggregatedDrmConfig[DRM_PROP_QUERY_PARAMETERS] = queryParameters
38
+ }
35
39
  if let multiDrmConfigCollection = drmConfig as? THEOplayerSDK.MultiplatformDRMConfiguration {
36
40
  let keySystemConfigurations: THEOplayerSDK.KeySystemConfigurationCollection = multiDrmConfigCollection.keySystemConfigurations
37
41
  if let fairplayConfig: THEOplayerSDK.KeySystemConfiguration = keySystemConfigurations.fairplay {
@@ -114,6 +118,12 @@ class THEOplayerRCTContentProtectionAggregator {
114
118
  if let certificateURL = keySystemConfig.certificateURL?.absoluteString {
115
119
  aggregatedKeySystem[DRM_PROP_CERTIFICATE_URL] = certificateURL
116
120
  }
121
+ if let headers = keySystemConfig.headers {
122
+ aggregatedKeySystem[DRM_PROP_HEADERS] = headers
123
+ }
124
+ if let queryParameters = keySystemConfig.queryParameters {
125
+ aggregatedKeySystem[DRM_PROP_QUERY_PARAMETERS] = queryParameters
126
+ }
117
127
  return aggregatedKeySystem
118
128
  }
119
129
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AdIntegrationKind","exports"],"sourceRoot":"../../../../../src","sources":["api/source/ads/Ads.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AAmDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA,IAgBYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["AdIntegrationKind","exports"],"sourceRoot":"../../../../../src","sources":["api/source/ads/Ads.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA,IAgBYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":"11.0.0","buildDate":"2026-04-16T14:36:11.831Z"}
1
+ {"version":"11.1.0","buildDate":"2026-05-27T17:00:02.965Z"}
@@ -1 +1 @@
1
- {"version":3,"names":["AdIntegrationKind"],"sourceRoot":"../../../../../src","sources":["api/source/ads/Ads.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["AdIntegrationKind"],"sourceRoot":"../../../../../src","sources":["api/source/ads/Ads.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":"11.0.0","buildDate":"2026-04-16T14:36:11.831Z"}
1
+ {"version":"11.1.0","buildDate":"2026-05-27T17:00:02.965Z"}
@@ -115,6 +115,17 @@ export interface PlayerConfiguration {
115
115
  * <br/> - When set to true, all debug log tags from the native Android SDK will be enabled.
116
116
  */
117
117
  debugLogsEnabled?: boolean;
118
+ /**
119
+ * Sets whether captions should automatically apply a system-defined style.
120
+ *
121
+ * @defaultValue false
122
+ *
123
+ * @platform android
124
+ *
125
+ * @remarks
126
+ * <br/> - Any user-defined overrides are still respected.
127
+ */
128
+ useSystemCaptionStyle?: boolean;
118
129
  }
119
130
  /**
120
131
  * The muted autoplay policy of a player for web.
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/api/config/PlayerConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAE3C;;OAEG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,eAAe,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAEjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"PlayerConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/api/config/PlayerConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAE3C;;OAEG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,eAAe,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAEjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC"}
@@ -50,10 +50,11 @@ export interface AdDescription {
50
50
  *
51
51
  * @remarks
52
52
  * <br/> - When the ad ends, the content will resume at the ad break's offset plus its duration.
53
+ * <br/> - Available for `theoads` since v11.2.0.
53
54
  *
54
55
  * @defaultValue
55
- * <br/> - `true` for live content,
56
- * <br/> - `false` for VOD content
56
+ * <br/> - `true` for live content and `theoads` VOD content.
57
+ * <br/> - `false` for VOD content.
57
58
  */
58
59
  replaceContent?: boolean;
59
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Ads.d.ts","sourceRoot":"","sources":["../../../../../src/api/source/ads/Ads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE5B;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB"}
1
+ {"version":3,"file":"Ads.d.ts","sourceRoot":"","sources":["../../../../../src/api/source/ads/Ads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE5B;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-theoplayer",
3
- "version": "11.0.0",
3
+ "version": "11.1.0",
4
4
  "description": "A THEOplayer video component for react-native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -130,6 +130,18 @@ export interface PlayerConfiguration {
130
130
  * <br/> - When set to true, all debug log tags from the native Android SDK will be enabled.
131
131
  */
132
132
  debugLogsEnabled?: boolean;
133
+
134
+ /**
135
+ * Sets whether captions should automatically apply a system-defined style.
136
+ *
137
+ * @defaultValue false
138
+ *
139
+ * @platform android
140
+ *
141
+ * @remarks
142
+ * <br/> - Any user-defined overrides are still respected.
143
+ */
144
+ useSystemCaptionStyle?: boolean;
133
145
  }
134
146
 
135
147
  /**
@@ -54,10 +54,11 @@ export interface AdDescription {
54
54
  *
55
55
  * @remarks
56
56
  * <br/> - When the ad ends, the content will resume at the ad break's offset plus its duration.
57
+ * <br/> - Available for `theoads` since v11.2.0.
57
58
  *
58
59
  * @defaultValue
59
- * <br/> - `true` for live content,
60
- * <br/> - `false` for VOD content
60
+ * <br/> - `true` for live content and `theoads` VOD content.
61
+ * <br/> - `false` for VOD content.
61
62
  */
62
63
  replaceContent?: boolean;
63
64
 
package/src/manifest.json CHANGED
@@ -1 +1 @@
1
- {"version":"11.0.0","buildDate":"2026-04-16T14:36:11.831Z"}
1
+ {"version":"11.1.0","buildDate":"2026-05-27T17:00:02.965Z"}