@bluebillywig/react-native-bb-player 8.45.23 → 8.46.1

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.
Files changed (144) hide show
  1. package/README.md +2 -2
  2. package/android/build.gradle +18 -1
  3. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/bbnativeplayersdk-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  4. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/bbnativeplayersdk-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  5. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/bbnativeplayersdk-0.0.11.8-SNAPSHOT.aar +0 -0
  6. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/bbnativeplayersdk-0.0.11.8-SNAPSHOT.module +137 -0
  7. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/bbnativeplayersdk-0.0.11.8-SNAPSHOT.pom +35 -0
  8. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +41 -0
  9. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk/maven-metadata-local.xml +12 -0
  10. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/bbnativeplayersdk-compose-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  11. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/bbnativeplayersdk-compose-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  12. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/bbnativeplayersdk-compose-0.0.11.8-SNAPSHOT.aar +0 -0
  13. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/bbnativeplayersdk-compose-0.0.11.8-SNAPSHOT.module +167 -0
  14. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/bbnativeplayersdk-compose-0.0.11.8-SNAPSHOT.pom +61 -0
  15. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +41 -0
  16. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-compose/maven-metadata-local.xml +12 -0
  17. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/bbnativeplayersdk-core-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  18. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/bbnativeplayersdk-core-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  19. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/bbnativeplayersdk-core-0.0.11.8-SNAPSHOT.aar +0 -0
  20. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/bbnativeplayersdk-core-0.0.11.8-SNAPSHOT.module +264 -0
  21. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/bbnativeplayersdk-core-0.0.11.8-SNAPSHOT.pom +149 -0
  22. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +41 -0
  23. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeplayersdk-core/maven-metadata-local.xml +12 -0
  24. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  25. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT-kotlin-tooling-metadata.json +28 -0
  26. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  27. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT.jar +0 -0
  28. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT.module +159 -0
  29. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/bbnativeshared-0.0.11.8-SNAPSHOT.pom +14 -0
  30. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +47 -0
  31. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared/maven-metadata-local.xml +12 -0
  32. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/bbnativeshared-android-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  33. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/bbnativeshared-android-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  34. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/bbnativeshared-android-0.0.11.8-SNAPSHOT.aar +0 -0
  35. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/bbnativeshared-android-0.0.11.8-SNAPSHOT.module +329 -0
  36. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/bbnativeshared-android-0.0.11.8-SNAPSHOT.pom +245 -0
  37. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +41 -0
  38. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android/maven-metadata-local.xml +12 -0
  39. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/bbnativeshared-android-debug-0.0.11.8-SNAPSHOT-javadoc.jar +0 -0
  40. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/bbnativeshared-android-debug-0.0.11.8-SNAPSHOT-sources.jar +0 -0
  41. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/bbnativeshared-android-debug-0.0.11.8-SNAPSHOT.aar +0 -0
  42. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/bbnativeshared-android-debug-0.0.11.8-SNAPSHOT.module +332 -0
  43. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/bbnativeshared-android-debug-0.0.11.8-SNAPSHOT.pom +245 -0
  44. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/0.0.11.8-SNAPSHOT/maven-metadata-local.xml +41 -0
  45. package/android/repo/com/bluebillywig/bbnativeplayersdk/bbnativeshared-android-debug/maven-metadata-local.xml +12 -0
  46. package/android/src/main/java/com/bluebillywig/bbplayer/BBCastButtonViewManager.kt +40 -0
  47. package/android/src/main/java/com/bluebillywig/bbplayer/BBCastMiniControlsViewManager.kt +79 -0
  48. package/android/src/main/java/com/bluebillywig/bbplayer/BBPlayerModule.kt +41 -0
  49. package/android/src/main/java/com/bluebillywig/bbplayer/BBPlayerPackage.kt +3 -1
  50. package/android/src/main/java/com/bluebillywig/bbplayer/BBPlayerView.kt +6 -0
  51. package/android/src/paper/java/com/bluebillywig/bbplayer/NativeBBPlayerModuleSpec.java +6 -0
  52. package/ios/BBCastButtonView.swift +30 -0
  53. package/ios/BBCastButtonViewManager.m +7 -0
  54. package/ios/BBCastButtonViewManager.swift +12 -0
  55. package/ios/BBCastMiniControlsView.swift +27 -0
  56. package/ios/BBCastMiniControlsViewManager.m +5 -0
  57. package/ios/BBCastMiniControlsViewManager.swift +12 -0
  58. package/ios/BBPlayerModule.mm +4 -0
  59. package/ios/BBPlayerModule.swift +27 -0
  60. package/ios/BBPlayerView.swift +4 -0
  61. package/ios/Frameworks/BBNativePlayerKit.xcframework/Info.plist +5 -5
  62. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Assets.car +0 -0
  63. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/BBNativePlayerKit +0 -0
  64. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Headers/BBNativePlayerKit-Swift.h +13 -12
  65. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Headers/BBNativePlayerKit.h +1 -1
  66. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Info.plist +0 -0
  67. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios.abi.json +2169 -1903
  68. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios.private.swiftinterface +230 -357
  69. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  70. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios.swiftinterface +230 -357
  71. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Assets.car +0 -0
  72. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/BBNativePlayerKit +0 -0
  73. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Headers/BBNativePlayerKit-Swift.h +26 -24
  74. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Headers/BBNativePlayerKit.h +1 -1
  75. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Info.plist +0 -0
  76. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios-simulator.abi.json +2169 -1903
  77. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +230 -357
  78. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  79. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +230 -357
  80. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +2169 -1903
  81. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +230 -357
  82. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  83. package/ios/Frameworks/BBNativePlayerKit.xcframework/ios-arm64_x86_64-simulator/BBNativePlayerKit.framework/Modules/BBNativePlayerKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +230 -357
  84. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64/bbnativeshared.framework/Headers/bbnativeshared.h +19 -2
  85. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64/bbnativeshared.framework/bbnativeshared +0 -0
  86. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64/dSYMs/bbnativeshared.framework.dSYM/Contents/Resources/DWARF/bbnativeshared +0 -0
  87. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64/dSYMs/bbnativeshared.framework.dSYM/Contents/Resources/Relocations/aarch64/bbnativeshared.yml +15060 -13519
  88. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64_x86_64-simulator/bbnativeshared.framework/Headers/bbnativeshared.h +19 -2
  89. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64_x86_64-simulator/bbnativeshared.framework/bbnativeshared +0 -0
  90. package/ios/Frameworks/bbnativeshared.xcframework/ios-arm64_x86_64-simulator/dSYMs/bbnativeshared.framework.dSYM/Contents/Resources/DWARF/bbnativeshared +0 -0
  91. package/lib/commonjs/BBCastButton.js +32 -0
  92. package/lib/commonjs/BBCastButton.js.map +1 -0
  93. package/lib/commonjs/BBCastMiniControls.js +32 -0
  94. package/lib/commonjs/BBCastMiniControls.js.map +1 -0
  95. package/lib/commonjs/BBModalPlayer.js +6 -0
  96. package/lib/commonjs/BBModalPlayer.js.map +1 -1
  97. package/lib/commonjs/BBOutstreamView.js +5 -1
  98. package/lib/commonjs/BBOutstreamView.js.map +1 -1
  99. package/lib/commonjs/NativeCommands.js +26 -0
  100. package/lib/commonjs/NativeCommands.js.map +1 -1
  101. package/lib/commonjs/index.js +45 -0
  102. package/lib/commonjs/index.js.map +1 -1
  103. package/lib/commonjs/specs/NativeBBPlayerModule.js.map +1 -1
  104. package/lib/module/BBCastButton.js +27 -0
  105. package/lib/module/BBCastButton.js.map +1 -0
  106. package/lib/module/BBCastMiniControls.js +27 -0
  107. package/lib/module/BBCastMiniControls.js.map +1 -0
  108. package/lib/module/BBModalPlayer.js +6 -0
  109. package/lib/module/BBModalPlayer.js.map +1 -1
  110. package/lib/module/BBOutstreamView.js +5 -1
  111. package/lib/module/BBOutstreamView.js.map +1 -1
  112. package/lib/module/NativeCommands.js +26 -0
  113. package/lib/module/NativeCommands.js.map +1 -1
  114. package/lib/module/index.js +9 -2
  115. package/lib/module/index.js.map +1 -1
  116. package/lib/module/specs/NativeBBPlayerModule.js.map +1 -1
  117. package/lib/typescript/src/BBCastButton.d.ts +24 -0
  118. package/lib/typescript/src/BBCastButton.d.ts.map +1 -0
  119. package/lib/typescript/src/BBCastMiniControls.d.ts +19 -0
  120. package/lib/typescript/src/BBCastMiniControls.d.ts.map +1 -0
  121. package/lib/typescript/src/BBModalPlayer.d.ts +15 -1
  122. package/lib/typescript/src/BBModalPlayer.d.ts.map +1 -1
  123. package/lib/typescript/src/BBOutstreamView.d.ts.map +1 -1
  124. package/lib/typescript/src/BBPlayer.types.d.ts +9 -1
  125. package/lib/typescript/src/BBPlayer.types.d.ts.map +1 -1
  126. package/lib/typescript/src/NativeCommands.d.ts +4 -0
  127. package/lib/typescript/src/NativeCommands.d.ts.map +1 -1
  128. package/lib/typescript/src/index.d.ts +9 -2
  129. package/lib/typescript/src/index.d.ts.map +1 -1
  130. package/lib/typescript/src/specs/NativeBBPlayerModule.d.ts +4 -0
  131. package/lib/typescript/src/specs/NativeBBPlayerModule.d.ts.map +1 -1
  132. package/lib/typescript/src/types.d.ts +1 -1
  133. package/lib/typescript/src/types.d.ts.map +1 -1
  134. package/package.json +1 -1
  135. package/react-native-bb-player.podspec +2 -2
  136. package/src/BBCastButton.tsx +32 -0
  137. package/src/BBCastMiniControls.tsx +27 -0
  138. package/src/BBModalPlayer.ts +16 -1
  139. package/src/BBOutstreamView.tsx +5 -1
  140. package/src/BBPlayer.types.ts +9 -1
  141. package/src/NativeCommands.ts +27 -0
  142. package/src/index.ts +10 -3
  143. package/src/specs/NativeBBPlayerModule.ts +6 -0
  144. package/src/types.ts +1 -1
