bitmovin-player-react-native 0.44.1-alpha.0 → 1.0.0-alpha.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.
Files changed (497) hide show
  1. package/.eslintignore +11 -0
  2. package/.eslintrc.js +7 -0
  3. package/.gitattributes +3 -0
  4. package/.prettierignore +11 -0
  5. package/.ruby-version +1 -0
  6. package/.swiftlint.yml +171 -0
  7. package/Brewfile +2 -0
  8. package/CHANGELOG.md +627 -0
  9. package/CONTRIBUTING.md +255 -0
  10. package/TODO.md +0 -0
  11. package/android/.editorconfig +8 -0
  12. package/android/build.gradle +78 -75
  13. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  14. package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  15. package/android/gradle.properties +1 -0
  16. package/android/gradlew +248 -0
  17. package/android/gradlew.bat +92 -0
  18. package/android/ktlint.gradle +31 -0
  19. package/android/src/main/java/com/bitmovin/player/reactnative/ActivityLifecycleListener.kt +51 -0
  20. package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinCastManagerModule.kt +32 -55
  21. package/android/src/main/java/com/bitmovin/player/reactnative/BufferModule.kt +33 -45
  22. package/android/src/main/java/com/bitmovin/player/reactnative/CustomMessageHandlerModule.kt +84 -0
  23. package/android/src/main/java/com/bitmovin/player/reactnative/DebugModule.kt +6 -14
  24. package/android/src/main/java/com/bitmovin/player/reactnative/DecoderConfigModule.kt +89 -44
  25. package/android/src/main/java/com/bitmovin/player/reactnative/DrmModule.kt +80 -99
  26. package/android/src/main/java/com/bitmovin/player/reactnative/EventSubscription.kt +22 -0
  27. package/android/src/main/java/com/bitmovin/player/reactnative/FullscreenHandlerModule.kt +100 -0
  28. package/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +5 -5
  29. package/android/src/main/java/com/bitmovin/player/reactnative/NetworkModule.kt +98 -56
  30. package/android/src/main/java/com/bitmovin/player/reactnative/OfflineModule.kt +132 -186
  31. package/android/src/main/java/com/bitmovin/player/reactnative/PlayerAnalyticsModule.kt +37 -36
  32. package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +252 -528
  33. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerPackage.kt +11 -0
  34. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerView.kt +558 -213
  35. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewManager.kt +99 -286
  36. package/android/src/main/java/com/bitmovin/player/reactnative/ResultWaiter.kt +58 -0
  37. package/android/src/main/java/com/bitmovin/player/reactnative/SourceModule.kt +77 -151
  38. package/android/src/main/java/com/bitmovin/player/reactnative/Types.kt +44 -0
  39. package/android/src/main/java/com/bitmovin/player/reactnative/UuidModule.kt +12 -15
  40. package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +296 -456
  41. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ListExtension.kt +89 -0
  42. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/MapExtension.kt +95 -0
  43. package/android/src/main/java/com/bitmovin/player/reactnative/offline/OfflineContentManagerBridge.kt +20 -52
  44. package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerBridge.kt +10 -20
  45. package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerBridge.kt +4 -9
  46. package/app.plugin.js +21 -0
  47. package/build/BitmovinPlayerReactNative.types.d.ts +18 -0
  48. package/build/BitmovinPlayerReactNative.types.d.ts.map +1 -0
  49. package/build/BitmovinPlayerReactNative.types.js +2 -0
  50. package/build/BitmovinPlayerReactNative.types.js.map +1 -0
  51. package/build/adaptationConfig.d.ts +18 -0
  52. package/build/adaptationConfig.d.ts.map +1 -0
  53. package/build/adaptationConfig.js +2 -0
  54. package/build/adaptationConfig.js.map +1 -0
  55. package/build/advertising.d.ts +175 -0
  56. package/build/advertising.d.ts.map +1 -0
  57. package/build/advertising.js +37 -0
  58. package/build/advertising.js.map +1 -0
  59. package/build/analytics/config.d.ts +194 -0
  60. package/build/analytics/config.d.ts.map +1 -0
  61. package/build/analytics/config.js +2 -0
  62. package/build/analytics/config.js.map +1 -0
  63. package/build/analytics/index.d.ts +3 -0
  64. package/build/analytics/index.d.ts.map +1 -0
  65. package/build/analytics/index.js +3 -0
  66. package/build/analytics/index.js.map +1 -0
  67. package/build/analytics/player.d.ts +24 -0
  68. package/build/analytics/player.d.ts.map +1 -0
  69. package/build/analytics/player.js +30 -0
  70. package/build/analytics/player.js.map +1 -0
  71. package/build/analytics/playerAnalyticsModule.d.ts +13 -0
  72. package/build/analytics/playerAnalyticsModule.d.ts.map +1 -0
  73. package/build/analytics/playerAnalyticsModule.js +3 -0
  74. package/build/analytics/playerAnalyticsModule.js.map +1 -0
  75. package/build/audioSession.d.ts +33 -0
  76. package/build/audioSession.d.ts.map +1 -0
  77. package/build/audioSession.js +21 -0
  78. package/build/audioSession.js.map +1 -0
  79. package/build/audioTrack.d.ts +39 -0
  80. package/build/audioTrack.d.ts.map +1 -0
  81. package/build/audioTrack.js +2 -0
  82. package/build/audioTrack.js.map +1 -0
  83. package/build/bitmovinCastManager.d.ts +58 -0
  84. package/build/bitmovinCastManager.d.ts.map +1 -0
  85. package/build/bitmovinCastManager.js +64 -0
  86. package/build/bitmovinCastManager.js.map +1 -0
  87. package/build/bufferApi.d.ts +85 -0
  88. package/build/bufferApi.d.ts.map +1 -0
  89. package/build/bufferApi.js +60 -0
  90. package/build/bufferApi.js.map +1 -0
  91. package/build/bufferConfig.d.ts +42 -0
  92. package/build/bufferConfig.d.ts.map +1 -0
  93. package/build/bufferConfig.js +2 -0
  94. package/build/bufferConfig.js.map +1 -0
  95. package/build/components/PlayerView/events.d.ts +310 -0
  96. package/build/components/PlayerView/events.d.ts.map +1 -0
  97. package/build/components/PlayerView/events.js +2 -0
  98. package/build/components/PlayerView/events.js.map +1 -0
  99. package/build/components/PlayerView/index.d.ts +10 -0
  100. package/build/components/PlayerView/index.d.ts.map +1 -0
  101. package/build/components/PlayerView/index.js +72 -0
  102. package/build/components/PlayerView/index.js.map +1 -0
  103. package/build/components/PlayerView/native.d.ts +30 -0
  104. package/build/components/PlayerView/native.d.ts.map +1 -0
  105. package/build/components/PlayerView/native.js +6 -0
  106. package/build/components/PlayerView/native.js.map +1 -0
  107. package/build/components/PlayerView/nativeEvents.d.ts +437 -0
  108. package/build/components/PlayerView/nativeEvents.d.ts.map +1 -0
  109. package/build/components/PlayerView/nativeEvents.js +2 -0
  110. package/build/components/PlayerView/nativeEvents.js.map +1 -0
  111. package/build/components/PlayerView/pictureInPictureConfig.d.ts +22 -0
  112. package/build/components/PlayerView/pictureInPictureConfig.d.ts.map +1 -0
  113. package/build/components/PlayerView/pictureInPictureConfig.js +2 -0
  114. package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -0
  115. package/build/components/PlayerView/playerViewConfig.d.ts +111 -0
  116. package/build/components/PlayerView/playerViewConfig.d.ts.map +1 -0
  117. package/build/components/PlayerView/playerViewConfig.js +51 -0
  118. package/build/components/PlayerView/playerViewConfig.js.map +1 -0
  119. package/build/components/PlayerView/properties.d.ts +61 -0
  120. package/build/components/PlayerView/properties.d.ts.map +1 -0
  121. package/build/components/PlayerView/properties.js +2 -0
  122. package/build/components/PlayerView/properties.js.map +1 -0
  123. package/build/components/index.d.ts +5 -0
  124. package/build/components/index.d.ts.map +1 -0
  125. package/build/components/index.js +5 -0
  126. package/build/components/index.js.map +1 -0
  127. package/build/debug.d.ts +46 -0
  128. package/build/debug.d.ts.map +1 -0
  129. package/build/debug.js +52 -0
  130. package/build/debug.js.map +1 -0
  131. package/build/decoder/decoderConfig.d.ts +96 -0
  132. package/build/decoder/decoderConfig.d.ts.map +1 -0
  133. package/build/decoder/decoderConfig.js +6 -0
  134. package/build/decoder/decoderConfig.js.map +1 -0
  135. package/build/decoder/decoderConfigModule.d.ts +14 -0
  136. package/build/decoder/decoderConfigModule.d.ts.map +1 -0
  137. package/build/decoder/decoderConfigModule.js +31 -0
  138. package/build/decoder/decoderConfigModule.js.map +1 -0
  139. package/build/decoder/index.d.ts +26 -0
  140. package/build/decoder/index.d.ts.map +1 -0
  141. package/build/decoder/index.js +50 -0
  142. package/build/decoder/index.js.map +1 -0
  143. package/build/drm/drmModule.d.ts +55 -0
  144. package/build/drm/drmModule.d.ts.map +1 -0
  145. package/build/drm/drmModule.js +3 -0
  146. package/build/drm/drmModule.js.map +1 -0
  147. package/build/drm/fairplayConfig.d.ts +91 -0
  148. package/build/drm/fairplayConfig.d.ts.map +1 -0
  149. package/build/drm/fairplayConfig.js +2 -0
  150. package/build/drm/fairplayConfig.js.map +1 -0
  151. package/build/drm/index.d.ts +112 -0
  152. package/build/drm/index.d.ts.map +1 -0
  153. package/build/drm/index.js +191 -0
  154. package/build/drm/index.js.map +1 -0
  155. package/build/drm/widevineConfig.d.ts +58 -0
  156. package/build/drm/widevineConfig.d.ts.map +1 -0
  157. package/build/drm/widevineConfig.js +2 -0
  158. package/build/drm/widevineConfig.js.map +1 -0
  159. package/build/events.d.ts +692 -0
  160. package/build/events.d.ts.map +1 -0
  161. package/build/events.js +2 -0
  162. package/build/events.js.map +1 -0
  163. package/build/hooks/index.d.ts +2 -0
  164. package/build/hooks/index.d.ts.map +1 -0
  165. package/build/hooks/index.js +2 -0
  166. package/build/hooks/index.js.map +1 -0
  167. package/build/hooks/usePlayer.d.ts +8 -0
  168. package/build/hooks/usePlayer.d.ts.map +1 -0
  169. package/build/hooks/usePlayer.js +10 -0
  170. package/build/hooks/usePlayer.js.map +1 -0
  171. package/build/hooks/useProxy.d.ts +18 -0
  172. package/build/hooks/useProxy.d.ts.map +1 -0
  173. package/build/hooks/useProxy.js +16 -0
  174. package/build/hooks/useProxy.js.map +1 -0
  175. package/build/index.d.ts +32 -0
  176. package/build/index.d.ts.map +1 -0
  177. package/build/index.js +32 -0
  178. package/build/index.js.map +1 -0
  179. package/build/liveConfig.d.ts +13 -0
  180. package/build/liveConfig.d.ts.map +1 -0
  181. package/build/liveConfig.js +2 -0
  182. package/build/liveConfig.js.map +1 -0
  183. package/build/media.d.ts +85 -0
  184. package/build/media.d.ts.map +1 -0
  185. package/build/media.js +2 -0
  186. package/build/media.js.map +1 -0
  187. package/build/mediaControlConfig.d.ts +62 -0
  188. package/build/mediaControlConfig.d.ts.map +1 -0
  189. package/build/mediaControlConfig.js +2 -0
  190. package/build/mediaControlConfig.js.map +1 -0
  191. package/build/mediaTrackRole.d.ts +28 -0
  192. package/build/mediaTrackRole.d.ts.map +1 -0
  193. package/build/mediaTrackRole.js +2 -0
  194. package/build/mediaTrackRole.js.map +1 -0
  195. package/build/modules/AudioSessionModule.d.ts +8 -0
  196. package/build/modules/AudioSessionModule.d.ts.map +1 -0
  197. package/build/modules/AudioSessionModule.js +7 -0
  198. package/build/modules/AudioSessionModule.js.map +1 -0
  199. package/build/modules/BitmovinCastManagerModule.d.ts +11 -0
  200. package/build/modules/BitmovinCastManagerModule.d.ts.map +1 -0
  201. package/build/modules/BitmovinCastManagerModule.js +3 -0
  202. package/build/modules/BitmovinCastManagerModule.js.map +1 -0
  203. package/build/modules/BufferModule.d.ts +16 -0
  204. package/build/modules/BufferModule.d.ts.map +1 -0
  205. package/build/modules/BufferModule.js +3 -0
  206. package/build/modules/BufferModule.js.map +1 -0
  207. package/build/modules/DebugModule.d.ts +8 -0
  208. package/build/modules/DebugModule.d.ts.map +1 -0
  209. package/build/modules/DebugModule.js +3 -0
  210. package/build/modules/DebugModule.js.map +1 -0
  211. package/build/modules/PlayerModule.d.ts +188 -0
  212. package/build/modules/PlayerModule.d.ts.map +1 -0
  213. package/build/modules/PlayerModule.js +3 -0
  214. package/build/modules/PlayerModule.js.map +1 -0
  215. package/build/modules/SourceModule.d.ts +51 -0
  216. package/build/modules/SourceModule.d.ts.map +1 -0
  217. package/build/modules/SourceModule.js +3 -0
  218. package/build/modules/SourceModule.js.map +1 -0
  219. package/build/modules/UuidModule.d.ts +8 -0
  220. package/build/modules/UuidModule.d.ts.map +1 -0
  221. package/build/modules/UuidModule.js +3 -0
  222. package/build/modules/UuidModule.js.map +1 -0
  223. package/build/nativeInstance.d.ts +49 -0
  224. package/build/nativeInstance.d.ts.map +1 -0
  225. package/build/nativeInstance.js +20 -0
  226. package/build/nativeInstance.js.map +1 -0
  227. package/build/network/index.d.ts +50 -0
  228. package/build/network/index.d.ts.map +1 -0
  229. package/build/network/index.js +102 -0
  230. package/build/network/index.js.map +1 -0
  231. package/build/network/networkConfig.d.ts +151 -0
  232. package/build/network/networkConfig.d.ts.map +1 -0
  233. package/build/network/networkConfig.js +21 -0
  234. package/build/network/networkConfig.js.map +1 -0
  235. package/build/network/networkModule.d.ts +29 -0
  236. package/build/network/networkModule.d.ts.map +1 -0
  237. package/build/network/networkModule.js +3 -0
  238. package/build/network/networkModule.js.map +1 -0
  239. package/build/offline/index.d.ts +8 -0
  240. package/build/offline/index.d.ts.map +1 -0
  241. package/build/offline/index.js +8 -0
  242. package/build/offline/index.js.map +1 -0
  243. package/build/offline/offlineContentConfig.d.ts +18 -0
  244. package/build/offline/offlineContentConfig.d.ts.map +1 -0
  245. package/build/offline/offlineContentConfig.js +2 -0
  246. package/build/offline/offlineContentConfig.js.map +1 -0
  247. package/build/offline/offlineContentManager.d.ts +90 -0
  248. package/build/offline/offlineContentManager.d.ts.map +1 -0
  249. package/build/offline/offlineContentManager.js +177 -0
  250. package/build/offline/offlineContentManager.js.map +1 -0
  251. package/build/offline/offlineContentManagerListener.d.ts +174 -0
  252. package/build/offline/offlineContentManagerListener.d.ts.map +1 -0
  253. package/build/offline/offlineContentManagerListener.js +17 -0
  254. package/build/offline/offlineContentManagerListener.js.map +1 -0
  255. package/build/offline/offlineContentOptions.d.ts +29 -0
  256. package/build/offline/offlineContentOptions.d.ts.map +1 -0
  257. package/build/offline/offlineContentOptions.js +2 -0
  258. package/build/offline/offlineContentOptions.js.map +1 -0
  259. package/build/offline/offlineDownloadRequest.d.ts +19 -0
  260. package/build/offline/offlineDownloadRequest.d.ts.map +1 -0
  261. package/build/offline/offlineDownloadRequest.js +2 -0
  262. package/build/offline/offlineDownloadRequest.js.map +1 -0
  263. package/build/offline/offlineModule.d.ts +32 -0
  264. package/build/offline/offlineModule.d.ts.map +1 -0
  265. package/build/offline/offlineModule.js +3 -0
  266. package/build/offline/offlineModule.js.map +1 -0
  267. package/build/offline/offlineSourceOptions.d.ts +12 -0
  268. package/build/offline/offlineSourceOptions.d.ts.map +1 -0
  269. package/build/offline/offlineSourceOptions.js +2 -0
  270. package/build/offline/offlineSourceOptions.js.map +1 -0
  271. package/build/offline/offlineState.d.ts +23 -0
  272. package/build/offline/offlineState.d.ts.map +1 -0
  273. package/build/offline/offlineState.js +24 -0
  274. package/build/offline/offlineState.js.map +1 -0
  275. package/build/playbackConfig.d.ts +88 -0
  276. package/build/playbackConfig.d.ts.map +1 -0
  277. package/build/playbackConfig.js +2 -0
  278. package/build/playbackConfig.js.map +1 -0
  279. package/build/player.d.ts +308 -0
  280. package/build/player.d.ts.map +1 -0
  281. package/build/player.js +445 -0
  282. package/build/player.js.map +1 -0
  283. package/build/playerConfig.d.ts +83 -0
  284. package/build/playerConfig.d.ts.map +1 -0
  285. package/build/playerConfig.js +2 -0
  286. package/build/playerConfig.js.map +1 -0
  287. package/build/remoteControlConfig.d.ts +38 -0
  288. package/build/remoteControlConfig.d.ts.map +1 -0
  289. package/build/remoteControlConfig.js +2 -0
  290. package/build/remoteControlConfig.js.map +1 -0
  291. package/build/source.d.ts +216 -0
  292. package/build/source.d.ts.map +1 -0
  293. package/build/source.js +167 -0
  294. package/build/source.js.map +1 -0
  295. package/build/styleConfig.d.ts +120 -0
  296. package/build/styleConfig.d.ts.map +1 -0
  297. package/build/styleConfig.js +38 -0
  298. package/build/styleConfig.js.map +1 -0
  299. package/build/subtitleFormat.d.ts +27 -0
  300. package/build/subtitleFormat.d.ts.map +1 -0
  301. package/build/subtitleFormat.js +28 -0
  302. package/build/subtitleFormat.js.map +1 -0
  303. package/build/subtitleTrack.d.ts +55 -0
  304. package/build/subtitleTrack.d.ts.map +1 -0
  305. package/build/subtitleTrack.js +2 -0
  306. package/build/subtitleTrack.js.map +1 -0
  307. package/build/thumbnail.d.ts +38 -0
  308. package/build/thumbnail.d.ts.map +1 -0
  309. package/build/thumbnail.js +2 -0
  310. package/build/thumbnail.js.map +1 -0
  311. package/build/tweaksConfig.d.ts +197 -0
  312. package/build/tweaksConfig.d.ts.map +1 -0
  313. package/build/tweaksConfig.js +25 -0
  314. package/build/tweaksConfig.js.map +1 -0
  315. package/build/ui/customMessageHandlerModule.d.ts +27 -0
  316. package/build/ui/customMessageHandlerModule.d.ts.map +1 -0
  317. package/build/ui/customMessageHandlerModule.js +3 -0
  318. package/build/ui/customMessageHandlerModule.js.map +1 -0
  319. package/build/ui/custommessagehandler.d.ts +56 -0
  320. package/build/ui/custommessagehandler.d.ts.map +1 -0
  321. package/build/ui/custommessagehandler.js +54 -0
  322. package/build/ui/custommessagehandler.js.map +1 -0
  323. package/build/ui/custommessagehandlerbridge.d.ts +33 -0
  324. package/build/ui/custommessagehandlerbridge.d.ts.map +1 -0
  325. package/build/ui/custommessagehandlerbridge.js +72 -0
  326. package/build/ui/custommessagehandlerbridge.js.map +1 -0
  327. package/build/ui/custommessagesender.d.ts +5 -0
  328. package/build/ui/custommessagesender.d.ts.map +1 -0
  329. package/build/ui/custommessagesender.js +2 -0
  330. package/build/ui/custommessagesender.js.map +1 -0
  331. package/build/ui/fullscreenHandlerModule.d.ts +20 -0
  332. package/build/ui/fullscreenHandlerModule.d.ts.map +1 -0
  333. package/build/ui/fullscreenHandlerModule.js +3 -0
  334. package/build/ui/fullscreenHandlerModule.js.map +1 -0
  335. package/build/ui/fullscreenhandler.d.ts +18 -0
  336. package/build/ui/fullscreenhandler.d.ts.map +1 -0
  337. package/build/ui/fullscreenhandler.js +2 -0
  338. package/build/ui/fullscreenhandler.js.map +1 -0
  339. package/build/ui/fullscreenhandlerbridge.d.ts +26 -0
  340. package/build/ui/fullscreenhandlerbridge.d.ts.map +1 -0
  341. package/build/ui/fullscreenhandlerbridge.js +67 -0
  342. package/build/ui/fullscreenhandlerbridge.js.map +1 -0
  343. package/build/ui/index.d.ts +3 -0
  344. package/build/ui/index.d.ts.map +1 -0
  345. package/build/ui/index.js +3 -0
  346. package/build/ui/index.js.map +1 -0
  347. package/expo-module.config.json +40 -0
  348. package/ios/AppLifecycleDelegate.swift +25 -0
  349. package/ios/AudioSessionModule.swift +14 -40
  350. package/ios/BitmovinCastManagerModule.swift +30 -69
  351. package/ios/BufferModule.swift +26 -62
  352. package/ios/CustomMessageHandlerBridge.swift +11 -18
  353. package/ios/CustomMessageHandlerModule.swift +61 -63
  354. package/ios/DebugModule.swift +6 -27
  355. package/ios/DrmModule.swift +105 -379
  356. package/ios/Event+JSON.swift +1 -0
  357. package/ios/FullscreenHandlerBridge.swift +12 -5
  358. package/ios/FullscreenHandlerModule.swift +73 -57
  359. package/ios/LockedBox.swift +21 -0
  360. package/ios/ModuleRegistry+Generics.swift +11 -0
  361. package/ios/NetworkModule.swift +78 -82
  362. package/ios/OfflineContentManagerBridge.swift +11 -38
  363. package/ios/OfflineModule.swift +136 -454
  364. package/ios/PlayerAnalyticsModule.swift +24 -52
  365. package/ios/PlayerModule.swift +192 -770
  366. package/ios/RCTConvert+BitmovinPlayer.swift +38 -312
  367. package/ios/RNBitmovinPlayer.h +1 -8
  368. package/ios/RNBitmovinPlayer.podspec +47 -0
  369. package/ios/RNPlayerView.swift +600 -77
  370. package/ios/RNPlayerViewManager.swift +96 -210
  371. package/ios/Registry.swift +2 -2
  372. package/ios/ResultWaiter.swift +66 -0
  373. package/ios/SourceModule.swift +104 -223
  374. package/ios/UuidModule.swift +9 -18
  375. package/package.json +67 -71
  376. package/plugin/build/FeatureFlags.d.ts +24 -0
  377. package/plugin/build/FeatureFlags.js +2 -0
  378. package/plugin/build/index.d.ts +7 -0
  379. package/plugin/build/index.js +10 -0
  380. package/plugin/build/withAppGradleDependencies.d.ts +7 -0
  381. package/plugin/build/withAppGradleDependencies.js +49 -0
  382. package/plugin/build/withBitmovinAndroidConfig.d.ts +7 -0
  383. package/plugin/build/withBitmovinAndroidConfig.js +159 -0
  384. package/plugin/build/withBitmovinConfig.d.ts +7 -0
  385. package/plugin/build/withBitmovinConfig.js +21 -0
  386. package/plugin/build/withBitmovinIosConfig.d.ts +7 -0
  387. package/plugin/build/withBitmovinIosConfig.js +53 -0
  388. package/plugin/src/FeatureFlags.ts +21 -0
  389. package/plugin/src/index.ts +9 -0
  390. package/plugin/src/withAppGradleDependencies.ts +80 -0
  391. package/plugin/src/withBitmovinAndroidConfig.ts +224 -0
  392. package/plugin/src/withBitmovinConfig.ts +24 -0
  393. package/plugin/src/withBitmovinIosConfig.ts +71 -0
  394. package/plugin/tsconfig.json +9 -0
  395. package/plugin/tsconfig.tsbuildinfo +1 -0
  396. package/prettier.config.js +7 -0
  397. package/scripts/format-android.sh +2 -0
  398. package/scripts/format-swift.sh +3 -0
  399. package/scripts/lint-android.sh +2 -0
  400. package/scripts/lint-swift.sh +3 -0
  401. package/scripts/pre-commit.sh +14 -0
  402. package/scripts/setup-hooks.sh +58 -0
  403. package/src/BitmovinPlayerReactNative.types.ts +19 -0
  404. package/src/adaptationConfig.ts +1 -1
  405. package/src/advertising.ts +1 -1
  406. package/src/analytics/config.ts +4 -4
  407. package/src/analytics/player.ts +4 -6
  408. package/src/analytics/playerAnalyticsModule.ts +19 -0
  409. package/src/audioSession.ts +4 -6
  410. package/src/audioTrack.ts +1 -1
  411. package/src/bitmovinCastManager.ts +14 -10
  412. package/src/bufferApi.ts +1 -3
  413. package/src/bufferConfig.ts +2 -2
  414. package/src/components/PlayerView/events.ts +92 -94
  415. package/src/components/PlayerView/index.tsx +109 -159
  416. package/src/components/PlayerView/native.ts +24 -11
  417. package/src/components/PlayerView/nativeEvents.ts +113 -94
  418. package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
  419. package/src/components/PlayerView/playerViewConfig.ts +4 -8
  420. package/src/components/PlayerView/properties.ts +23 -22
  421. package/src/debug.ts +1 -3
  422. package/src/decoder/decoderConfig.ts +3 -3
  423. package/src/decoder/decoderConfigModule.ts +62 -0
  424. package/src/decoder/index.ts +32 -16
  425. package/src/drm/drmModule.ts +84 -0
  426. package/src/drm/fairplayConfig.ts +1 -1
  427. package/src/drm/index.ts +130 -40
  428. package/src/drm/widevineConfig.ts +5 -5
  429. package/src/events.ts +47 -41
  430. package/src/hooks/useProxy.ts +13 -20
  431. package/src/mediaControlConfig.ts +1 -1
  432. package/src/modules/AudioSessionModule.ts +13 -0
  433. package/src/modules/BitmovinCastManagerModule.ts +14 -0
  434. package/src/modules/BufferModule.ts +18 -0
  435. package/src/modules/DebugModule.ts +9 -0
  436. package/src/modules/PlayerModule.ts +251 -0
  437. package/src/modules/SourceModule.ts +74 -0
  438. package/src/modules/UuidModule.ts +9 -0
  439. package/src/nativeInstance.ts +3 -3
  440. package/src/network/index.ts +42 -15
  441. package/src/network/networkConfig.ts +3 -3
  442. package/src/network/networkModule.ts +51 -0
  443. package/src/offline/offlineContentConfig.ts +1 -1
  444. package/src/offline/offlineContentManager.ts +15 -50
  445. package/src/offline/offlineContentManagerListener.ts +20 -23
  446. package/src/offline/offlineContentOptions.ts +2 -2
  447. package/src/offline/offlineDownloadRequest.ts +1 -1
  448. package/src/offline/offlineModule.ts +46 -0
  449. package/src/offline/offlineSourceOptions.ts +2 -2
  450. package/src/offline/offlineState.ts +1 -1
  451. package/src/playbackConfig.ts +5 -6
  452. package/src/player.ts +53 -48
  453. package/src/source.ts +15 -14
  454. package/src/styleConfig.ts +5 -5
  455. package/src/subtitleFormat.ts +5 -5
  456. package/src/subtitleTrack.ts +1 -1
  457. package/src/tweaksConfig.ts +16 -16
  458. package/src/ui/customMessageHandlerModule.ts +46 -0
  459. package/src/ui/custommessagehandlerbridge.ts +45 -18
  460. package/src/ui/fullscreenHandlerModule.ts +35 -0
  461. package/src/ui/fullscreenhandlerbridge.ts +35 -15
  462. package/tsconfig.json +9 -0
  463. package/typedoc.json +23 -0
  464. package/RNBitmovinPlayer.podspec +0 -26
  465. package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinBaseModule.kt +0 -114
  466. package/android/src/main/java/com/bitmovin/player/reactnative/EventRelay.kt +0 -47
  467. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewPackage.kt +0 -48
  468. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReactContextExtension.kt +0 -24
  469. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableArray.kt +0 -20
  470. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMap.kt +0 -15
  471. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMapExtension.kt +0 -57
  472. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/WritableMap.kt +0 -27
  473. package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerModule.kt +0 -86
  474. package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerModule.kt +0 -78
  475. package/ios/AudioSessionModule.m +0 -10
  476. package/ios/BitmovinCastManagerModule.m +0 -14
  477. package/ios/BufferModule.m +0 -8
  478. package/ios/CustomMessageHandlerModule.m +0 -10
  479. package/ios/DebugModule.m +0 -7
  480. package/ios/DrmModule.m +0 -16
  481. package/ios/FullscreenHandlerModule.m +0 -10
  482. package/ios/NetworkModule.m +0 -10
  483. package/ios/OfflineModule.m +0 -19
  484. package/ios/PlayerAnalyticsModule.m +0 -8
  485. package/ios/PlayerModule.m +0 -130
  486. package/ios/PreprocessHttpRequestDelegateBridge.swift +0 -30
  487. package/ios/RCTBridge+Generics.swift +0 -6
  488. package/ios/RNBitmovinPlayer.xcodeproj/project.pbxproj +0 -303
  489. package/ios/RNPlayerView+PlayerListener.swift +0 -229
  490. package/ios/RNPlayerView+UserInterfaceListener.swift +0 -35
  491. package/ios/RNPlayerViewManager.m +0 -79
  492. package/ios/SourceModule.m +0 -42
  493. package/ios/UuidModule.m +0 -9
  494. package/lib/index.d.mts +0 -4303
  495. package/lib/index.d.ts +0 -4303
  496. package/lib/index.js +0 -1895
  497. package/lib/index.mjs +0 -1836
