@bluebillywig/react-native-bb-player 8.42.8 → 8.42.10

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.
@@ -7,6 +7,10 @@ def safeExtGet(prop, fallback) {
7
7
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
8
8
  }
9
9
 
10
+ def isNewArchitectureEnabled() {
11
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
12
+ }
13
+
10
14
  group = 'com.bluebillywig.bbplayer'
11
15
  version = '2.0.0'
12
16
 
@@ -19,6 +23,11 @@ android {
19
23
  targetSdk safeExtGet('targetSdkVersion', 36)
20
24
  versionCode 1
21
25
  versionName "2.0.0"
26
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
27
+ }
28
+
29
+ buildFeatures {
30
+ buildConfig true
22
31
  }
23
32
 
24
33
  buildTypes {
@@ -39,6 +48,11 @@ android {
39
48
  sourceSets {
40
49
  main {
41
50
  java.srcDirs = ['src/main/java']
51
+ if (isNewArchitectureEnabled()) {
52
+ java.srcDirs += ['src/newarch/java']
53
+ } else {
54
+ java.srcDirs += ['src/paper/java']
55
+ }
42
56
  }
43
57
  }
44
58
  }
@@ -4,21 +4,22 @@ import android.util.Log
4
4
  import com.facebook.react.bridge.Arguments
5
5
  import com.facebook.react.bridge.Promise
6
6
  import com.facebook.react.bridge.ReactApplicationContext
7
- import com.facebook.react.bridge.ReactContextBaseJavaModule
8
7
  import com.facebook.react.bridge.ReactMethod
9
8
  import com.facebook.react.bridge.UiThreadUtil
9
+ import com.facebook.react.module.annotations.ReactModule
10
10
  import com.facebook.react.uimanager.UIManagerHelper
11
11
  import com.facebook.react.uimanager.common.UIManagerType
12
12
 
13
13
  /**
14
14
  * Native Module for BBPlayer commands.
15
- * Works with both Old Architecture and New Architecture (Fabric).
15
+ * Works with both Old Architecture (Paper) and New Architecture (Fabric/TurboModules).
16
16
  *
17
- * This module stores references to BBPlayerView instances and dispatches
18
- * commands to them by their React view tag.
17
+ * This module looks up BBPlayerView instances by their React view tag and dispatches
18
+ * commands to them.
19
19
  */
20
+ @ReactModule(name = BBPlayerModule.NAME)
20
21
  class BBPlayerModule(private val reactContext: ReactApplicationContext) :
21
- ReactContextBaseJavaModule(reactContext) {
22
+ NativeBBPlayerModuleSpec(reactContext) {
22
23
 
23
24
  override fun getName(): String = NAME
24
25
 
@@ -60,77 +61,77 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
60
61
  }
61
62
 
62
63
  @ReactMethod
63
- fun play(viewTag: Int) {
64
+ override fun play(viewTag: Int) {
64
65
  runOnUiThread(viewTag) { it.play() }
65
66
  }
66
67
 
67
68
  @ReactMethod
68
- fun pause(viewTag: Int) {
69
+ override fun pause(viewTag: Int) {
69
70
  runOnUiThread(viewTag) { it.pause() }
70
71
  }
71
72
 
72
73
  @ReactMethod
73
- fun seek(viewTag: Int, position: Double) {
74
+ override fun seek(viewTag: Int, position: Double) {
74
75
  runOnUiThread(viewTag) { it.seek(position) }
75
76
  }
76
77
 
77
78
  @ReactMethod
78
- fun seekRelative(viewTag: Int, offsetSeconds: Double) {
79
+ override fun seekRelative(viewTag: Int, offsetSeconds: Double) {
79
80
  runOnUiThread(viewTag) { it.seekRelative(offsetSeconds) }
80
81
  }
81
82
 
82
83
  @ReactMethod
83
- fun setVolume(viewTag: Int, volume: Double) {
84
+ override fun setVolume(viewTag: Int, volume: Double) {
84
85
  runOnUiThread(viewTag) { it.setVolume(volume) }
85
86
  }
86
87
 
87
88
  @ReactMethod
88
- fun setMuted(viewTag: Int, muted: Boolean) {
89
+ override fun setMuted(viewTag: Int, muted: Boolean) {
89
90
  runOnUiThread(viewTag) { it.setMuted(muted) }
90
91
  }
91
92
 
92
93
  @ReactMethod
93
- fun enterFullscreen(viewTag: Int) {
94
+ override fun enterFullscreen(viewTag: Int) {
94
95
  runOnUiThread(viewTag) { it.enterFullscreen() }
95
96
  }
96
97
 
97
98
  @ReactMethod
98
- fun enterFullscreenLandscape(viewTag: Int) {
99
+ override fun enterFullscreenLandscape(viewTag: Int) {
99
100
  runOnUiThread(viewTag) { it.enterFullscreenLandscape() }
100
101
  }
101
102
 
102
103
  @ReactMethod
103
- fun exitFullscreen(viewTag: Int) {
104
+ override fun exitFullscreen(viewTag: Int) {
104
105
  runOnUiThread(viewTag) { it.exitFullscreen() }
105
106
  }
106
107
 
107
108
  @ReactMethod
108
- fun collapse(viewTag: Int) {
109
+ override fun collapse(viewTag: Int) {
109
110
  runOnUiThread(viewTag) { it.collapse() }
110
111
  }
111
112
 
112
113
  @ReactMethod
113
- fun expand(viewTag: Int) {
114
+ override fun expand(viewTag: Int) {
114
115
  runOnUiThread(viewTag) { it.expand() }
115
116
  }
116
117
 
117
118
  @ReactMethod
118
- fun autoPlayNextCancel(viewTag: Int) {
119
+ override fun autoPlayNextCancel(viewTag: Int) {
119
120
  runOnUiThread(viewTag) { it.autoPlayNextCancel() }
120
121
  }
121
122
 
122
123
  @ReactMethod
123
- fun destroy(viewTag: Int) {
124
+ override fun destroy(viewTag: Int) {
124
125
  runOnUiThread(viewTag) { it.destroy() }
125
126
  }
126
127
 
127
128
  @ReactMethod
128
- fun showCastPicker(viewTag: Int) {
129
+ override fun showCastPicker(viewTag: Int) {
129
130
  runOnUiThread(viewTag) { it.showCastPicker() }
130
131
  }
131
132
 
132
133
  @ReactMethod
133
- fun loadWithClipId(
134
+ override fun loadWithClipId(
134
135
  viewTag: Int,
135
136
  clipId: String,
136
137
  initiator: String?,
@@ -149,7 +150,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
149
150
  }
150
151
 
151
152
  @ReactMethod
152
- fun loadWithClipListId(
153
+ override fun loadWithClipListId(
153
154
  viewTag: Int,
154
155
  clipListId: String,
155
156
  initiator: String?,
@@ -167,7 +168,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
167
168
  }
168
169
 
169
170
  @ReactMethod
170
- fun loadWithProjectId(
171
+ override fun loadWithProjectId(
171
172
  viewTag: Int,
172
173
  projectId: String,
173
174
  initiator: String?,
@@ -185,7 +186,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
185
186
  }
186
187
 
187
188
  @ReactMethod
188
- fun loadWithClipJson(
189
+ override fun loadWithClipJson(
189
190
  viewTag: Int,
190
191
  clipJson: String,
191
192
  initiator: String?,
@@ -203,7 +204,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
203
204
  }
204
205
 
205
206
  @ReactMethod
206
- fun loadWithClipListJson(
207
+ override fun loadWithClipListJson(
207
208
  viewTag: Int,
208
209
  clipListJson: String,
209
210
  initiator: String?,
@@ -221,7 +222,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
221
222
  }
222
223
 
223
224
  @ReactMethod
224
- fun loadWithProjectJson(
225
+ override fun loadWithProjectJson(
225
226
  viewTag: Int,
226
227
  projectJson: String,
227
228
  initiator: String?,
@@ -239,7 +240,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
239
240
  }
240
241
 
241
242
  @ReactMethod
242
- fun loadWithJsonUrl(
243
+ override fun loadWithJsonUrl(
243
244
  viewTag: Int,
244
245
  jsonUrl: String,
245
246
  autoPlay: Boolean
@@ -254,7 +255,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
254
255
 
255
256
  // Getter methods with Promise support
256
257
  @ReactMethod
257
- fun getDuration(viewTag: Int, promise: Promise) {
258
+ override fun getDuration(viewTag: Int, promise: Promise) {
258
259
  UiThreadUtil.runOnUiThread {
259
260
  val view = findPlayerView(viewTag)
260
261
  if (view != null) {
@@ -267,7 +268,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
267
268
  }
268
269
 
269
270
  @ReactMethod
270
- fun getCurrentTime(viewTag: Int, promise: Promise) {
271
+ override fun getCurrentTime(viewTag: Int, promise: Promise) {
271
272
  UiThreadUtil.runOnUiThread {
272
273
  val view = findPlayerView(viewTag)
273
274
  if (view != null) {
@@ -280,7 +281,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
280
281
  }
281
282
 
282
283
  @ReactMethod
283
- fun getMuted(viewTag: Int, promise: Promise) {
284
+ override fun getMuted(viewTag: Int, promise: Promise) {
284
285
  UiThreadUtil.runOnUiThread {
285
286
  val view = findPlayerView(viewTag)
286
287
  if (view != null) {
@@ -293,7 +294,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
293
294
  }
294
295
 
295
296
  @ReactMethod
296
- fun getVolume(viewTag: Int, promise: Promise) {
297
+ override fun getVolume(viewTag: Int, promise: Promise) {
297
298
  UiThreadUtil.runOnUiThread {
298
299
  val view = findPlayerView(viewTag)
299
300
  if (view != null) {
@@ -306,7 +307,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
306
307
  }
307
308
 
308
309
  @ReactMethod
309
- fun getPhase(viewTag: Int, promise: Promise) {
310
+ override fun getPhase(viewTag: Int, promise: Promise) {
310
311
  UiThreadUtil.runOnUiThread {
311
312
  val view = findPlayerView(viewTag)
312
313
  if (view != null) {
@@ -319,7 +320,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
319
320
  }
320
321
 
321
322
  @ReactMethod
322
- fun getState(viewTag: Int, promise: Promise) {
323
+ override fun getState(viewTag: Int, promise: Promise) {
323
324
  UiThreadUtil.runOnUiThread {
324
325
  val view = findPlayerView(viewTag)
325
326
  if (view != null) {
@@ -332,7 +333,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
332
333
  }
333
334
 
334
335
  @ReactMethod
335
- fun getMode(viewTag: Int, promise: Promise) {
336
+ override fun getMode(viewTag: Int, promise: Promise) {
336
337
  UiThreadUtil.runOnUiThread {
337
338
  val view = findPlayerView(viewTag)
338
339
  if (view != null) {
@@ -345,7 +346,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
345
346
  }
346
347
 
347
348
  @ReactMethod
348
- fun getClipData(viewTag: Int, promise: Promise) {
349
+ override fun getClipData(viewTag: Int, promise: Promise) {
349
350
  UiThreadUtil.runOnUiThread {
350
351
  val view = findPlayerView(viewTag)
351
352
  if (view != null) {
@@ -368,7 +369,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
368
369
  }
369
370
 
370
371
  @ReactMethod
371
- fun getProjectData(viewTag: Int, promise: Promise) {
372
+ override fun getProjectData(viewTag: Int, promise: Promise) {
372
373
  UiThreadUtil.runOnUiThread {
373
374
  val view = findPlayerView(viewTag)
374
375
  if (view != null) {
@@ -389,7 +390,7 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
389
390
  }
390
391
 
391
392
  @ReactMethod
392
- fun getPlayoutData(viewTag: Int, promise: Promise) {
393
+ override fun getPlayoutData(viewTag: Int, promise: Promise) {
393
394
  UiThreadUtil.runOnUiThread {
394
395
  val view = findPlayerView(viewTag)
395
396
  if (view != null) {
@@ -1,13 +1,34 @@
1
1
  package com.bluebillywig.bbplayer
2
2
 
3
- import com.facebook.react.ReactPackage
3
+ import com.facebook.react.BaseReactPackage
4
4
  import com.facebook.react.bridge.NativeModule
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
6
8
  import com.facebook.react.uimanager.ViewManager
7
9
 
8
- class BBPlayerPackage : ReactPackage {
9
- override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
10
- return listOf(BBPlayerModule(reactContext))
10
+ class BBPlayerPackage : BaseReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
+ return when (name) {
13
+ BBPlayerModule.NAME -> BBPlayerModule(reactContext)
14
+ else -> null
15
+ }
16
+ }
17
+
18
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
19
+ return ReactModuleInfoProvider {
20
+ mapOf(
21
+ BBPlayerModule.NAME to ReactModuleInfo(
22
+ BBPlayerModule.NAME,
23
+ BBPlayerModule::class.java.name,
24
+ false, // canOverrideExistingModule
25
+ false, // needsEagerInit
26
+ true, // hasConstants - deprecated but still needed
27
+ false, // isCxxModule
28
+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED // isTurboModule
29
+ )
30
+ )
31
+ }
11
32
  }
12
33
 
13
34
  override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
@@ -4,9 +4,12 @@ import android.app.Activity
4
4
  import android.os.Handler
5
5
  import android.os.Looper
6
6
  import android.util.Log
7
+ import android.view.Choreographer
7
8
  import android.view.MotionEvent
8
9
  import android.view.View
10
+ import android.view.ViewGroup
9
11
  import android.widget.FrameLayout
12
+ import com.facebook.react.modules.core.ReactChoreographer
10
13
  import androidx.collection.ArrayMap
11
14
  import androidx.mediarouter.app.MediaRouteButton
12
15
  import com.bluebillywig.bbnativeplayersdk.BBNativePlayer
@@ -42,18 +45,11 @@ private inline fun debugLog(tag: String, message: () -> String) {
42
45
  *
43
46
  * To ensure the native player controls work correctly, this view:
44
47
  *
45
- * 1. **Overrides requestLayout()** - Ensures layout requests propagate correctly through
46
- * React Native's view hierarchy by posting to the choreographer.
47
- *
48
- * 2. **Overrides onMeasure()** - Uses native Android measurement (MeasureSpec.EXACTLY)
49
- * instead of letting Yoga determine the size, ensuring the player and its controls
50
- * receive proper dimensions.
51
- *
52
- * 3. **Overrides onLayout()** - Explicitly layouts child views to fill the container,
48
+ * 1. **Overrides onLayout()** - Explicitly layouts child views to fill the container,
53
49
  * which is necessary because React Native's Yoga layout doesn't automatically
54
50
  * propagate layout to native child views.
55
51
  *
56
- * 4. **Overrides onInterceptTouchEvent()** - Returns false to ensure touch events
52
+ * 2. **Overrides onInterceptTouchEvent()** - Returns false to ensure touch events
57
53
  * always reach the child BBNativePlayerView, allowing the player's controlbar
58
54
  * to respond to taps.
59
55
  *
@@ -64,9 +60,6 @@ private inline fun debugLog(tag: String, message: () -> String) {
64
60
  * ExoPlayer StyledPlayerView which has its own gesture detectors and controlbar that
65
61
  * need to receive touch events directly. Without these overrides, React Native's
66
62
  * touch handling system intercepts events before they reach the native player controls.
67
- *
68
- * This approach is similar to how Expo's ExpoView handles native views with
69
- * `shouldUseAndroidLayout = true`.
70
63
  */
71
64
  class BBPlayerView(private val reactContext: ThemedReactContext) : FrameLayout(reactContext),
72
65
  BBNativePlayerViewDelegate {
@@ -85,88 +78,79 @@ class BBPlayerView(private val reactContext: ThemedReactContext) : FrameLayout(r
85
78
  private var wasLandscapeFullscreen = false
86
79
  private var savedOrientation: Int? = null
87
80
 
88
- init {
89
- // Default to black background (playout data may override with bgColor)
90
- setBackgroundColor(android.graphics.Color.BLACK)
91
- }
92
-
93
81
  // ==================================================================================
94
82
  // NATIVE LAYOUT INTEGRATION
95
- // These overrides ensure the native player view and its controls work correctly
96
- // within React Native's Yoga-based layout system.
83
+ // ViewGroupManager.needsCustomLayoutForChildren() = true tells React Native
84
+ // that this view handles its own child layout, allowing ExoPlayer's controlbar
85
+ // to work correctly.
86
+ //
87
+ // This uses the ReactChoreographer pattern from react-native-screens:
88
+ // https://github.com/software-mansion/react-native-screens
89
+ // See also: https://github.com/facebook/react-native/issues/17968
97
90
  // ==================================================================================
98
91
 
99
- /**
100
- * Override requestLayout to ensure layout requests are properly handled.
101
- *
102
- * React Native's layout system uses Yoga which processes layout asynchronously.
103
- * Native Android views expect requestLayout() to trigger a synchronous layout pass.
104
- * This override posts a layout request to ensure proper propagation through the
105
- * view hierarchy while being frame-aligned via Choreographer for performance.
106
- *
107
- * Without this, the native player view may not update its layout when needed,
108
- * causing issues with control positioning and visibility.
109
- */
110
- override fun requestLayout() {
111
- super.requestLayout()
92
+ private var isLayoutEnqueued = false
93
+ // Flag to prevent requestLayout during super constructor
94
+ private var constructorComplete = false
112
95
 
113
- // Post to ensure layout happens on the next frame, avoiding layout-during-layout issues
114
- // This is a common pattern for native views embedded in React Native
115
- post {
116
- measure(
117
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
118
- MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
119
- )
120
- layout(left, top, right, bottom)
121
- }
96
+ private val layoutCallback = Choreographer.FrameCallback {
97
+ isLayoutEnqueued = false
98
+ measure(
99
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
100
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
101
+ )
102
+ layout(left, top, right, bottom)
103
+ }
104
+
105
+ init {
106
+ // Default to black background (playout data may override with bgColor)
107
+ setBackgroundColor(android.graphics.Color.BLACK)
108
+ // Remove any padding
109
+ setPadding(0, 0, 0, 0)
110
+ // Allow children to render slightly outside bounds (helps with margin artifacts)
111
+ clipToPadding = false
112
+ clipChildren = false
113
+ // Mark constructor complete - enables requestLayout Choreographer callback
114
+ constructorComplete = true
122
115
  }
123
116
 
124
117
  /**
125
- * Override onMeasure to use native Android measurement.
118
+ * Override requestLayout to ensure layout propagates to children using ReactChoreographer.
126
119
  *
127
- * By default, React Native's Yoga layout may pass UNSPECIFIED or AT_MOST specs,
128
- * which can confuse native views expecting EXACTLY specs. This ensures the player
129
- * view receives precise dimensions matching the container size set by React Native.
120
+ * This is the proper React Native pattern for native views that need layout updates.
121
+ * Using NATIVE_ANIMATED_MODULE queue catches the current looper loop instead of
122
+ * enqueueing the update in the next loop, preventing one-frame delays.
130
123
  *
131
- * Performance note: This is called during the measure pass and is optimized to
132
- * avoid unnecessary work by only measuring children when we have valid dimensions.
124
+ * Combined with ViewGroupManager.needsCustomLayoutForChildren() = true, this ensures
125
+ * the native player view and controlbar layout correctly without margin artifacts.
133
126
  */
134
- override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
135
- // Get the exact dimensions from React Native's layout
136
- val width = MeasureSpec.getSize(widthMeasureSpec)
137
- val height = MeasureSpec.getSize(heightMeasureSpec)
138
-
139
- // Set our measured dimensions
140
- setMeasuredDimension(width, height)
141
-
142
- // Measure all children with EXACTLY specs to ensure they fill the container
143
- // This is critical for the player view to receive proper dimensions
144
- if (width > 0 && height > 0) {
145
- val childWidthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY)
146
- val childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
147
-
148
- for (i in 0 until childCount) {
149
- getChildAt(i)?.measure(childWidthSpec, childHeightSpec)
150
- }
127
+ override fun requestLayout() {
128
+ super.requestLayout()
129
+ // Guard against calls during super constructor (before properties are initialized)
130
+ if (!constructorComplete) return
131
+ if (!isLayoutEnqueued) {
132
+ isLayoutEnqueued = true
133
+ ReactChoreographer.getInstance()
134
+ .postFrameCallback(
135
+ ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
136
+ layoutCallback
137
+ )
151
138
  }
152
139
  }
153
140
 
154
141
  /**
155
- * Override onLayout to explicitly position child views.
142
+ * Override onLayout to explicitly position child views to fill the container.
156
143
  *
157
144
  * React Native's Yoga layout calculates positions but doesn't automatically apply
158
- * them to native child views. This explicitly layouts all children to fill the
159
- * container, which is necessary for the BBNativePlayerView to render correctly.
145
+ * them to native child views.
160
146
  */
161
147
  override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
162
148
  super.onLayout(changed, left, top, right, bottom)
163
-
164
- val width = right - left
165
- val height = bottom - top
166
-
167
149
  // Layout all children to fill the entire container
150
+ val w = right - left
151
+ val h = bottom - top
168
152
  for (i in 0 until childCount) {
169
- getChildAt(i)?.layout(0, 0, width, height)
153
+ getChildAt(i)?.layout(0, 0, w, h)
170
154
  }
171
155
  }
172
156
 
@@ -286,13 +270,99 @@ class BBPlayerView(private val reactContext: ThemedReactContext) : FrameLayout(r
286
270
  debugLog("BBPlayerView") { "Creating BBNativePlayerView with factory method" }
287
271
  playerView = BBNativePlayer.createPlayerView(currentActivity, jsonUrl, options)
288
272
  playerView.delegate = this@BBPlayerView
273
+ // Remove any padding from playerView
274
+ playerView.setPadding(0, 0, 0, 0)
289
275
 
290
276
  addView(playerView, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
291
277
 
278
+ // Set ExoPlayer's resize mode to FILL to prevent letterboxing margins
279
+ // This addresses top/bottom margin issues caused by AspectRatioFrameLayout
280
+ postDelayed({
281
+ setExoPlayerResizeMode(playerView, RESIZE_MODE_FILL)
282
+ }, 1000)
283
+
292
284
  playerSetup = true
293
285
  debugLog("BBPlayerView") { "Player setup complete with URL: $jsonUrl" }
294
286
  }
295
287
 
288
+ companion object {
289
+ // AspectRatioFrameLayout resize mode constants
290
+ private const val RESIZE_MODE_FILL = 3
291
+ }
292
+
293
+ /**
294
+ * Recursively find ExoPlayer's PlayerView or AspectRatioFrameLayout and set resize mode.
295
+ * Uses reflection since media3 classes aren't directly available in RN module classpath.
296
+ * This fixes top/bottom margin issues caused by AspectRatioFrameLayout letterboxing.
297
+ */
298
+ private fun setExoPlayerResizeMode(view: View, resizeMode: Int): Boolean {
299
+ // Try Media3 AspectRatioFrameLayout via reflection
300
+ try {
301
+ val aspectRatioClass = Class.forName("androidx.media3.ui.AspectRatioFrameLayout")
302
+ if (aspectRatioClass.isInstance(view)) {
303
+ val method = aspectRatioClass.getMethod("setResizeMode", Int::class.javaPrimitiveType)
304
+ method.invoke(view, resizeMode)
305
+ return true
306
+ }
307
+ } catch (_: ClassNotFoundException) {
308
+ // Media3 not available
309
+ } catch (_: Exception) {
310
+ // Failed to set resize mode
311
+ }
312
+
313
+ // Try Media3 PlayerView via reflection
314
+ try {
315
+ val playerViewClass = Class.forName("androidx.media3.ui.PlayerView")
316
+ if (playerViewClass.isInstance(view)) {
317
+ val method = playerViewClass.getMethod("setResizeMode", Int::class.javaPrimitiveType)
318
+ method.invoke(view, resizeMode)
319
+ // Continue searching - there might be an AspectRatioFrameLayout inside
320
+ }
321
+ } catch (_: ClassNotFoundException) {
322
+ // Media3 PlayerView not available
323
+ } catch (_: Exception) {
324
+ // Failed to set resize mode
325
+ }
326
+
327
+ // Try legacy ExoPlayer2 AspectRatioFrameLayout via reflection
328
+ try {
329
+ val legacyAspectRatioClass = Class.forName("com.google.android.exoplayer2.ui.AspectRatioFrameLayout")
330
+ if (legacyAspectRatioClass.isInstance(view)) {
331
+ val method = legacyAspectRatioClass.getMethod("setResizeMode", Int::class.javaPrimitiveType)
332
+ method.invoke(view, resizeMode)
333
+ return true
334
+ }
335
+ } catch (_: ClassNotFoundException) {
336
+ // ExoPlayer2 not available
337
+ } catch (_: Exception) {
338
+ // Failed to set resize mode
339
+ }
340
+
341
+ // Try legacy ExoPlayer2 StyledPlayerView via reflection
342
+ try {
343
+ val styledPlayerViewClass = Class.forName("com.google.android.exoplayer2.ui.StyledPlayerView")
344
+ if (styledPlayerViewClass.isInstance(view)) {
345
+ val method = styledPlayerViewClass.getMethod("setResizeMode", Int::class.javaPrimitiveType)
346
+ method.invoke(view, resizeMode)
347
+ }
348
+ } catch (_: ClassNotFoundException) {
349
+ // StyledPlayerView not available
350
+ } catch (_: Exception) {
351
+ // Failed to set resize mode
352
+ }
353
+
354
+ // Recursively search children
355
+ if (view is ViewGroup) {
356
+ for (i in 0 until view.childCount) {
357
+ if (setExoPlayerResizeMode(view.getChildAt(i), resizeMode)) {
358
+ return true
359
+ }
360
+ }
361
+ }
362
+
363
+ return false
364
+ }
365
+
296
366
  /**
297
367
  * Load content from a JSON URL into the existing player.
298
368
  * Extracts IDs from the URL and uses the native SDK's loadWithXxxId methods.
@@ -2,11 +2,29 @@ package com.bluebillywig.bbplayer
2
2
 
3
3
  import com.facebook.react.bridge.ReadableArray
4
4
  import com.facebook.react.bridge.ReadableMap
5
- import com.facebook.react.uimanager.SimpleViewManager
6
5
  import com.facebook.react.uimanager.ThemedReactContext
6
+ import com.facebook.react.uimanager.ViewGroupManager
7
7
  import com.facebook.react.uimanager.annotations.ReactProp
8
8
 
9
- class BBPlayerViewManager : SimpleViewManager<BBPlayerView>() {
9
+ /**
10
+ * ViewGroupManager for BBPlayerView.
11
+ *
12
+ * Uses ViewGroupManager instead of SimpleViewManager because BBPlayerView contains
13
+ * child views (BBNativePlayerView with ExoPlayer). The needsCustomLayoutForChildren()
14
+ * override tells React Native that this view handles its own child layout, which is
15
+ * necessary for ExoPlayer's controlbar to work correctly.
16
+ *
17
+ * See: https://github.com/facebook/react-native/issues/17968
18
+ * See: https://github.com/reactwg/react-native-new-architecture/discussions/52
19
+ */
20
+ class BBPlayerViewManager : ViewGroupManager<BBPlayerView>() {
21
+
22
+ /**
23
+ * Tell React Native that this view handles its own child layout.
24
+ * This prevents Yoga from interfering with native child view layout,
25
+ * which is necessary for ExoPlayer's controlbar to work.
26
+ */
27
+ override fun needsCustomLayoutForChildren(): Boolean = true
10
28
 
11
29
  override fun getName(): String = REACT_CLASS
12
30
 
@@ -0,0 +1,12 @@
1
+ package com.bluebillywig.bbplayer;
2
+
3
+ /**
4
+ * Placeholder for New Architecture (Fabric/TurboModules).
5
+ * The actual spec is generated by React Native codegen during build.
6
+ * This file allows the project to compile before codegen runs.
7
+ *
8
+ * During New Architecture builds, this file is replaced by the codegen-generated spec.
9
+ */
10
+
11
+ // The codegen-generated spec will be in:
12
+ // android/build/generated/source/codegen/java/com/bluebillywig/bbplayer/NativeBBPlayerModuleSpec.java
@@ -0,0 +1,59 @@
1
+ package com.bluebillywig.bbplayer;
2
+
3
+ import com.facebook.react.bridge.Promise;
4
+ import com.facebook.react.bridge.ReactApplicationContext;
5
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
6
+
7
+ /**
8
+ * Abstract base class for BBPlayerModule on Old Architecture (Paper).
9
+ * This is used when codegen is not available (Old Architecture builds).
10
+ * The actual implementation extends this class.
11
+ */
12
+ public abstract class NativeBBPlayerModuleSpec extends ReactContextBaseJavaModule {
13
+ public NativeBBPlayerModuleSpec(ReactApplicationContext reactContext) {
14
+ super(reactContext);
15
+ }
16
+
17
+ // Void methods - playback control
18
+ public abstract void play(int viewTag);
19
+ public abstract void pause(int viewTag);
20
+ public abstract void seek(int viewTag, double position);
21
+ public abstract void seekRelative(int viewTag, double offsetSeconds);
22
+ public abstract void setMuted(int viewTag, boolean muted);
23
+ public abstract void setVolume(int viewTag, double volume);
24
+
25
+ // Void methods - fullscreen control
26
+ public abstract void enterFullscreen(int viewTag);
27
+ public abstract void enterFullscreenLandscape(int viewTag);
28
+ public abstract void exitFullscreen(int viewTag);
29
+
30
+ // Void methods - layout control
31
+ public abstract void collapse(int viewTag);
32
+ public abstract void expand(int viewTag);
33
+
34
+ // Void methods - other commands
35
+ public abstract void autoPlayNextCancel(int viewTag);
36
+ public abstract void destroy(int viewTag);
37
+ public abstract void showCastPicker(int viewTag);
38
+
39
+ // Load methods
40
+ public abstract void loadWithClipId(int viewTag, String clipId, String initiator, boolean autoPlay, double seekTo);
41
+ public abstract void loadWithClipListId(int viewTag, String clipListId, String initiator, boolean autoPlay, double seekTo);
42
+ public abstract void loadWithProjectId(int viewTag, String projectId, String initiator, boolean autoPlay, double seekTo);
43
+ public abstract void loadWithClipJson(int viewTag, String clipJson, String initiator, boolean autoPlay, double seekTo);
44
+ public abstract void loadWithClipListJson(int viewTag, String clipListJson, String initiator, boolean autoPlay, double seekTo);
45
+ public abstract void loadWithProjectJson(int viewTag, String projectJson, String initiator, boolean autoPlay, double seekTo);
46
+ public abstract void loadWithJsonUrl(int viewTag, String jsonUrl, boolean autoPlay);
47
+
48
+ // Promise getters
49
+ public abstract void getDuration(int viewTag, Promise promise);
50
+ public abstract void getCurrentTime(int viewTag, Promise promise);
51
+ public abstract void getMuted(int viewTag, Promise promise);
52
+ public abstract void getVolume(int viewTag, Promise promise);
53
+ public abstract void getPhase(int viewTag, Promise promise);
54
+ public abstract void getState(int viewTag, Promise promise);
55
+ public abstract void getMode(int viewTag, Promise promise);
56
+ public abstract void getClipData(int viewTag, Promise promise);
57
+ public abstract void getProjectData(int viewTag, Promise promise);
58
+ public abstract void getPlayoutData(int viewTag, Promise promise);
59
+ }
@@ -1,5 +1,9 @@
1
1
  #import <React/RCTBridgeModule.h>
2
2
 
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+ #import <BBPlayerModuleSpec/BBPlayerModuleSpec.h>
5
+ #endif
6
+
3
7
  @interface RCT_EXTERN_MODULE(BBPlayerModule, NSObject)
4
8
 
5
9
  // Playback control
@@ -45,4 +49,12 @@ RCT_EXTERN_METHOD(getClipData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseRe
45
49
  RCT_EXTERN_METHOD(getProjectData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
46
50
  RCT_EXTERN_METHOD(getPlayoutData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
47
51
 
52
+ #ifdef RCT_NEW_ARCH_ENABLED
53
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
54
+ (const facebook::react::ObjCTurboModule::InitParams &)params
55
+ {
56
+ return std::make_shared<facebook::react::NativeBBPlayerModuleSpecJSI>(params);
57
+ }
58
+ #endif
59
+
48
60
  @end
@@ -5,9 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createCommands = createCommands;
7
7
  var _reactNative = require("react-native");
8
- const {
9
- BBPlayerModule
10
- } = _reactNative.NativeModules;
8
+ // Try TurboModule first, fallback to legacy NativeModules
9
+ let BBPlayerModule = null;
10
+ try {
11
+ // Try to use TurboModule (New Architecture)
12
+ BBPlayerModule = require("./specs/NativeBBPlayerModule").default;
13
+ } catch {
14
+ // Fallback to legacy NativeModules (Old Architecture)
15
+ BBPlayerModule = _reactNative.NativeModules.BBPlayerModule;
16
+ }
17
+
18
+ // Final fallback if both fail
19
+ if (!BBPlayerModule) {
20
+ BBPlayerModule = _reactNative.NativeModules.BBPlayerModule;
21
+ }
11
22
 
12
23
  /**
13
24
  * Get the view tag (node handle) for a ref
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","BBPlayerModule","NativeModules","getViewTag","viewRef","node","current","console","warn","nodeHandle","findNodeHandle","createCommands","play","tag","pause","seek","position","seekRelative","offsetSeconds","setMuted","muted","setVolume","volume","enterFullscreen","enterFullscreenLandscape","exitFullscreen","collapse","expand","autoPlayNextCancel","destroy","showCastPicker","loadClip","clipId","options","loadWithClipId","initiator","playout","autoPlay","seekTo","loadWithClipListId","clipListId","loadWithProjectId","projectId","loadWithClipJson","clipJson","loadWithClipListJson","clipListJson","loadWithProjectJson","projectJson","loadWithJsonUrl","jsonUrl","getDuration","getCurrentTime","getMuted","getVolume","getPhase","getState","getMode","getClipData","getProjectData","getPlayoutData","getPlayerState","state","phase","mode","currentTime","duration","clipData","projectData","playoutData","Promise","all","clip","project","error"],"sourceRoot":"../../src","sources":["NativeCommands.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","BBPlayerModule","default","NativeModules","getViewTag","viewRef","node","current","console","warn","nodeHandle","findNodeHandle","createCommands","play","tag","pause","seek","position","seekRelative","offsetSeconds","setMuted","muted","setVolume","volume","enterFullscreen","enterFullscreenLandscape","exitFullscreen","collapse","expand","autoPlayNextCancel","destroy","showCastPicker","loadClip","clipId","options","loadWithClipId","initiator","playout","autoPlay","seekTo","loadWithClipListId","clipListId","loadWithProjectId","projectId","loadWithClipJson","clipJson","loadWithClipListJson","clipListJson","loadWithProjectJson","projectJson","loadWithJsonUrl","jsonUrl","getDuration","getCurrentTime","getMuted","getVolume","getPhase","getState","getMode","getClipData","getProjectData","getPlayoutData","getPlayerState","state","phase","mode","currentTime","duration","clipData","projectData","playoutData","Promise","all","clip","project","error"],"sourceRoot":"../../src","sources":["NativeCommands.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing("BBPlayerModule");
9
+ //# sourceMappingURL=NativeBBPlayerModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeBBPlayerModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAmFpCC,gCAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
@@ -1,9 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  import { NativeModules, findNodeHandle } from "react-native";
4
- const {
5
- BBPlayerModule
6
- } = NativeModules;
4
+ // Try TurboModule first, fallback to legacy NativeModules
5
+ let BBPlayerModule = null;
6
+ try {
7
+ // Try to use TurboModule (New Architecture)
8
+ BBPlayerModule = require("./specs/NativeBBPlayerModule").default;
9
+ } catch {
10
+ // Fallback to legacy NativeModules (Old Architecture)
11
+ BBPlayerModule = NativeModules.BBPlayerModule;
12
+ }
13
+
14
+ // Final fallback if both fail
15
+ if (!BBPlayerModule) {
16
+ BBPlayerModule = NativeModules.BBPlayerModule;
17
+ }
7
18
 
8
19
  /**
9
20
  * Get the view tag (node handle) for a ref
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","findNodeHandle","BBPlayerModule","getViewTag","viewRef","node","current","console","warn","nodeHandle","createCommands","play","tag","pause","seek","position","seekRelative","offsetSeconds","setMuted","muted","setVolume","volume","enterFullscreen","enterFullscreenLandscape","exitFullscreen","collapse","expand","autoPlayNextCancel","destroy","showCastPicker","loadClip","clipId","options","loadWithClipId","initiator","playout","autoPlay","seekTo","loadWithClipListId","clipListId","loadWithProjectId","projectId","loadWithClipJson","clipJson","loadWithClipListJson","clipListJson","loadWithProjectJson","projectJson","loadWithJsonUrl","jsonUrl","getDuration","getCurrentTime","getMuted","getVolume","getPhase","getState","getMode","getClipData","getProjectData","getPlayoutData","getPlayerState","state","phase","mode","currentTime","duration","clipData","projectData","playoutData","Promise","all","clip","project","error"],"sourceRoot":"../../src","sources":["NativeCommands.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","findNodeHandle","BBPlayerModule","require","default","getViewTag","viewRef","node","current","console","warn","nodeHandle","createCommands","play","tag","pause","seek","position","seekRelative","offsetSeconds","setMuted","muted","setVolume","volume","enterFullscreen","enterFullscreenLandscape","exitFullscreen","collapse","expand","autoPlayNextCancel","destroy","showCastPicker","loadClip","clipId","options","loadWithClipId","initiator","playout","autoPlay","seekTo","loadWithClipListId","clipListId","loadWithProjectId","projectId","loadWithClipJson","clipJson","loadWithClipListJson","clipListJson","loadWithProjectJson","projectJson","loadWithJsonUrl","jsonUrl","getDuration","getCurrentTime","getMuted","getVolume","getPhase","getState","getMode","getClipData","getProjectData","getPlayoutData","getPlayerState","state","phase","mode","currentTime","duration","clipData","projectData","playoutData","Promise","all","clip","project","error"],"sourceRoot":"../../src","sources":["NativeCommands.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from "react-native";
4
+ export default TurboModuleRegistry.getEnforcing("BBPlayerModule");
5
+ //# sourceMappingURL=NativeBBPlayerModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeBBPlayerModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAmFlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeCommands.d.ts","sourceRoot":"","sources":["../../../src/NativeCommands.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAwBvE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;;;qBAUvC,MAAM;kCAIO,MAAM;sBAIlB,OAAO;wBAIL,MAAM;;;;;;;;;IAqC1B;;;OAGG;uBACgB,MAAM,YAAY,eAAe;6BAgB1C,MAAM,cACF,MAAM,aACP,OAAO,WACT,MAAM;qCAcH,MAAM,cACN,MAAM,aACP,OAAO,WACT,MAAM;mCAcJ,MAAM,cACL,MAAM,aACP,OAAO,WACT,MAAM;iCAcL,MAAM,cACJ,MAAM,aACP,OAAO,WACT,MAAM;yCAcD,MAAM,cACR,MAAM,aACP,OAAO,WACT,MAAM;uCAcF,MAAM,cACP,MAAM,aACP,OAAO,WACT,MAAM;+BAaU,MAAM,aAAa,OAAO;uBAU9B,QAAQ,MAAM,GAAG,IAAI,CAAC;0BAOnB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAO5B,QAAQ,OAAO,GAAG,IAAI,CAAC;qBAOtB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAOvB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAOtB,QAAQ,MAAM,GAAG,IAAI,CAAC;mBAOvB,QAAQ,MAAM,GAAG,IAAI,CAAC;uBAOlB,QAAQ;QAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;0BAOiB,QAAQ;QAChC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;0BAOiB,QAAQ;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IAQT;;;OAGG;0BACuB,QAAQ,aAAa,GAAG,IAAI,CAAC;EAkD1D"}
1
+ {"version":3,"file":"NativeCommands.d.ts","sourceRoot":"","sources":["../../../src/NativeCommands.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAuCvE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;;;qBAUvC,MAAM;kCAIO,MAAM;sBAIlB,OAAO;wBAIL,MAAM;;;;;;;;;IAqC1B;;;OAGG;uBACgB,MAAM,YAAY,eAAe;6BAgB1C,MAAM,cACF,MAAM,aACP,OAAO,WACT,MAAM;qCAcH,MAAM,cACN,MAAM,aACP,OAAO,WACT,MAAM;mCAcJ,MAAM,cACL,MAAM,aACP,OAAO,WACT,MAAM;iCAcL,MAAM,cACJ,MAAM,aACP,OAAO,WACT,MAAM;yCAcD,MAAM,cACR,MAAM,aACP,OAAO,WACT,MAAM;uCAcF,MAAM,cACP,MAAM,aACP,OAAO,WACT,MAAM;+BAaU,MAAM,aAAa,OAAO;uBAU9B,QAAQ,MAAM,GAAG,IAAI,CAAC;0BAOnB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAO5B,QAAQ,OAAO,GAAG,IAAI,CAAC;qBAOtB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAOvB,QAAQ,MAAM,GAAG,IAAI,CAAC;oBAOtB,QAAQ,MAAM,GAAG,IAAI,CAAC;mBAOvB,QAAQ,MAAM,GAAG,IAAI,CAAC;uBAOlB,QAAQ;QAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;0BAOiB,QAAQ;QAChC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;0BAOiB,QAAQ;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IAQT;;;OAGG;0BACuB,QAAQ,aAAa,GAAG,IAAI,CAAC;EAkD1D"}
@@ -0,0 +1,37 @@
1
+ import type { TurboModule } from "react-native";
2
+ export interface Spec extends TurboModule {
3
+ play(viewTag: number): void;
4
+ pause(viewTag: number): void;
5
+ seek(viewTag: number, position: number): void;
6
+ seekRelative(viewTag: number, offsetSeconds: number): void;
7
+ setMuted(viewTag: number, muted: boolean): void;
8
+ setVolume(viewTag: number, volume: number): void;
9
+ enterFullscreen(viewTag: number): void;
10
+ enterFullscreenLandscape(viewTag: number): void;
11
+ exitFullscreen(viewTag: number): void;
12
+ collapse(viewTag: number): void;
13
+ expand(viewTag: number): void;
14
+ autoPlayNextCancel(viewTag: number): void;
15
+ destroy(viewTag: number): void;
16
+ showCastPicker(viewTag: number): void;
17
+ loadWithClipId(viewTag: number, clipId: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
18
+ loadWithClipListId(viewTag: number, clipListId: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
19
+ loadWithProjectId(viewTag: number, projectId: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
20
+ loadWithClipJson(viewTag: number, clipJson: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
21
+ loadWithClipListJson(viewTag: number, clipListJson: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
22
+ loadWithProjectJson(viewTag: number, projectJson: string, initiator: string | null, autoPlay: boolean, seekTo: number): void;
23
+ loadWithJsonUrl(viewTag: number, jsonUrl: string, autoPlay: boolean): void;
24
+ getDuration(viewTag: number): Promise<number | null>;
25
+ getCurrentTime(viewTag: number): Promise<number | null>;
26
+ getMuted(viewTag: number): Promise<boolean | null>;
27
+ getVolume(viewTag: number): Promise<number | null>;
28
+ getPhase(viewTag: number): Promise<string | null>;
29
+ getState(viewTag: number): Promise<string | null>;
30
+ getMode(viewTag: number): Promise<string | null>;
31
+ getClipData(viewTag: number): Promise<Object | null>;
32
+ getProjectData(viewTag: number): Promise<Object | null>;
33
+ getPlayoutData(viewTag: number): Promise<Object | null>;
34
+ }
35
+ declare const _default: Spec;
36
+ export default _default;
37
+ //# sourceMappingURL=NativeBBPlayerModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeBBPlayerModule.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeBBPlayerModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGtC,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAG3E,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACzD;;AAED,wBAAwE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluebillywig/react-native-bb-player",
3
- "version": "8.42.8",
3
+ "version": "8.42.10",
4
4
  "description": "Blue Billywig Native Video Player for React Native - iOS AVPlayer and Android ExoPlayer integration",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -101,5 +101,13 @@
101
101
  }
102
102
  ]
103
103
  ]
104
+ },
105
+ "codegenConfig": {
106
+ "name": "BBPlayerModuleSpec",
107
+ "type": "modules",
108
+ "jsSrcsDir": "./src/specs",
109
+ "android": {
110
+ "javaPackageName": "com.bluebillywig.bbplayer"
111
+ }
104
112
  }
105
113
  }
@@ -2,6 +2,9 @@ require 'json'
2
2
 
3
3
  package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
4
 
5
+ # Check if New Architecture is enabled
6
+ new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
7
+
5
8
  Pod::Spec.new do |s|
6
9
  s.name = 'react-native-bb-player'
7
10
  s.version = package['version']
@@ -16,14 +19,31 @@ Pod::Spec.new do |s|
16
19
  s.static_framework = true
17
20
 
18
21
  s.dependency 'React-Core'
19
- s.dependency 'BlueBillywigNativePlayerKit-iOS', '~> 8.40.0'
20
- s.dependency 'BlueBillywigNativePlayerKit-iOS/GoogleCastSDK', '~> 8.40.0'
22
+ s.dependency 'BlueBillywigNativePlayerKit-iOS', '~> 8.42.0'
23
+ s.dependency 'BlueBillywigNativePlayerKit-iOS/GoogleCastSDK', '~> 8.42.0'
24
+
25
+ # TurboModule dependencies for New Architecture
26
+ if new_arch_enabled
27
+ s.dependency 'React-Codegen'
28
+ s.dependency 'RCT-Folly'
29
+ s.dependency 'RCTRequired'
30
+ s.dependency 'RCTTypeSafety'
31
+ s.dependency 'ReactCommon/turbomodule/core'
32
+ end
21
33
 
22
34
  # Swift/Objective-C compatibility
23
- s.pod_target_xcconfig = {
35
+ xcconfig = {
24
36
  'DEFINES_MODULE' => 'YES',
25
37
  'SWIFT_COMPILATION_MODE' => 'wholemodule'
26
38
  }
27
39
 
40
+ # Add compiler flag for New Architecture
41
+ if new_arch_enabled
42
+ xcconfig['OTHER_CPLUSPLUSFLAGS'] = '$(inherited) -DRCT_NEW_ARCH_ENABLED'
43
+ xcconfig['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17'
44
+ end
45
+
46
+ s.pod_target_xcconfig = xcconfig
47
+
28
48
  s.source_files = "ios/**/*.{h,m,mm,swift,hpp,cpp}"
29
49
  end
@@ -3,7 +3,22 @@ import { NativeModules, findNodeHandle } from "react-native";
3
3
  import type { LoadClipOptions, BBPlayerState } from "./BBPlayer.types";
4
4
  import type { State, Phase } from "./types";
5
5
 
6
- const { BBPlayerModule } = NativeModules;
6
+ // Try TurboModule first, fallback to legacy NativeModules
7
+ let BBPlayerModule: typeof import("./specs/NativeBBPlayerModule").default | null =
8
+ null;
9
+
10
+ try {
11
+ // Try to use TurboModule (New Architecture)
12
+ BBPlayerModule = require("./specs/NativeBBPlayerModule").default;
13
+ } catch {
14
+ // Fallback to legacy NativeModules (Old Architecture)
15
+ BBPlayerModule = NativeModules.BBPlayerModule;
16
+ }
17
+
18
+ // Final fallback if both fail
19
+ if (!BBPlayerModule) {
20
+ BBPlayerModule = NativeModules.BBPlayerModule;
21
+ }
7
22
 
8
23
  /**
9
24
  * Get the view tag (node handle) for a ref
@@ -0,0 +1,85 @@
1
+ import type { TurboModule } from "react-native";
2
+ import { TurboModuleRegistry } from "react-native";
3
+
4
+ export interface Spec extends TurboModule {
5
+ // Void methods - playback control
6
+ play(viewTag: number): void;
7
+ pause(viewTag: number): void;
8
+ seek(viewTag: number, position: number): void;
9
+ seekRelative(viewTag: number, offsetSeconds: number): void;
10
+ setMuted(viewTag: number, muted: boolean): void;
11
+ setVolume(viewTag: number, volume: number): void;
12
+
13
+ // Void methods - fullscreen control
14
+ enterFullscreen(viewTag: number): void;
15
+ enterFullscreenLandscape(viewTag: number): void;
16
+ exitFullscreen(viewTag: number): void;
17
+
18
+ // Void methods - layout control
19
+ collapse(viewTag: number): void;
20
+ expand(viewTag: number): void;
21
+
22
+ // Void methods - other commands
23
+ autoPlayNextCancel(viewTag: number): void;
24
+ destroy(viewTag: number): void;
25
+ showCastPicker(viewTag: number): void;
26
+
27
+ // Load methods
28
+ loadWithClipId(
29
+ viewTag: number,
30
+ clipId: string,
31
+ initiator: string | null,
32
+ autoPlay: boolean,
33
+ seekTo: number
34
+ ): void;
35
+ loadWithClipListId(
36
+ viewTag: number,
37
+ clipListId: string,
38
+ initiator: string | null,
39
+ autoPlay: boolean,
40
+ seekTo: number
41
+ ): void;
42
+ loadWithProjectId(
43
+ viewTag: number,
44
+ projectId: string,
45
+ initiator: string | null,
46
+ autoPlay: boolean,
47
+ seekTo: number
48
+ ): void;
49
+ loadWithClipJson(
50
+ viewTag: number,
51
+ clipJson: string,
52
+ initiator: string | null,
53
+ autoPlay: boolean,
54
+ seekTo: number
55
+ ): void;
56
+ loadWithClipListJson(
57
+ viewTag: number,
58
+ clipListJson: string,
59
+ initiator: string | null,
60
+ autoPlay: boolean,
61
+ seekTo: number
62
+ ): void;
63
+ loadWithProjectJson(
64
+ viewTag: number,
65
+ projectJson: string,
66
+ initiator: string | null,
67
+ autoPlay: boolean,
68
+ seekTo: number
69
+ ): void;
70
+ loadWithJsonUrl(viewTag: number, jsonUrl: string, autoPlay: boolean): void;
71
+
72
+ // Promise getters
73
+ getDuration(viewTag: number): Promise<number | null>;
74
+ getCurrentTime(viewTag: number): Promise<number | null>;
75
+ getMuted(viewTag: number): Promise<boolean | null>;
76
+ getVolume(viewTag: number): Promise<number | null>;
77
+ getPhase(viewTag: number): Promise<string | null>;
78
+ getState(viewTag: number): Promise<string | null>;
79
+ getMode(viewTag: number): Promise<string | null>;
80
+ getClipData(viewTag: number): Promise<Object | null>;
81
+ getProjectData(viewTag: number): Promise<Object | null>;
82
+ getPlayoutData(viewTag: number): Promise<Object | null>;
83
+ }
84
+
85
+ export default TurboModuleRegistry.getEnforcing<Spec>("BBPlayerModule");