@@ -0,0 +1,40 @@
1
+ package com.bluebillywig.bbplayer
2
+
3
+ import android.widget.FrameLayout
4
+ import androidx.mediarouter.app.MediaRouteButton
5
+ import com.facebook.react.uimanager.SimpleViewManager
6
+ import com.facebook.react.uimanager.ThemedReactContext
7
+ import com.facebook.react.uimanager.annotations.ReactProp
8
+
9
+ class BBCastButtonViewManager : SimpleViewManager<FrameLayout>() {
10
+
11
+ override fun getName(): String = "BBCastButtonView"
12
+
13
+ override fun createViewInstance(reactContext: ThemedReactContext): FrameLayout {
14
+ val container = FrameLayout(reactContext)
15
+ val castButton = MediaRouteButton(reactContext)
16
+
17
+ try {
18
+ val castButtonFactoryClass = Class.forName("com.google.android.gms.cast.framework.CastButtonFactory")
19
+ castButtonFactoryClass.getMethod("setUpMediaRouteButton", android.content.Context::class.java, MediaRouteButton::class.java)
20
+ .invoke(null, reactContext, castButton)
21
+ } catch (e: Exception) {
22
+ android.util.Log.w("BBCastButton", "Cast button unavailable: ${e.message}")
23
+ }
24
+
25
+ container.addView(
26
+ castButton,
27
+ FrameLayout.LayoutParams(
28
+ FrameLayout.LayoutParams.MATCH_PARENT,
29
+ FrameLayout.LayoutParams.MATCH_PARENT
30
+ )
31
+ )
32
+ return container
33
+ }
34
+
35
+ @ReactProp(name = "tintColor", customType = "Color")
36
+ fun setTintColor(view: FrameLayout, color: Int?) {
37
+ // MediaRouteButton tint is controlled via the Cast SDK theme.
38
+ // The tintColor prop is primarily effective on iOS (GCKUICastButton).
39
+ }
40
+ }
@@ -0,0 +1,79 @@
1
+ package com.bluebillywig.bbplayer
2
+
3
+ import android.util.Log
4
+ import android.view.View
5
+ import android.widget.FrameLayout
6
+ import androidx.fragment.app.FragmentActivity
7
+ import com.facebook.react.uimanager.SimpleViewManager
8
+ import com.facebook.react.uimanager.ThemedReactContext
9
+
10
+ class BBCastMiniControlsViewManager : SimpleViewManager<FrameLayout>() {
11
+
12
+ override fun getName(): String = "BBCastMiniControlsView"
13
+
14
+ override fun createViewInstance(reactContext: ThemedReactContext): FrameLayout {
15
+ val container = FrameLayout(reactContext)
16
+ container.id = View.generateViewId()
17
+
18
+ container.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
19
+ private var attempted = false
20
+
21
+ override fun onViewAttachedToWindow(v: View) {
22
+ if (attempted) return
23
+ attempted = true
24
+ attachMiniController(reactContext, container)
25
+ }
26
+
27
+ override fun onViewDetachedFromWindow(v: View) {}
28
+ })
29
+
30
+ return container
31
+ }
32
+
33
+ private fun attachMiniController(reactContext: ThemedReactContext, container: FrameLayout) {
34
+ try {
35
+ val activity = reactContext.currentActivity as? FragmentActivity ?: return
36
+
37
+ // MiniControllerFragment.onCreateView reads button actions from
38
+ // CastContext → CastMediaOptions → NotificationOptions → actions array.
39
+ // When CastContext is not properly initialized, this array is null,
40
+ // causing an NPE inside onCreateView that we cannot catch.
41
+ // Verify this chain is non-null before creating the fragment.
42
+ val castContextClass = Class.forName("com.google.android.gms.cast.framework.CastContext")
43
+ val castContext = castContextClass.getMethod("getSharedInstance", android.content.Context::class.java)
44
+ .invoke(null, reactContext)
45
+
46
+ val mediaOptions = castContextClass.getMethod("getCastMediaOptions").invoke(castContext)
47
+ if (mediaOptions == null) {
48
+ Log.w("BBCastMiniControls", "No CastMediaOptions, skipping mini controls")
49
+ return
50
+ }
51
+
52
+ val mediaOptionsClass = Class.forName("com.google.android.gms.cast.framework.media.CastMediaOptions")
53
+ val notificationOptions = mediaOptionsClass.getMethod("getNotificationOptions").invoke(mediaOptions)
54
+ if (notificationOptions == null) {
55
+ Log.w("BBCastMiniControls", "No NotificationOptions, skipping mini controls")
56
+ return
57
+ }
58
+
59
+ val notifOptionsClass = Class.forName("com.google.android.gms.cast.framework.media.NotificationOptions")
60
+ val actions = notifOptionsClass.getMethod("getActions").invoke(notificationOptions)
61
+ if (actions == null) {
62
+ Log.w("BBCastMiniControls", "No notification actions, skipping mini controls")
63
+ return
64
+ }
65
+
66
+ val fragmentClass = Class.forName(
67
+ "com.google.android.gms.cast.framework.media.widget.MiniControllerFragment"
68
+ )
69
+ val fragment = fragmentClass.getDeclaredConstructor().newInstance() as androidx.fragment.app.Fragment
70
+
71
+ activity.supportFragmentManager
72
+ .beginTransaction()
73
+ .replace(container.id, fragment, "bb_cast_mini_controls_${container.id}")
74
+ .commitAllowingStateLoss()
75
+ } catch (e: Exception) {
76
+ Log.w("BBCastMiniControls", "Cast mini controls unavailable: ${e.message}")
77
+ }
78
+ }
79
+ }
@@ -555,6 +555,47 @@ class BBPlayerModule(private val reactContext: ReactApplicationContext) :
555
555
  }