@@ -1,216 +1,102 @@
1
- import BitmovinPlayer
2
- import Foundation
3
-
4
- @objc(RNPlayerViewManager)
5
- public class RNPlayerViewManager: RCTViewManager {
6
- /// Initialize module on main thread.
7
- override public static func requiresMainQueueSetup() -> Bool {
8
- true
9
- }
10
-
11
- /// `UIView` factory function. It gets called for each `<NativePlayerView />` component
12
- /// from React.
13
- override public func view() -> UIView! { // swiftlint:disable:this implicitly_unwrapped_optional
14
- RNPlayerView()
15
- }
16
-
17
- private var customMessageHandlerBridgeId: NativeId?
18
-
19
- /**
20
- Sets the `Player` instance for the view with `viewId` inside RN's `UIManager` registry.
21
- - Parameter viewId: `RNPlayerView` id inside `UIManager`'s registry.
22
- - Parameter playerId: `Player` instance id inside `PlayerModule`'s registry.
23
- */
24
- @objc
25
- func attachPlayer(_ viewId: NSNumber, playerId: NativeId, playerConfig: NSDictionary?) {
26
- bridge.uiManager.addUIBlock { [weak self] _, views in
27
- guard
28
- let self,
29
- let view = views?[viewId] as? RNPlayerView,
30
- let player = self.getPlayerModule()?.retrieve(playerId)
31
- else {
32
- return
33
- }
34
- let playerViewConfig = RCTConvert.rnPlayerViewConfig(view.config)
35
-
36
- if let userInterfaceConfig = maybeCreateUserInterfaceConfig(
37
- styleConfig: player.config.styleConfig,
38
- playerViewConfig: playerViewConfig
39
- ) {
40
- player.config.styleConfig.userInterfaceConfig = userInterfaceConfig
41
- }
42
-
43
- let previousPictureInPictureAvailableValue: Bool
44
- if let playerView = view.playerView {
45
- playerView.player = player
46
- previousPictureInPictureAvailableValue = playerView.isPictureInPictureAvailable
47
- } else {
48
- view.playerView = PlayerView(
49
- player: player,
50
- frame: view.bounds,
51
- playerViewConfig: playerViewConfig?.playerViewConfig ?? PlayerViewConfig()
1
+ import ExpoModulesCore
2
+
3
+ public class RNPlayerViewManager: Module {
4
+ // swiftlint:disable:next function_body_length
5
+ public func definition() -> ModuleDefinition {
6
+ Name("RNPlayerViewManager")
7
+
8
+ View(RNPlayerView.self) {
9
+ Prop("config") { (view: RNPlayerView, playerInfo: [String: Any]?) in
10
+ let playerId = playerInfo?["playerId"] as? NativeId
11
+ let playerViewConfigWrapper = RCTConvert
12
+ .rnPlayerViewConfig(playerInfo?["playerViewConfig"] as? [String: Any])
13
+ let customMessageHandlerBridgeId = playerInfo?["customMessageHandlerBridgeId"] as? NativeId
14
+ view.attachPlayer(
15
+ playerId: playerId,
16
+ playerViewConfigWrapper: playerViewConfigWrapper,
17
+ customMessageHandlerBridgeId: customMessageHandlerBridgeId
52
18
  )
53
- previousPictureInPictureAvailableValue = false
54
19
  }
55
- player.add(listener: view)
56
- view.playerView?.add(listener: view)
57
-
58
- self.maybeEmitPictureInPictureAvailabilityEvent(
59
- for: view,
60
- previousState: previousPictureInPictureAvailableValue
20
+ Prop("scalingMode") { (view: RNPlayerView, scalingMode: String?) in
21
+ view.setScalingMode(scalingMode: scalingMode)
22
+ }
23
+ Prop("isFullscreenRequested") { (view: RNPlayerView, isFullscreenRequested: Bool) in
24
+ view.setFullscreenRequested(isFullscreen: isFullscreenRequested)
25
+ }
26
+ Prop("isPictureInPictureRequested") { (view: RNPlayerView, isPictureInPictureRequested: Bool) in
27
+ view.setPictureInPicture(enterPictureInPicture: isPictureInPictureRequested)
28
+ }
29
+ Prop("fullscreenBridgeId") { (view: RNPlayerView, fullscreenBridgeId: String) in
30
+ view.attachFullscreenBridge(fullscreenBridgeId: fullscreenBridgeId)
31
+ }
32
+
33
+ Events(
34
+ "onBmpEvent",
35
+ "onBmpPlayerActive",
36
+ "onBmpPlayerError",
37
+ "onBmpPlayerWarning",
38
+ "onBmpDestroy",
39
+ "onBmpMuted",
40
+ "onBmpUnmuted",
41
+ "onBmpReady",
42
+ "onBmpPaused",
43
+ "onBmpPlay",
44
+ "onBmpPlaying",
45
+ "onBmpPlaybackFinished",
46
+ "onBmpSeek",
47
+ "onBmpSeeked",
48
+ "onBmpTimeShift",
49
+ "onBmpTimeShifted",
50
+ "onBmpStallStarted",
51
+ "onBmpStallEnded",
52
+ "onBmpTimeChanged",
53
+ "onBmpSourceLoad",
54
+ "onBmpSourceLoaded",
55
+ "onBmpSourceUnloaded",
56
+ "onBmpSourceError",
57
+ "onBmpSourceWarning",
58
+ "onBmpAudioAdded",
59
+ "onBmpAudioRemoved",
60
+ "onBmpAudioChanged",
61
+ "onBmpSubtitleAdded",
62
+ "onBmpSubtitleRemoved",
63
+ "onBmpSubtitleChanged",
64
+ "onBmpDownloadFinished",
65
+ "onBmpPictureInPictureEnter",
66
+ "onBmpPictureInPictureEntered",
67
+ "onBmpPictureInPictureExit",
68
+ "onBmpPictureInPictureExited",
69
+ "onBmpAdBreakFinished",
70
+ "onBmpAdBreakStarted",
71
+ "onBmpAdClicked",
72
+ "onBmpAdError",
73
+ "onBmpAdFinished",
74
+ "onBmpAdManifestLoad",
75
+ "onBmpAdManifestLoaded",
76
+ "onBmpAdQuartile",
77
+ "onBmpAdScheduled",
78
+ "onBmpAdSkipped",
79
+ "onBmpAdStarted",
80
+ "onBmpVideoDownloadQualityChanged",
81
+ "onBmpVideoPlaybackQualityChanged",
82
+ "onBmpFullscreenEnabled",
83
+ "onBmpFullscreenDisabled",
84
+ "onBmpFullscreenEnter",
85
+ "onBmpFullscreenExit",
86
+ "onBmpCastAvailable",
87
+ "onBmpCastPaused",
88
+ "onBmpCastPlaybackFinished",
89
+ "onBmpCastPlaying",
90
+ "onBmpCastStarted",
91
+ "onBmpCastStart",
92
+ "onBmpCastStopped",
93
+ "onBmpCastTimeUpdated",
94
+ "onBmpCastWaitingForDevice",
95
+ "onBmpPictureInPictureAvailabilityChanged",
96
+ "onBmpPlaybackSpeedChanged",
97
+ "onBmpCueEnter",
98
+ "onBmpCueExit"
61
99
  )
62
100
  }
63
101
  }
64
-
65
- private func maybeCreateUserInterfaceConfig(
66
- styleConfig: StyleConfig,
67
- playerViewConfig: RNPlayerViewConfig?
68
- ) -> UserInterfaceConfig? {
69
- #if os(iOS)
70
- if styleConfig.userInterfaceType == .bitmovin {
71
- let bitmovinUserInterfaceConfig = styleConfig
72
- .userInterfaceConfig as? BitmovinUserInterfaceConfig ?? BitmovinUserInterfaceConfig()
73
-
74
- if let uiConfig = playerViewConfig?.uiConfig {
75
- bitmovinUserInterfaceConfig
76
- .playbackSpeedSelectionEnabled = uiConfig.playbackSpeedSelectionEnabled
77
- bitmovinUserInterfaceConfig.uiManagerFactoryFunction = uiConfig.uiManagerFactoryFunction
78
- }
79
- if let hideFirstFrame = playerViewConfig?.hideFirstFrame {
80
- bitmovinUserInterfaceConfig.hideFirstFrame = hideFirstFrame
81
- }
82
-
83
- if let customMessageHandlerBridgeId = self.customMessageHandlerBridgeId,
84
- let customMessageHandlerBridge = self.bridge[CustomMessageHandlerModule.self]?
85
- .retrieve(customMessageHandlerBridgeId) {
86
- bitmovinUserInterfaceConfig.customMessageHandler = customMessageHandlerBridge.customMessageHandler
87
- }
88
-
89
- return bitmovinUserInterfaceConfig
90
- }
91
- #endif
92
- if styleConfig.userInterfaceType == .system {
93
- let systemUserInterfaceConfig = styleConfig
94
- .userInterfaceConfig as? SystemUserInterfaceConfig ?? SystemUserInterfaceConfig()
95
-
96
- if let hideFirstFrame = playerViewConfig?.hideFirstFrame {
97
- systemUserInterfaceConfig.hideFirstFrame = hideFirstFrame
98
- }
99
-
100
- return systemUserInterfaceConfig
101
- }
102
-
103
- return nil
104
- }
105
-
106
- @objc
107
- func attachFullscreenBridge(_ viewId: NSNumber, fullscreenBridgeId: NativeId) {
108
- bridge.uiManager.addUIBlock { [weak self] _, views in
109
- guard
110
- let view = views?[viewId] as? RNPlayerView,
111
- let fullscreenBridge = self?.getFullscreenHandlerModule()?.retrieve(fullscreenBridgeId)
112
- else {
113
- return
114
- }
115
- guard let playerView = view.playerView else {
116
- return
117
- }
118
-
119
- playerView.fullscreenHandler = fullscreenBridge
120
- }
121
- }
122
-
123
- @objc
124
- func setCustomMessageHandlerBridgeId(_ viewId: NSNumber, customMessageHandlerBridgeId: NativeId) {
125
- self.customMessageHandlerBridgeId = customMessageHandlerBridgeId
126
- }
127
-
128
- @objc
129
- func setFullscreen(_ viewId: NSNumber, isFullscreen: Bool) {
130
- bridge.uiManager.addUIBlock { [weak self] _, views in
131
- guard
132
- let self,
133
- let view = views?[viewId] as? RNPlayerView,
134
- let playerView = view.playerView else {
135
- return
136
- }
137
- guard playerView.isFullscreen != isFullscreen else {
138
- return
139
- }
140
- if isFullscreen {
141
- playerView.enterFullscreen()
142
- } else {
143
- playerView.exitFullscreen()
144
- }
145
- }
146
- }
147
-
148
- @objc
149
- func setPictureInPicture(_ viewId: NSNumber, enterPictureInPicture: Bool) {
150
- bridge.uiManager.addUIBlock { [weak self] _, views in
151
- guard
152
- let self,
153
- let view = views?[viewId] as? RNPlayerView,
154
- let playerView = view.playerView else {
155
- return
156
- }
157
- guard playerView.isPictureInPicture != enterPictureInPicture else {
158
- return
159
- }
160
- if enterPictureInPicture {
161
- playerView.enterPictureInPicture()
162
- } else {
163
- playerView.exitPictureInPicture()
164
- }
165
- }
166
- }
167
-
168
- @objc
169
- func setScalingMode(_ viewId: NSNumber, scalingMode: String) {
170
- bridge.uiManager.addUIBlock { [weak self] _, views in
171
- guard
172
- let self,
173
- let view = views?[viewId] as? RNPlayerView
174
- else {
175
- return
176
- }
177
- guard let playerView = view.playerView else {
178
- return
179
- }
180
- switch scalingMode {
181
- case "Zoom":
182
- playerView.scalingMode = .zoom
183
- case "Stretch":
184
- playerView.scalingMode = .stretch
185
- case "Fit":
186
- playerView.scalingMode = .fit
187
- default:
188
- break
189
- }
190
- }
191
- }
192
-
193
- /// Fetches the initialized `PlayerModule` instance on RN's bridge object.
194
- private func getPlayerModule() -> PlayerModule? {
195
- bridge.module(for: PlayerModule.self) as? PlayerModule
196
- }
197
-
198
- /// Fetches the initialized `FullscreenHandlerModule` instance on RN's bridge object.
199
- private func getFullscreenHandlerModule() -> FullscreenHandlerModule? {
200
- bridge.module(for: FullscreenHandlerModule.self) as? FullscreenHandlerModule
201
- }
202
-
203
- @MainActor
204
- private func maybeEmitPictureInPictureAvailabilityEvent(for view: RNPlayerView, previousState: Bool) {
205
- guard let playerView = view.playerView,
206
- playerView.isPictureInPictureAvailable != previousState else {
207
- return
208
- }
209
- let event: [AnyHashable: Any] = [
210
- "isPictureInPictureAvailable": playerView.isPictureInPictureAvailable,
211
- "name": "onPictureInPictureAvailabilityChanged",
212
- "timestamp": Date().timeIntervalSince1970
213
- ]
214
- view.onBmpPictureInPictureAvailabilityChanged?(event)
215
- }
216
102
  }
@@ -1,5 +1,5 @@
1
1
  /// Represents the `UUID` string used as index for a certain registry object.
2
- internal typealias NativeId = String
2
+ public typealias NativeId = String
3
3
 
4
4
  /// Represents an in memory storage facility that associates an object of type `T` with a certain `NativeId`.
5
- internal typealias Registry<T> = [NativeId: T]
5
+ public typealias Registry<T> = [NativeId: T]
@@ -0,0 +1,66 @@
1
+ import Foundation
2
+
3
+ /// A thread-safe manager that lets native code block until JavaScript
4
+ /// (or any other async source) supplies a result identified by an `Int` ID.
5
+ ///
6
+ /// let (id, wait) = boolWaiter.make(timeout: 0.25)
7
+ /// sendEvent("…", ["id": id])
8
+ /// let answer = wait() ?? false // falls back on timeout
9
+ ///
10
+ internal final class ResultWaiter<Value> {
11
+ // MARK: – private backing storage
12
+ private struct Entry {
13
+ let semaphore: DispatchSemaphore
14
+ var value: Value?
15
+ }
16
+
17
+ private let queue = DispatchQueue(label: "ResultWaiter.storage", attributes: .concurrent)
18
+ private var next: Int32 = 0
19
+ private var table: [Int: Entry] = [:]
20
+
21
+ /// Registers a new waiter and returns (id, waitClosure).
22
+ /// `wait()` returns `nil` if the timeout elapses first.
23
+ func make(timeout: TimeInterval) -> (id: Int, wait: () -> Value?) {
24
+ let sema = DispatchSemaphore(value: 0)
25
+ let id = Int(OSAtomicIncrement32(&next))
26
+
27
+ // store entry
28
+ queue.async(flags: .barrier) { self.table[id] = Entry(semaphore: sema, value: nil) }
29
+
30
+ // closure that the caller will execute later
31
+ let waitClosure = { [weak self] () -> Value? in
32
+ _ = sema.wait(timeout: .now() + timeout) // block caller’s thread
33
+ guard let self else { return nil }
34
+ defer { self.remove(id) } // clean-up once we’re done
35
+ return self.value(for: id)
36
+ }
37
+
38
+ return (id, waitClosure)
39
+ }
40
+
41
+ /// Completes the waiter with `value`; no-ops if the ID is unknown.
42
+ func complete(id: Int, with value: Value) {
43
+ queue.async(flags: .barrier) {
44
+ guard var entry = self.table[id] else { return }
45
+ entry.value = value
46
+ self.table[id] = entry
47
+ entry.semaphore.signal()
48
+ }
49
+ }
50
+
51
+ func removeAll() {
52
+ queue.async(flags: .barrier) { self.table.removeAll() }
53
+ }
54
+
55
+ // MARK: – helpers ----------------------------------------------------------
56
+
57
+ private func value(for id: Int) -> Value? {
58
+ var value: Value?
59
+ queue.sync { value = self.table[id]?.value }
60
+ return value
61
+ }
62
+
63
+ private func remove(_ id: Int) {
64
+ queue.async(flags: .barrier) { self.table[id] = nil }
65
+ }
66
+ }