react-native-theoplayer 8.5.0 → 8.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 CHANGED
@@ -5,6 +5,16 @@ 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
+ ## [8.6.0] - 24-10-25
9
+
10
+ ### Added
11
+
12
+ - Added `AdEvent.AD_CLICKED` and `AdEvent.AD_TAPPED` ad events for iOS and Android. The events are dispatched when a user taps or clicks on an ad that has a `clickThrough` link.
13
+
14
+ ### Changed
15
+
16
+ - Upgrade example app to support React Native v0.75.
17
+
8
18
  ## [8.5.0] - 24-10-21
9
19
 
10
20
  ### Added
@@ -108,9 +108,9 @@ repositories {
108
108
  maven { url "https://maven.theoplayer.com/releases" }
109
109
  }
110
110
 
111
- // The minimum supported THEOplayer version is 8.1.0
112
- def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[8.1.0, 9.0.0)')
113
- def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[8.1.0, 9.0.0)')
111
+ // The minimum supported THEOplayer version is 8.3.0
112
+ def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[8.3.0, 9.0.0)')
113
+ def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[8.0.0, 9.0.0)')
114
114
 
115
115
  dependencies {
116
116
  //noinspection GradleDynamicVersion
@@ -115,8 +115,8 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
115
115
  GoogleImaAdEventType.AD_BREAK_STARTED, AdsEventTypes.AD_BREAK_BEGIN -> "adbreakbegin"
116
116
  GoogleImaAdEventType.AD_BREAK_ENDED, AdsEventTypes.AD_BREAK_END -> "adbreakend"
117
117
  GoogleImaAdEventType.AD_BREAK_FETCH_ERROR -> "aderror"
118
- GoogleImaAdEventType.CLICKED -> "adclicked"
119
- GoogleImaAdEventType.TAPPED -> "adtapped"
118
+ GoogleImaAdEventType.CLICKED, AdsEventTypes.AD_CLICKED -> "adclicked"
119
+ GoogleImaAdEventType.TAPPED, AdsEventTypes.AD_TAPPED -> "adtapped"
120
120
  GoogleImaAdEventType.ICON_TAPPED -> "adicontapped"
121
121
  GoogleImaAdEventType.ICON_FALLBACK_IMAGE_CLOSED -> "adiconfallbackimageclosed"
122
122
  AdsEventTypes.ADD_AD -> "addad"
@@ -40,6 +40,8 @@ class PresentationManager(
40
40
 
41
41
  var currentPresentationMode: PresentationMode = PresentationMode.INLINE
42
42
  private set
43
+ var currentPresentationModeChangeContext: PresentationModeChangeContext? = null
44
+ private set
43
45
 
44
46
  var pipConfig: PipConfig = PipConfig()
45
47
 
@@ -54,12 +56,14 @@ class PresentationManager(
54
56
  }
55
57
  onPictureInPictureModeChanged = object : BroadcastReceiver() {
56
58
  override fun onReceive(context: Context?, intent: Intent?) {
57
- // Dispatch event on every PiP mode change
59
+ val transitioningToPip = intent
60
+ ?.getBooleanExtra("isTransitioningToPip", false) ?: false
58
61
  val inPip = intent?.getBooleanExtra("isInPictureInPictureMode", false) ?: false
59
- if (inPip) {
60
- onEnterPip()
61
- } else {
62
- onExitPip()
62
+ // Dispatch event on every PiP mode change
63
+ when {
64
+ transitioningToPip -> onEnterPip(true)
65
+ inPip -> onEnterPip()
66
+ else -> onExitPip()
63
67
  }
64
68
  }
65
69
  }
@@ -104,9 +108,11 @@ class PresentationManager(
104
108
  PresentationMode.INLINE -> {
105
109
  setFullscreen(false)
106
110
  }
111
+
107
112
  PresentationMode.FULLSCREEN -> {
108
113
  setFullscreen(true)
109
114
  }
115
+
110
116
  PresentationMode.PICTURE_IN_PICTURE -> {
111
117
  setFullscreen(false)
112
118
  enterPip()
@@ -144,8 +150,13 @@ class PresentationManager(
144
150
  }
145
151
  }
146
152
 
147
- private fun onEnterPip() {
148
- updatePresentationMode(PresentationMode.PICTURE_IN_PICTURE)
153
+ private fun onEnterPip(transitioningToPip: Boolean = false) {
154
+ updatePresentationMode(
155
+ PresentationMode.PICTURE_IN_PICTURE,
156
+ if (transitioningToPip)
157
+ PresentationModeChangeContext(PresentationModeChangePipContext.TRANSITIONING_TO_PIP)
158
+ else null
159
+ )
149
160
  }
150
161
 
151
162
  private fun onExitPip() {
@@ -241,11 +252,14 @@ class PresentationManager(
241
252
  presentationMode: PresentationMode,
242
253
  context: PresentationModeChangeContext? = null
243
254
  ) {
244
- if (presentationMode == currentPresentationMode) {
255
+ if (presentationMode == currentPresentationMode &&
256
+ context == currentPresentationModeChangeContext
257
+ ) {
245
258
  return
246
259
  }
247
260
  val prevPresentationMode = currentPresentationMode
248
261
  currentPresentationMode = presentationMode
262
+ currentPresentationModeChangeContext = context
249
263
  eventEmitter.emitPresentationModeChange(presentationMode, prevPresentationMode, context)
250
264
 
251
265
  // Resume playing when going to PiP and player was playing
@@ -9,7 +9,10 @@ enum class PresentationModeChangePipContext {
9
9
  CLOSED,
10
10
 
11
11
  // The PiP window transitioned back into the app.
12
- RESTORED
12
+ RESTORED,
13
+
14
+ // The app transitioning to PiP frame
15
+ TRANSITIONING_TO_PIP
13
16
  }
14
17
 
15
18
  data class PresentationModeChangeContext(
@@ -109,6 +109,7 @@ class PayloadBuilder {
109
109
  val contextPayload = Arguments.createMap()
110
110
  context.pip?.let { pipCtx ->
111
111
  contextPayload.putString(EVENT_PROP_PIP, when (pipCtx) {
112
+ PresentationModeChangePipContext.TRANSITIONING_TO_PIP -> "transitioning-to-pip"
112
113
  PresentationModeChangePipContext.RESTORED -> "restored"
113
114
  else -> "closed"
114
115
  })
@@ -15,14 +15,16 @@ let EVENT_TYPE_AD_FIRST_QUARTILE: String = "adfirstquartile"
15
15
  let EVENT_TYPE_AD_THIRD_QUARTILE: String = "adthirdquartile"
16
16
  let EVENT_TYPE_AD_MIDPOINT: String = "admidpoint"
17
17
  let EVENT_TYPE_AD_LOADED: String = "adloaded"
18
+ let EVENT_TYPE_AD_TAPPED: String = "adtapped"
19
+ let EVENT_TYPE_AD_CLICKED: String = "adclicked"
18
20
 
19
21
  class THEOplayerRCTAdsEventHandler {
20
22
  // MARK: Members
21
23
  private weak var player: THEOplayer?
22
-
24
+
23
25
  // MARK: Events
24
26
  var onNativeAdEvent: RCTDirectEventBlock?
25
-
27
+
26
28
  // MARK: Ad Listeners
27
29
  private var adBeginListener: EventListener?
28
30
  private var adEndListener: EventListener?
@@ -33,27 +35,29 @@ class THEOplayerRCTAdsEventHandler {
33
35
  private var adMidpointListener: EventListener?
34
36
  private var adThirdQuartileListener: EventListener?
35
37
  private var adLoadedListener: EventListener?
36
-
38
+ private var adTappedListener: EventListener?
39
+ private var adClickedListener: EventListener?
40
+
37
41
  // MARK: - destruction
38
42
  func destroy() {
39
43
  // dettach listeners
40
44
  self.dettachListeners()
41
45
  }
42
-
46
+
43
47
  // MARK: - player setup / breakdown
44
48
  func setPlayer(_ player: THEOplayer) {
45
49
  self.player = player;
46
-
50
+
47
51
  // attach listeners
48
52
  self.attachListeners()
49
53
  }
50
-
54
+
51
55
  // MARK: - attach/dettach Listeners
52
56
  private func attachListeners() {
53
57
  guard let player = self.player else {
54
58
  return
55
59
  }
56
-
60
+
57
61
  #if canImport(THEOplayerGoogleIMAIntegration)
58
62
  // AD_BEGIN
59
63
  self.adBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BEGIN) { [weak self] event in
@@ -67,7 +71,7 @@ class THEOplayerRCTAdsEventHandler {
67
71
  }
68
72
  }
69
73
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener attached to THEOplayer.ads") }
70
-
74
+
71
75
  // AD_END
72
76
  self.adEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_END) { [weak self] event in
73
77
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_END event from THEOplayer Ads") }
@@ -80,7 +84,7 @@ class THEOplayerRCTAdsEventHandler {
80
84
  }
81
85
  }
82
86
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener attached to THEOplayer.ads") }
83
-
87
+
84
88
  // AD_BREAK_BEGIN
85
89
  self.adBreakBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_BEGIN) { [weak self] event in
86
90
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_BEGIN event from THEOplayer Ads") }
@@ -93,7 +97,7 @@ class THEOplayerRCTAdsEventHandler {
93
97
  }
94
98
  }
95
99
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener attached to THEOplayer.ads") }
96
-
100
+
97
101
  // AD_BREAK_END
98
102
  self.adBreakEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_END) { [weak self] event in
99
103
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_END event from THEOplayer Ads") }
@@ -106,7 +110,7 @@ class THEOplayerRCTAdsEventHandler {
106
110
  }
107
111
  }
108
112
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener attached to THEOplayer.ads") }
109
-
113
+
110
114
  // AD_ERROR
111
115
  self.adErrorListener = player.ads.addEventListener(type: AdsEventTypes.AD_ERROR) { [weak self] event in
112
116
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_ERROR event from THEOplayer Ads") }
@@ -119,7 +123,7 @@ class THEOplayerRCTAdsEventHandler {
119
123
  }
120
124
  }
121
125
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener attached to THEOplayer.ads") }
122
-
126
+
123
127
  // AD_FIRST_QUARTILE
124
128
  self.adFirstQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE) { [weak self] event in
125
129
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_FIRST_QUARTILE event from THEOplayer Ads") }
@@ -132,7 +136,7 @@ class THEOplayerRCTAdsEventHandler {
132
136
  }
133
137
  }
134
138
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdFirstQuartile listener attached to THEOplayer.ads") }
135
-
139
+
136
140
  // AD_MIDPOINT
137
141
  self.adMidpointListener = player.ads.addEventListener(type: AdsEventTypes.AD_MIDPOINT) { [weak self] event in
138
142
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_MIDPOINT event from THEOplayer Ads") }
@@ -145,7 +149,7 @@ class THEOplayerRCTAdsEventHandler {
145
149
  }
146
150
  }
147
151
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdMidpoint listener attached to THEOplayer.ads") }
148
-
152
+
149
153
  // AD_THIRD_QUARTILE
150
154
  self.adThirdQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE) { [weak self] event in
151
155
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_THIRD_QUARTILE event from THEOplayer Ads") }
@@ -158,7 +162,7 @@ class THEOplayerRCTAdsEventHandler {
158
162
  }
159
163
  }
160
164
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdThirdQuartile listener attached to THEOplayer.ads") }
161
-
165
+
162
166
  // AD_LOADED
163
167
  self.adLoadedListener = player.ads.addEventListener(type: AdsEventTypes.AD_LOADED) { [weak self] event in
164
168
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_LOADED event from THEOplayer Ads") }
@@ -170,69 +174,106 @@ class THEOplayerRCTAdsEventHandler {
170
174
  ])
171
175
  }
172
176
  }
173
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdThirdQuartile listener attached to THEOplayer.ads") }
177
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdLoaded listener attached to THEOplayer.ads") }
178
+
179
+ // AD_TAPPED
180
+ self.adTappedListener = player.ads.addEventListener(type: AdsEventTypes.AD_TAPPED) { [weak self] event in
181
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_TAPPED event from THEOplayer Ads") }
182
+ if let forwardedAdEvent = self?.onNativeAdEvent,
183
+ let ad = event.ad {
184
+ forwardedAdEvent([
185
+ AD_EVENT_PROP_TYPE: EVENT_TYPE_AD_TAPPED,
186
+ AD_EVENT_PROP_AD: THEOplayerRCTAdAdapter.fromAd(ad: ad)
187
+ ])
188
+ }
189
+ }
190
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdTapped listener attached to THEOplayer.ads") }
191
+
192
+ // AD_CLICKED
193
+ self.adClickedListener = player.ads.addEventListener(type: AdsEventTypes.AD_CLICKED) { [weak self] event in
194
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_CLICKED event from THEOplayer Ads") }
195
+ if let forwardedAdEvent = self?.onNativeAdEvent,
196
+ let ad = event.ad {
197
+ forwardedAdEvent([
198
+ AD_EVENT_PROP_TYPE: EVENT_TYPE_AD_CLICKED,
199
+ AD_EVENT_PROP_AD: THEOplayerRCTAdAdapter.fromAd(ad: ad)
200
+ ])
201
+ }
202
+ }
203
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdClicked listener attached to THEOplayer.ads") }
174
204
  #endif
175
-
176
205
  }
177
-
206
+
178
207
  private func dettachListeners() {
179
208
  guard let player = self.player else {
180
209
  return
181
210
  }
182
-
211
+
183
212
  #if canImport(THEOplayerGoogleIMAIntegration)
184
213
  // AD_BEGIN
185
214
  if let adBeginListener = self.adBeginListener {
186
215
  player.ads.removeEventListener(type: AdsEventTypes.AD_BEGIN, listener: adBeginListener)
187
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener dettached from THEOplayer.ads") }
216
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener detached from THEOplayer.ads") }
188
217
  }
189
-
218
+
190
219
  // AD_END
191
220
  if let adEndListener = self.adEndListener {
192
221
  player.ads.removeEventListener(type: AdsEventTypes.AD_END, listener: adEndListener)
193
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener dettached from THEOplayer.ads") }
222
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener detached from THEOplayer.ads") }
194
223
  }
195
-
224
+
196
225
  // AD_BREAK_BEGIN
197
226
  if let adBreakBeginListener = self.adBreakBeginListener {
198
227
  player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_BEGIN, listener: adBreakBeginListener)
199
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener dettached from THEOplayer.ads") }
228
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener detached from THEOplayer.ads") }
200
229
  }
201
-
230
+
202
231
  // AD_BREAK_END
203
232
  if let adBreakEndListener = self.adBreakEndListener {
204
233
  player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_END, listener: adBreakEndListener)
205
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener dettached from THEOplayer.ads") }
234
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener detached from THEOplayer.ads") }
206
235
  }
207
-
236
+
208
237
  // AD_ERROR
209
238
  if let adErrorListener = self.adErrorListener {
210
239
  player.ads.removeEventListener(type: AdsEventTypes.AD_ERROR, listener: adErrorListener)
211
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener dettached from THEOplayer.ads") }
240
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener detached from THEOplayer.ads") }
212
241
  }
213
-
242
+
214
243
  // AD_FIRST_QUARTILE
215
244
  if let adFirstQuartileListener = self.adFirstQuartileListener {
216
245
  player.ads.removeEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE, listener: adFirstQuartileListener)
217
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adFirstQuartileListener listener dettached from THEOplayer.ads") }
246
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adFirstQuartileListener listener detached from THEOplayer.ads") }
218
247
  }
219
-
248
+
220
249
  // AD_MIDPOINT
221
250
  if let adMidpointListener = self.adMidpointListener {
222
251
  player.ads.removeEventListener(type: AdsEventTypes.AD_MIDPOINT, listener: adMidpointListener)
223
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adMidpointListener listener dettached from THEOplayer.ads") }
252
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adMidpointListener listener detached from THEOplayer.ads") }
224
253
  }
225
-
254
+
226
255
  // AD_THIRD_QUARTILE
227
256
  if let adThirdQuartileListener = self.adThirdQuartileListener {
228
257
  player.ads.removeEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE, listener: adThirdQuartileListener)
229
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adThirdQuartileListener listener dettached from THEOplayer.ads") }
258
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adThirdQuartileListener listener detached from THEOplayer.ads") }
230
259
  }
231
-
260
+
232
261
  // AD_LOADED
233
262
  if let adLoadedListener = self.adLoadedListener {
234
263
  player.ads.removeEventListener(type: AdsEventTypes.AD_LOADED, listener: adLoadedListener)
235
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adLoadedListener listener dettached from THEOplayer.ads") }
264
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adLoadedListener listener detached from THEOplayer.ads") }
265
+ }
266
+
267
+ // AD_TAPPED
268
+ if let adTappedListener = self.adLoadedListener {
269
+ player.ads.removeEventListener(type: AdsEventTypes.AD_TAPPED, listener: adTappedListener)
270
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adTapped listener detached from THEOplayer.ads") }
271
+ }
272
+
273
+ // AD_CLICKED
274
+ if let adClickedListener = self.adLoadedListener {
275
+ player.ads.removeEventListener(type: AdsEventTypes.AD_CLICKED, listener: adClickedListener)
276
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adClicked listener detached from THEOplayer.ads") }
236
277
  }
237
278
  #endif
238
279
 
@@ -7,6 +7,7 @@ exports.PresentationModeChangePipContext = void 0;
7
7
  let PresentationModeChangePipContext = exports.PresentationModeChangePipContext = /*#__PURE__*/function (PresentationModeChangePipContext) {
8
8
  PresentationModeChangePipContext["CLOSED"] = "closed";
9
9
  PresentationModeChangePipContext["RESTORED"] = "restored";
10
+ PresentationModeChangePipContext["TRANSITIONING_TO_PIP"] = "transitioning-to-pip";
10
11
  return PresentationModeChangePipContext;
11
12
  }({});
12
13
  //# sourceMappingURL=PlayerEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PresentationModeChangePipContext","exports"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":";;;;;;IAiDYA,gCAAgC,GAAAC,OAAA,CAAAD,gCAAA,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["PresentationModeChangePipContext","exports"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":";;;;;;IAiDYA,gCAAgC,GAAAC,OAAA,CAAAD,gCAAA,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  export let PresentationModeChangePipContext = /*#__PURE__*/function (PresentationModeChangePipContext) {
2
2
  PresentationModeChangePipContext["CLOSED"] = "closed";
3
3
  PresentationModeChangePipContext["RESTORED"] = "restored";
4
+ PresentationModeChangePipContext["TRANSITIONING_TO_PIP"] = "transitioning-to-pip";
4
5
  return PresentationModeChangePipContext;
5
6
  }({});
6
7
  //# sourceMappingURL=PlayerEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PresentationModeChangePipContext"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":"AAiDA,WAAYA,gCAAgC,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["PresentationModeChangePipContext"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":"AAiDA,WAAYA,gCAAgC,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
@@ -91,14 +91,14 @@ export declare enum AdEventType {
91
91
  * Dispatched when an ad is clicked.
92
92
  *
93
93
  * @remarks
94
- * <br/> - Available only on Android.
94
+ * <br/> - Available only on iOS and Android.
95
95
  */
96
96
  AD_CLICKED = "adclicked",
97
97
  /**
98
98
  * Dispatched when a non-clickthrough portion of an ad is tapped.
99
99
  *
100
100
  * @remarks
101
- * <br/> - Available only on Android.
101
+ * <br/> - Available only on iOS and Android.
102
102
  */
103
103
  AD_TAPPED = "adtapped",
104
104
  /**
@@ -47,7 +47,14 @@ export declare enum PresentationModeChangePipContext {
47
47
  /**
48
48
  * The PiP window was restored/maximized.
49
49
  */
50
- RESTORED = "restored"
50
+ RESTORED = "restored",
51
+ /**
52
+ * The app is transitioning to the PiP frame.
53
+ *
54
+ * @remarks
55
+ * <br/> - This property only applies to Android platforms.
56
+ */
57
+ TRANSITIONING_TO_PIP = "transitioning-to-pip"
51
58
  }
52
59
  export interface PresentationModeChangeContext {
53
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerEvent.d.ts","sourceRoot":"","sources":["../../../../src/api/event/PlayerEvent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlayerEvent.d.ts","sourceRoot":"","sources":["../../../../src/api/event/PlayerEvent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-theoplayer",
3
- "version": "8.5.0",
3
+ "version": "8.6.0",
4
4
  "description": "A THEOplayer video component for react-native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -25,16 +25,16 @@
25
25
  ],
26
26
  "scripts": {
27
27
  "typescript": "tsc --noEmit",
28
- "prettier": "prettier --check \"(src|example)/**/*.{js,jsx,ts,tsx}\"",
29
- "prettier:fix": "prettier --write \"(src|example)/**/*.{js,jsx,ts,tsx}\"",
28
+ "prettier": "prettier --check \"(src|example|e2e)/**/*.{js,jsx,ts,tsx}\"",
29
+ "prettier:fix": "prettier --write \"(src|example|e2e)/**/*.{js,jsx,ts,tsx}\"",
30
30
  "lint": "eslint \"**/*.{ts,tsx}\"",
31
31
  "lint:fix": "npm run lint -- --fix",
32
- "prepare": "bob build && husky install",
32
+ "prepare": "bob build && husky",
33
33
  "pods": "cd example && pod-install --quiet",
34
34
  "docs": "typedoc --treatWarningsAsErrors"
35
35
  },
36
36
  "lint-staged": {
37
- "(src|example)/**/*.{js,jsx,ts,tsx}": [
37
+ "(src|example|e2e)/**/*.{js,jsx,ts,tsx}": [
38
38
  "prettier --write"
39
39
  ]
40
40
  },
@@ -55,24 +55,24 @@
55
55
  "registry": "https://registry.npmjs.org/"
56
56
  },
57
57
  "devDependencies": {
58
- "@eslint/js": "^9.9.1",
59
- "@react-native/eslint-config": "^0.74.87",
60
- "@types/react": "^18.3.5",
61
- "eslint": "^8.57.0",
58
+ "@eslint/js": "^9.13.0",
59
+ "@react-native/eslint-config": "^0.75.4",
60
+ "@types/react": "^18.3.12",
61
+ "eslint": "^8.57.1",
62
62
  "eslint-config-prettier": "^9.1.0",
63
- "husky": "^9.1.5",
63
+ "husky": "^9.1.6",
64
64
  "lint-staged": "^15.2.10",
65
65
  "pod-install": "^0.1.39",
66
66
  "prettier": "^3.3.3",
67
- "react": "^18.2.0",
68
- "react-native": "^0.74.5",
67
+ "react": "^18.3.1",
68
+ "react-native": "^0.75.4",
69
69
  "react-native-builder-bob": "^0.23.2",
70
- "theoplayer": "^8.0.0",
70
+ "theoplayer": "^8.3.0",
71
71
  "typedoc": "^0.25.13",
72
72
  "typedoc-plugin-external-resolver": "^1.0.3",
73
- "typedoc-plugin-mdn-links": "^3.2.11",
73
+ "typedoc-plugin-mdn-links": "^3.3.4",
74
74
  "typescript": "5.1.6",
75
- "typescript-eslint": "^8.4.0"
75
+ "typescript-eslint": "^8.11.0"
76
76
  },
77
77
  "peerDependencies": {
78
78
  "react": "*",
@@ -33,21 +33,21 @@ Pod::Spec.new do |s|
33
33
 
34
34
  # THEOplayer core Dependency
35
35
  puts "Adding THEOplayerSDK-core"
36
- s.dependency "THEOplayerSDK-core", "~> 8.0"
37
-
38
- if theofeatures.include?("GOOGLE_IMA")
36
+ s.dependency "THEOplayerSDK-core", "~> 8.3"
37
+
38
+ if theofeatures.include?("GOOGLE_IMA")
39
39
  puts "Adding THEOplayer-Integration-GoogleIMA"
40
- s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.0"
40
+ s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.3"
41
41
  end
42
42
 
43
43
  if theofeatures.include?("CHROMECAST")
44
44
  puts "Adding THEOplayer-Integration-GoogleCast"
45
- s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.0"
45
+ s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.3"
46
46
  end
47
47
 
48
48
  if theofeatures.include?("SIDELOADED_TEXTTRACKS")
49
49
  puts "Adding THEOplayer-Connector-SideloadedSubtitle"
50
- s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.0"
50
+ s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.3"
51
51
  end
52
52
 
53
53
  end
@@ -113,7 +113,7 @@ export enum AdEventType {
113
113
  * Dispatched when an ad is clicked.
114
114
  *
115
115
  * @remarks
116
- * <br/> - Available only on Android.
116
+ * <br/> - Available only on iOS and Android.
117
117
  */
118
118
  AD_CLICKED = 'adclicked',
119
119
 
@@ -121,7 +121,7 @@ export enum AdEventType {
121
121
  * Dispatched when a non-clickthrough portion of an ad is tapped.
122
122
  *
123
123
  * @remarks
124
- * <br/> - Available only on Android.
124
+ * <br/> - Available only on iOS and Android.
125
125
  */
126
126
  AD_TAPPED = 'adtapped',
127
127
 
@@ -57,6 +57,14 @@ export enum PresentationModeChangePipContext {
57
57
  * The PiP window was restored/maximized.
58
58
  */
59
59
  RESTORED = 'restored',
60
+
61
+ /**
62
+ * The app is transitioning to the PiP frame.
63
+ *
64
+ * @remarks
65
+ * <br/> - This property only applies to Android platforms.
66
+ */
67
+ TRANSITIONING_TO_PIP = 'transitioning-to-pip',
60
68
  }
61
69
 
62
70
  export interface PresentationModeChangeContext {