556
556
  }
557
557
 
558
+ @ReactMethod
559
+ override fun setInView(viewTag: Double, inView: Boolean) {
560
+ runOnUiThread(viewTag.toInt()) { it.setInView(inView) }
561
+ }
562
+
563
+ @ReactMethod
564
+ override fun getInView(viewTag: Double, promise: Promise) {
565
+ UiThreadUtil.runOnUiThread {
566
+ val view = findPlayerView(viewTag.toInt())
567
+ if (view != null) {
568
+ promise.resolve(view.getInView())
569
+ } else {
570
+ promise.resolve(null)
571
+ }
572
+ }
573
+ }
574
+
575
+ @ReactMethod
576
+ override fun getAdMediaWidth(viewTag: Double, promise: Promise) {
577
+ UiThreadUtil.runOnUiThread {
578
+ val view = findPlayerView(viewTag.toInt())
579
+ if (view != null) {
580
+ promise.resolve(view.getAdMediaWidth())
581
+ } else {
582
+ promise.resolve(null)
583
+ }
584
+ }
585
+ }
586
+
587
+ @ReactMethod
588
+ override fun getAdMediaHeight(viewTag: Double, promise: Promise) {
589
+ UiThreadUtil.runOnUiThread {
590
+ val view = findPlayerView(viewTag.toInt())
591
+ if (view != null) {
592
+ promise.resolve(view.getAdMediaHeight())
593
+ } else {
594
+ promise.resolve(null)
595
+ }
596
+ }
597
+ }
598
+
558
599
  companion object {
559
600
  const val NAME = "BBPlayerModule"
560
601
  }
@@ -34,7 +34,9 @@ class BBPlayerPackage : BaseReactPackage() {
34
34
  override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
35
35
  return listOf(
36
36
  BBPlayerViewManager(),
37
- BBShortsViewManager()
37
+ BBShortsViewManager(),
38
+ BBCastButtonViewManager(),
39
+ BBCastMiniControlsViewManager()
38
40
  )
39
41
  }
40
42
  }
@@ -571,6 +571,12 @@ class BBPlayerView(private val reactContext: ThemedReactContext) : FrameLayout(r
571
571
  } else null
572
572
  }
573
573
 
574
+ fun setInView(inView: Boolean) {
575
+ if (::playerView.isInitialized) {
576
+ playerView.setApiProperty(com.bluebillywig.bbnativeshared.enums.ApiProperty.inView, inView)
577
+ }
578
+ }
579
+
574
580
  fun getControls(): Boolean? {
575
581
  return if (::playerView.isInitialized) {
576
582
  playerView.getApiProperty(com.bluebillywig.bbnativeshared.enums.ApiProperty.controls) as? Boolean
@@ -57,6 +57,9 @@ public abstract class NativeBBPlayerModuleSpec extends ReactContextBaseJavaModul
57
57
  public abstract void loadWithProjectJson(int viewTag, String projectJson, String initiator, boolean autoPlay, double seekTo, String contextJson);
58
58
  public abstract void loadWithJsonUrl(int viewTag, String jsonUrl, boolean autoPlay, String contextJson);
59
59
 
60
+ // Viewability control
61
+ public abstract void setInView(int viewTag, boolean inView);
62
+
60
63
  // Promise getters
61
64
  public abstract void getDuration(int viewTag, Promise promise);
62
65
  public abstract void getMuted(int viewTag, Promise promise);
@@ -67,4 +70,7 @@ public abstract class NativeBBPlayerModuleSpec extends ReactContextBaseJavaModul
67
70
  public abstract void getClipData(int viewTag, Promise promise);
68
71
  public abstract void getProjectData(int viewTag, Promise promise);
69
72
  public abstract void getPlayoutData(int viewTag, Promise promise);
73
+ public abstract void getInView(int viewTag, Promise promise);
74
+ public abstract void getAdMediaWidth(int viewTag, Promise promise);
75
+ public abstract void getAdMediaHeight(int viewTag, Promise promise);
70
76
  }
@@ -0,0 +1,30 @@
1
+ import UIKit
2
+ import GoogleCast
3
+
4
+ class BBCastButtonView: UIView {
5
+ private var castButton: GCKUICastButton?
6
+
7
+ override func didMoveToWindow() {
8
+ super.didMoveToWindow()
9
+ guard window != nil, castButton == nil else { return }
10
+ setupCastButton()
11
+ }
12
+
13
+ private func setupCastButton() {
14
+ guard GCKCastContext.isSharedInstanceInitialized() else {
15
+ NSLog("BBCastButtonView: Google Cast SDK not initialized")
16
+ return
17
+ }
18
+
19
+ let button = GCKUICastButton(frame: bounds)
20
+ button.autoresizingMask = [.flexibleWidth, .flexibleHeight]
21
+ button.tintColor = tintColor
22
+ addSubview(button)
23
+ castButton = button
24
+ }
25
+
26
+ override func tintColorDidChange() {
27
+ super.tintColorDidChange()
28
+ castButton?.tintColor = tintColor
29
+ }
30
+ }
@@ -0,0 +1,7 @@
1
+ #import <React/RCTViewManager.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(BBCastButtonViewManager, RCTViewManager)
4
+
5
+ RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor)
6
+
7
+ @end
@@ -0,0 +1,12 @@
1
+ import React
2
+
3
+ @objc(BBCastButtonViewManager)
4
+ class BBCastButtonViewManager: RCTViewManager {
5
+ override func view() -> UIView! {
6
+ return BBCastButtonView()
7
+ }
8
+
9
+ override static func requiresMainQueueSetup() -> Bool {
10
+ return true
11
+ }
12
+ }
@@ -0,0 +1,27 @@
1
+ import UIKit
2
+ import GoogleCast
3
+
4
+ class BBCastMiniControlsView: UIView {
5
+ private var miniControlsViewController: GCKUIMiniMediaControlsViewController?
6
+
7
+ override func didMoveToWindow() {
8
+ super.didMoveToWindow()
9
+ guard window != nil, miniControlsViewController == nil else { return }
10
+ setupMiniControls()
11
+ }
12
+
13
+ private func setupMiniControls() {
14
+ guard GCKCastContext.isSharedInstanceInitialized() else {
15
+ NSLog("BBCastMiniControlsView: Google Cast SDK not initialized")
16
+ return
17
+ }
18
+
19
+ let miniController = GCKCastContext.sharedInstance().createMiniMediaControlsViewController()
20
+ miniControlsViewController = miniController
21
+
22
+ let miniView = miniController.view!
23
+ miniView.frame = bounds
24
+ miniView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
25
+ addSubview(miniView)
26
+ }
27
+ }
@@ -0,0 +1,5 @@
1
+ #import <React/RCTViewManager.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(BBCastMiniControlsViewManager, RCTViewManager)
4
+
5
+ @end
@@ -0,0 +1,12 @@
1
+ import React
2
+
3
+ @objc(BBCastMiniControlsViewManager)
4
+ class BBCastMiniControlsViewManager: RCTViewManager {
5
+ override func view() -> UIView! {
6
+ return BBCastMiniControlsView()
7
+ }
8
+
9
+ override static func requiresMainQueueSetup() -> Bool {
10
+ return true
11
+ }
12
+ }
@@ -49,6 +49,10 @@ RCT_EXTERN_METHOD(getMode:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolv
49
49
  RCT_EXTERN_METHOD(getClipData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
50
50
  RCT_EXTERN_METHOD(getProjectData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
51
51
  RCT_EXTERN_METHOD(getPlayoutData:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
52
+ RCT_EXTERN_METHOD(setInView:(nonnull NSNumber *)viewTag inView:(BOOL)inView)
53
+ RCT_EXTERN_METHOD(getInView:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
54
+ RCT_EXTERN_METHOD(getAdMediaWidth:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
55
+ RCT_EXTERN_METHOD(getAdMediaHeight:(nonnull NSNumber *)viewTag resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
52
56
 
53
57
  // Modal player (module-level)
54
58
  RCT_EXTERN_METHOD(presentModalPlayer:(NSString *)jsonUrl optionsJson:(NSString *)optionsJson contextJson:(NSString *)contextJson)
@@ -299,6 +299,33 @@ class BBPlayerModule: RCTEventEmitter {
299
299
  }
300
300
  }
301
301
 
302
+ @objc func setInView(_ viewTag: NSNumber, inView: Bool) {
303
+ DispatchQueue.main.async {
304
+ self.getView(viewTag)?.setInView(inView)
305
+ }
306
+ }
307
+
308
+ @objc func getInView(_ viewTag: NSNumber, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
309
+ DispatchQueue.main.async {
310
+ let inView = self.getView(viewTag)?.inView()
311
+ resolver(inView)
312
+ }
313
+ }
314
+
315
+ @objc func getAdMediaWidth(_ viewTag: NSNumber, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
316
+ DispatchQueue.main.async {
317
+ let width = self.getView(viewTag)?.adMediaWidth()
318
+ resolver(width)
319
+ }
320
+ }
321
+
322
+ @objc func getAdMediaHeight(_ viewTag: NSNumber, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
323
+ DispatchQueue.main.async {
324
+ let height = self.getView(viewTag)?.adMediaHeight()
325
+ resolver(height)
326
+ }
327
+ }
328
+
302
329
  // MARK: - Modal Player API
303
330
 
304
331
  @objc func presentModalPlayer(_ jsonUrl: String, optionsJson: String?, contextJson: String?) {
@@ -480,6 +480,10 @@ class BBPlayerView: UIView, BBNativePlayerViewDelegate {
480
480
  return playerView?.player.inView
481
481
  }
482
482
 
483
+ func setInView(_ inView: Bool) {
484
+ playerView?.player.inView = inView
485
+ }
486
+
483
487
  func mode() -> String? {
484
488
  return playerView?.player.mode
485
489
  }
@@ -8,32 +8,32 @@
8
8
  <key>BinaryPath</key>
9
9
  <string>BBNativePlayerKit.framework/BBNativePlayerKit</string>
10
10
  <key>LibraryIdentifier</key>
11
- <string>ios-arm64_x86_64-simulator</string>
11
+ <string>ios-arm64</string>
12
12
  <key>LibraryPath</key>
13
13
  <string>BBNativePlayerKit.framework</string>
14
14
  <key>SupportedArchitectures</key>
15
15
  <array>
16
16
  <string>arm64</string>
17
- <string>x86_64</string>
18
17
  </array>
19
18
  <key>SupportedPlatform</key>
20
19
  <string>ios</string>
21
- <key>SupportedPlatformVariant</key>
22
- <string>simulator</string>
23
20
  </dict>
24
21
  <dict>
25
22
  <key>BinaryPath</key>
26
23
  <string>BBNativePlayerKit.framework/BBNativePlayerKit</string>
27
24
  <key>LibraryIdentifier</key>
28
- <string>ios-arm64</string>
25
+ <string>ios-arm64_x86_64-simulator</string>
29
26
  <key>LibraryPath</key>
30
27
  <string>BBNativePlayerKit.framework</string>
31
28
  <key>SupportedArchitectures</key>
32
29
  <array>
33
30
  <string>arm64</string>
31
+ <string>x86_64</string>
34
32
  </array>
35
33
  <key>SupportedPlatform</key>
36
34
  <string>ios</string>
35
+ <key>SupportedPlatformVariant</key>
36
+ <string>simulator</string>
37
37
  </dict>
38
38
  </array>
39
39
  <key>CFBundlePackageType</key>
@@ -1,6 +1,6 @@
1
1
  #if 0
2
2
  #elif defined(__arm64__) && __arm64__
3
- // Generated by Apple Swift version 6.2.4 effective-5.10 (swiftlang-6.2.4.1.4 clang-1700.6.4.2)
3
+ // Generated by Apple Swift version 6.1.2 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)
4
4
  #ifndef BBNATIVEPLAYERKIT_SWIFT_H
5
5
  #define BBNATIVEPLAYERKIT_SWIFT_H
6
6
  #pragma clang diagnostic push
@@ -311,13 +311,16 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
311
311
 
312
312
  @class CALayer;
313
313
  @class NSCoder;
314
+ @class UIGestureRecognizer;
315
+ @class UITouch;
314
316
  @class NSString;
315
317
  /// PlayerView used to play media from the Blue Billywig OVP
316
318
  SWIFT_CLASS("_TtC17BBNativePlayerKit18BBNativePlayerView")
317
- @interface BBNativePlayerView : UIView
319
+ @interface BBNativePlayerView : UIView <UIGestureRecognizerDelegate>
318
320
  - (void)layoutSublayersOfLayer:(CALayer * _Nonnull)layer;
319
321
  - (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
320
322
  - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
323
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer * _Nonnull)gestureRecognizer shouldReceiveTouch:(UITouch * _Nonnull)touch SWIFT_WARN_UNUSED_RESULT;
321
324
  /// :nodoc:
322
325
  - (void)observeValueForKeyPath:(NSString * _Nullable)keyPath ofObject:(id _Nullable)object change:(NSDictionary<NSKeyValueChangeKey, id> * _Nullable)change context:(void * _Nullable)context;
323
326
  /// :nodoc:
@@ -355,16 +358,14 @@ SWIFT_CLASS("_TtC17BBNativePlayerKit28BBNativePlayerViewController")
355
358
  @property (nonatomic, readonly) UIInterfaceOrientationMask supportedInterfaceOrientations;
356
359
  @end
357
360
 
358
- @interface BBNativePlayerViewController (SWIFT_EXTENSION(BBNativePlayerKit)) <BbnativesharedEventListenerInterface>
359
- - (void)onEventEventType:(BbnativesharedEventName * _Nonnull)eventType data:(NSDictionary<NSString *, id> * _Nullable)data;
360
- @end
361
-
362
361
  @interface BBNativePlayerViewController (SWIFT_EXTENSION(BBNativePlayerKit)) <GCKDiscoveryManagerListener>
363
362
  - (void)didUpdateDeviceList;
364
363
  @end
365
364
 
366
- @class UIGestureRecognizer;
367
- @class UITouch;
365
+ @interface BBNativePlayerViewController (SWIFT_EXTENSION(BBNativePlayerKit)) <BbnativesharedEventListenerInterface>
366
+ - (void)onEventEventType:(BbnativesharedEventName * _Nonnull)eventType data:(NSDictionary<NSString *, id> * _Nullable)data;
367
+ @end
368
+
368
369
  @interface BBNativePlayerViewController (SWIFT_EXTENSION(BBNativePlayerKit)) <UIGestureRecognizerDelegate>
369
370
  - (BOOL)gestureRecognizer:(UIGestureRecognizer * _Nonnull)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer * _Nonnull)otherGestureRecognizer SWIFT_WARN_UNUSED_RESULT;
370
371
  - (BOOL)gestureRecognizer:(UIGestureRecognizer * _Nonnull)gestureRecognizer shouldReceiveTouch:(UITouch * _Nonnull)touch SWIFT_WARN_UNUSED_RESULT;
@@ -649,14 +650,14 @@ SWIFT_CLASS("_TtC17BBNativePlayerKit18BBNativeShortsView")
649
650
  - (void)removeFromSuperview;
650
651
  @end
651
652
 
652
- @interface BBNativeShortsView (SWIFT_EXTENSION(BBNativePlayerKit)) <BBNativePlayerViewDelegate>
653
- - (void)bbNativePlayerViewWithPlayerView:(BBNativePlayerView * _Nonnull)playerView didSetupWithJsonUrl:(NSString * _Nullable)url;
654
- @end
655
-
656
653
  @interface BBNativeShortsView (SWIFT_EXTENSION(BBNativePlayerKit)) <BbnativesharedEventListenerInterface>
657
654
  - (void)onEventEventType:(BbnativesharedEventName * _Nonnull)eventType data:(NSDictionary<NSString *, id> * _Nullable)data;
658
655
  @end
659
656
 
657
+ @interface BBNativeShortsView (SWIFT_EXTENSION(BBNativePlayerKit)) <BBNativePlayerViewDelegate>
658
+ - (void)bbNativePlayerViewWithPlayerView:(BBNativePlayerView * _Nonnull)playerView didSetupWithJsonUrl:(NSString * _Nullable)url;
659
+ @end
660
+
660
661
  /// :nodoc:
661
662
  SWIFT_CLASS("_TtC17BBNativePlayerKit28BBNativeShortsViewController")
662
663
  @interface BBNativeShortsViewController : UIViewController
@@ -16,4 +16,4 @@ FOUNDATION_EXPORT const unsigned char BBNativePlayerKitVersionString[];
16
16
 
17
17
  // In this header, you should import all the public headers of your framework using statements like #import <BBNativePlayerKit/PublicHeader.h>
18
18
 
19
- #import "UMPBridge.h"
19
+ #import <BBNativePlayerKit/UMPBridge.h>