spactureai-mobile-player 1.0.30

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 (492) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +474 -0
  3. package/UnifiedPlayer.podspec +51 -0
  4. package/android/CMakeLists.txt +29 -0
  5. package/android/build.gradle +249 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +15 -0
  8. package/android/src/main/AndroidManifest.xml +10 -0
  9. package/android/src/main/AndroidManifestNew.xml +9 -0
  10. package/android/src/main/cpp/cpp-adapter.cpp +9 -0
  11. package/android/src/main/java/com/unifiedplayer/core/AudioFocusManager.kt +233 -0
  12. package/android/src/main/java/com/unifiedplayer/core/VideoError.kt +105 -0
  13. package/android/src/main/java/com/unifiedplayer/core/VideoManager.kt +292 -0
  14. package/android/src/main/java/com/unifiedplayer/core/extensions/ResizeMode+AspectRatioFrameLayout.kt +20 -0
  15. package/android/src/main/java/com/unifiedplayer/core/extensions/SubtitleType+toString.kt +14 -0
  16. package/android/src/main/java/com/unifiedplayer/core/extensions/VideoPlaybackService+ServiceManagment.kt +59 -0
  17. package/android/src/main/java/com/unifiedplayer/core/fragments/FullscreenVideoFragment.kt +346 -0
  18. package/android/src/main/java/com/unifiedplayer/core/fragments/PictureInPictureHelperFragment.kt +85 -0
  19. package/android/src/main/java/com/unifiedplayer/core/player/DRMManagerSpec.kt +23 -0
  20. package/android/src/main/java/com/unifiedplayer/core/player/DataSourceFactoryUtils.kt +93 -0
  21. package/android/src/main/java/com/unifiedplayer/core/player/MediaItemUtils.kt +141 -0
  22. package/android/src/main/java/com/unifiedplayer/core/player/MediaSourceUtils.kt +134 -0
  23. package/android/src/main/java/com/unifiedplayer/core/player/OnAudioFocusChangedListener.kt +25 -0
  24. package/android/src/main/java/com/unifiedplayer/core/plugins/PluginsRegistry.kt +223 -0
  25. package/android/src/main/java/com/unifiedplayer/core/plugins/ReactNativeVideoPlugin.kt +173 -0
  26. package/android/src/main/java/com/unifiedplayer/core/recivers/AudioBecomingNoisyReceiver.kt +38 -0
  27. package/android/src/main/java/com/unifiedplayer/core/services/playback/CustomMediaNotificationProvider.kt +151 -0
  28. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackCallback.kt +96 -0
  29. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackService.kt +219 -0
  30. package/android/src/main/java/com/unifiedplayer/core/services/playback/VideoPlaybackServiceConnection.kt +59 -0
  31. package/android/src/main/java/com/unifiedplayer/core/utils/PictureInPictureUtils.kt +153 -0
  32. package/android/src/main/java/com/unifiedplayer/core/utils/SmallVideoPlayerOptimizer.kt +157 -0
  33. package/android/src/main/java/com/unifiedplayer/core/utils/SourceLoader.kt +48 -0
  34. package/android/src/main/java/com/unifiedplayer/core/utils/TextTrackUtils.kt +175 -0
  35. package/android/src/main/java/com/unifiedplayer/core/utils/Threading.kt +75 -0
  36. package/android/src/main/java/com/unifiedplayer/core/utils/VideoFileHelper.kt +51 -0
  37. package/android/src/main/java/com/unifiedplayer/core/utils/VideoInformationUtils.kt +67 -0
  38. package/android/src/main/java/com/unifiedplayer/core/utils/VideoOrientationUtils.kt +30 -0
  39. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayer.kt +732 -0
  40. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayer/HybridVideoPlayerFactory.kt +16 -0
  41. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +180 -0
  42. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSource.kt +67 -0
  43. package/android/src/main/java/com/unifiedplayer/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +58 -0
  44. package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManager.kt +187 -0
  45. package/android/src/main/java/com/unifiedplayer/hybrids/videoviewviewmanager/HybridVideoViewViewManagerFactory.kt +13 -0
  46. package/android/src/main/java/com/unifiedplayer/react/VideoPackage.kt +25 -0
  47. package/android/src/main/java/com/unifiedplayer/react/VideoViewViewManager.kt +78 -0
  48. package/android/src/main/java/com/unifiedplayer/view/VideoView.kt +565 -0
  49. package/android/src/main/res/layout/custom_player_control_view.xml +82 -0
  50. package/android/src/main/res/layout/player_view_surface.xml +13 -0
  51. package/android/src/main/res/layout/player_view_texture.xml +13 -0
  52. package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerDelegate.java +32 -0
  53. package/android/src/paper/java/com/facebook/react/viewmanagers/RNCVideoViewManagerInterface.java +16 -0
  54. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashMediaSource.kt +35 -0
  55. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/DashUtil.kt +11 -0
  56. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/AdaptationSet.kt +9 -0
  57. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/DashManifest.kt +10 -0
  58. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Period.kt +7 -0
  59. package/android/src/stubs/dash/androidx/media3/exoplayer/dash/manifest/Representation.kt +8 -0
  60. package/android/src/stubs/hls/androidx/media3/exoplayer/hls/HlsMediaSource.kt +33 -0
  61. package/ios/RNCVideoViewManager.mm +39 -0
  62. package/ios/Video-Bridging-Header.h +2 -0
  63. package/ios/core/HLSAuthProxy.swift +428 -0
  64. package/ios/core/VideoError.swift +164 -0
  65. package/ios/core/VideoManager.swift +219 -0
  66. package/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +697 -0
  67. package/ios/hybrids/VideoPlayer/HybridVideoPlayerFactory.swift +15 -0
  68. package/ios/hybrids/VideoPlayer/VLCPlaybackDelegates.swift +58 -0
  69. package/ios/hybrids/VideoPlayerEmitter/HybridVideoPlayerEventEmitter.swift +203 -0
  70. package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSource.swift +55 -0
  71. package/ios/hybrids/VideoPlayerSource/HybridVideoPlayerSourceFactory.swift +29 -0
  72. package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManager.swift +266 -0
  73. package/ios/hybrids/VideoViewViewManager/HybridVideoViewViewManagerFactory.swift +14 -0
  74. package/ios/view/VideoComponentView.swift +196 -0
  75. package/ios/view/VideoComponentViewObserver.swift +48 -0
  76. package/lib/module/core/VideoPlayer.js +287 -0
  77. package/lib/module/core/VideoPlayer.js.map +1 -0
  78. package/lib/module/core/VideoPlayerEvents.js +84 -0
  79. package/lib/module/core/VideoPlayerEvents.js.map +1 -0
  80. package/lib/module/core/hooks/useEvent.js +19 -0
  81. package/lib/module/core/hooks/useEvent.js.map +1 -0
  82. package/lib/module/core/hooks/useManagedInstance.js +75 -0
  83. package/lib/module/core/hooks/useManagedInstance.js.map +1 -0
  84. package/lib/module/core/hooks/useVideoPlayer.js +57 -0
  85. package/lib/module/core/hooks/useVideoPlayer.js.map +1 -0
  86. package/lib/module/core/types/BufferConfig.js +2 -0
  87. package/lib/module/core/types/BufferConfig.js.map +1 -0
  88. package/lib/module/core/types/DrmParams.js +2 -0
  89. package/lib/module/core/types/DrmParams.js.map +1 -0
  90. package/lib/module/core/types/Events.js +10 -0
  91. package/lib/module/core/types/Events.js.map +1 -0
  92. package/lib/module/core/types/IgnoreSilentSwitchMode.js +2 -0
  93. package/lib/module/core/types/IgnoreSilentSwitchMode.js.map +1 -0
  94. package/lib/module/core/types/MixAudioMode.js +2 -0
  95. package/lib/module/core/types/MixAudioMode.js.map +1 -0
  96. package/lib/module/core/types/ResizeMode.js +2 -0
  97. package/lib/module/core/types/ResizeMode.js.map +1 -0
  98. package/lib/module/core/types/TextTrack.js +2 -0
  99. package/lib/module/core/types/TextTrack.js.map +1 -0
  100. package/lib/module/core/types/Utils.js +2 -0
  101. package/lib/module/core/types/Utils.js.map +1 -0
  102. package/lib/module/core/types/VideoConfig.js +4 -0
  103. package/lib/module/core/types/VideoConfig.js.map +1 -0
  104. package/lib/module/core/types/VideoError.js +100 -0
  105. package/lib/module/core/types/VideoError.js.map +1 -0
  106. package/lib/module/core/types/VideoInformation.js +4 -0
  107. package/lib/module/core/types/VideoInformation.js.map +1 -0
  108. package/lib/module/core/types/VideoOrientation.js +2 -0
  109. package/lib/module/core/types/VideoOrientation.js.map +1 -0
  110. package/lib/module/core/types/VideoPlayerBase.js +4 -0
  111. package/lib/module/core/types/VideoPlayerBase.js.map +1 -0
  112. package/lib/module/core/types/VideoPlayerSourceBase.js +4 -0
  113. package/lib/module/core/types/VideoPlayerSourceBase.js.map +1 -0
  114. package/lib/module/core/types/VideoPlayerStatus.js +2 -0
  115. package/lib/module/core/types/VideoPlayerStatus.js.map +1 -0
  116. package/lib/module/core/utils/playerFactory.js +25 -0
  117. package/lib/module/core/utils/playerFactory.js.map +1 -0
  118. package/lib/module/core/utils/sourceFactory.js +138 -0
  119. package/lib/module/core/utils/sourceFactory.js.map +1 -0
  120. package/lib/module/core/video-view/NativeVideoView.tsx +18 -0
  121. package/lib/module/core/video-view/VideoView.js +261 -0
  122. package/lib/module/core/video-view/VideoView.js.map +1 -0
  123. package/lib/module/expo-plugins/@types.js +2 -0
  124. package/lib/module/expo-plugins/@types.js.map +1 -0
  125. package/lib/module/expo-plugins/getPackageInfo.js +23 -0
  126. package/lib/module/expo-plugins/getPackageInfo.js.map +1 -0
  127. package/lib/module/expo-plugins/withAndroidExtensions.js +35 -0
  128. package/lib/module/expo-plugins/withAndroidExtensions.js.map +1 -0
  129. package/lib/module/expo-plugins/withAndroidNotificationControls.js +29 -0
  130. package/lib/module/expo-plugins/withAndroidNotificationControls.js.map +1 -0
  131. package/lib/module/expo-plugins/withAndroidPictureInPicture.js +18 -0
  132. package/lib/module/expo-plugins/withAndroidPictureInPicture.js.map +1 -0
  133. package/lib/module/expo-plugins/withBackgroundAudio.js +22 -0
  134. package/lib/module/expo-plugins/withBackgroundAudio.js.map +1 -0
  135. package/lib/module/expo-plugins/withReactNativeVideo.js +27 -0
  136. package/lib/module/expo-plugins/withReactNativeVideo.js.map +1 -0
  137. package/lib/module/expo-plugins/writeToPodfile.js +53 -0
  138. package/lib/module/expo-plugins/writeToPodfile.js.map +1 -0
  139. package/lib/module/index.js +8 -0
  140. package/lib/module/index.js.map +1 -0
  141. package/lib/module/package.json +1 -0
  142. package/lib/module/spec/fabric/VideoViewNativeComponent.ts +17 -0
  143. package/lib/module/spec/nitro/VideoPlayer.nitro.js +4 -0
  144. package/lib/module/spec/nitro/VideoPlayer.nitro.js.map +1 -0
  145. package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js +4 -0
  146. package/lib/module/spec/nitro/VideoPlayerEventEmitter.nitro.js.map +1 -0
  147. package/lib/module/spec/nitro/VideoPlayerSource.nitro.js +4 -0
  148. package/lib/module/spec/nitro/VideoPlayerSource.nitro.js.map +1 -0
  149. package/lib/module/spec/nitro/VideoViewViewManager.nitro.js +4 -0
  150. package/lib/module/spec/nitro/VideoViewViewManager.nitro.js.map +1 -0
  151. package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts +10 -0
  152. package/lib/typescript/drm-plugin/src/PluginManager.nitro.d.ts.map +1 -0
  153. package/lib/typescript/drm-plugin/src/index.d.ts +4 -0
  154. package/lib/typescript/drm-plugin/src/index.d.ts.map +1 -0
  155. package/lib/typescript/package.json +1 -0
  156. package/lib/typescript/src/core/VideoPlayer.d.ts +88 -0
  157. package/lib/typescript/src/core/VideoPlayer.d.ts.map +1 -0
  158. package/lib/typescript/src/core/VideoPlayerEvents.d.ts +22 -0
  159. package/lib/typescript/src/core/VideoPlayerEvents.d.ts.map +1 -0
  160. package/lib/typescript/src/core/hooks/useEvent.d.ts +11 -0
  161. package/lib/typescript/src/core/hooks/useEvent.d.ts.map +1 -0
  162. package/lib/typescript/src/core/hooks/useManagedInstance.d.ts +19 -0
  163. package/lib/typescript/src/core/hooks/useManagedInstance.d.ts.map +1 -0
  164. package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts +16 -0
  165. package/lib/typescript/src/core/hooks/useVideoPlayer.d.ts.map +1 -0
  166. package/lib/typescript/src/core/types/BufferConfig.d.ts +97 -0
  167. package/lib/typescript/src/core/types/BufferConfig.d.ts.map +1 -0
  168. package/lib/typescript/src/core/types/DrmParams.d.ts +64 -0
  169. package/lib/typescript/src/core/types/DrmParams.d.ts.map +1 -0
  170. package/lib/typescript/src/core/types/Events.d.ts +224 -0
  171. package/lib/typescript/src/core/types/Events.d.ts.map +1 -0
  172. package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts +2 -0
  173. package/lib/typescript/src/core/types/IgnoreSilentSwitchMode.d.ts.map +1 -0
  174. package/lib/typescript/src/core/types/MixAudioMode.d.ts +2 -0
  175. package/lib/typescript/src/core/types/MixAudioMode.d.ts.map +1 -0
  176. package/lib/typescript/src/core/types/ResizeMode.d.ts +10 -0
  177. package/lib/typescript/src/core/types/ResizeMode.d.ts.map +1 -0
  178. package/lib/typescript/src/core/types/TextTrack.d.ts +20 -0
  179. package/lib/typescript/src/core/types/TextTrack.d.ts.map +1 -0
  180. package/lib/typescript/src/core/types/Utils.d.ts +2 -0
  181. package/lib/typescript/src/core/types/Utils.d.ts.map +1 -0
  182. package/lib/typescript/src/core/types/VideoConfig.d.ts +138 -0
  183. package/lib/typescript/src/core/types/VideoConfig.d.ts.map +1 -0
  184. package/lib/typescript/src/core/types/VideoError.d.ts +31 -0
  185. package/lib/typescript/src/core/types/VideoError.d.ts.map +1 -0
  186. package/lib/typescript/src/core/types/VideoInformation.d.ts +38 -0
  187. package/lib/typescript/src/core/types/VideoInformation.d.ts.map +1 -0
  188. package/lib/typescript/src/core/types/VideoOrientation.d.ts +2 -0
  189. package/lib/typescript/src/core/types/VideoOrientation.d.ts.map +1 -0
  190. package/lib/typescript/src/core/types/VideoPlayerBase.d.ts +155 -0
  191. package/lib/typescript/src/core/types/VideoPlayerBase.d.ts.map +1 -0
  192. package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts +17 -0
  193. package/lib/typescript/src/core/types/VideoPlayerSourceBase.d.ts.map +1 -0
  194. package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts +9 -0
  195. package/lib/typescript/src/core/types/VideoPlayerStatus.d.ts.map +1 -0
  196. package/lib/typescript/src/core/utils/playerFactory.d.ts +12 -0
  197. package/lib/typescript/src/core/utils/playerFactory.d.ts.map +1 -0
  198. package/lib/typescript/src/core/utils/sourceFactory.d.ts +29 -0
  199. package/lib/typescript/src/core/utils/sourceFactory.d.ts.map +1 -0
  200. package/lib/typescript/src/core/video-view/NativeVideoView.d.ts +2 -0
  201. package/lib/typescript/src/core/video-view/NativeVideoView.d.ts.map +1 -0
  202. package/lib/typescript/src/core/video-view/VideoView.d.ts +104 -0
  203. package/lib/typescript/src/core/video-view/VideoView.d.ts.map +1 -0
  204. package/lib/typescript/src/index.d.ts +13 -0
  205. package/lib/typescript/src/index.d.ts.map +1 -0
  206. package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts +13 -0
  207. package/lib/typescript/src/spec/fabric/VideoViewNativeComponent.d.ts.map +1 -0
  208. package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts +55 -0
  209. package/lib/typescript/src/spec/nitro/VideoPlayer.nitro.d.ts.map +1 -0
  210. package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +150 -0
  211. package/lib/typescript/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -0
  212. package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts +21 -0
  213. package/lib/typescript/src/spec/nitro/VideoPlayerSource.nitro.d.ts.map +1 -0
  214. package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts +75 -0
  215. package/lib/typescript/src/spec/nitro/VideoViewViewManager.nitro.d.ts.map +1 -0
  216. package/nitro.json +47 -0
  217. package/nitrogen/generated/android/UnifiedPlayer+autolinking.cmake +95 -0
  218. package/nitrogen/generated/android/UnifiedPlayer+autolinking.gradle +27 -0
  219. package/nitrogen/generated/android/UnifiedPlayerOnLoad.cpp +122 -0
  220. package/nitrogen/generated/android/UnifiedPlayerOnLoad.hpp +34 -0
  221. package/nitrogen/generated/android/c++/JBandwidthData.hpp +65 -0
  222. package/nitrogen/generated/android/c++/JBufferConfig.hpp +101 -0
  223. package/nitrogen/generated/android/c++/JCustomVideoMetadata.hpp +74 -0
  224. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.hpp +126 -0
  225. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  226. package/nitrogen/generated/android/c++/JFunc_void_BandwidthData.hpp +78 -0
  227. package/nitrogen/generated/android/c++/JFunc_void_TimedMetadata.hpp +81 -0
  228. package/nitrogen/generated/android/c++/JFunc_void_VideoPlayerStatus.hpp +77 -0
  229. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  230. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
  231. package/nitrogen/generated/android/c++/JFunc_void_onLoadData.hpp +79 -0
  232. package/nitrogen/generated/android/c++/JFunc_void_onLoadStartData.hpp +82 -0
  233. package/nitrogen/generated/android/c++/JFunc_void_onPlaybackStateChangeData.hpp +77 -0
  234. package/nitrogen/generated/android/c++/JFunc_void_onProgressData.hpp +77 -0
  235. package/nitrogen/generated/android/c++/JFunc_void_onVolumeChangeData.hpp +77 -0
  236. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__TextTrack__.hpp +83 -0
  237. package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +95 -0
  238. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +224 -0
  239. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +82 -0
  240. package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.cpp +60 -0
  241. package/nitrogen/generated/android/c++/JHybridVideoPlayerFactorySpec.hpp +63 -0
  242. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.cpp +106 -0
  243. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceFactorySpec.hpp +64 -0
  244. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.cpp +124 -0
  245. package/nitrogen/generated/android/c++/JHybridVideoPlayerSourceSpec.hpp +64 -0
  246. package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.cpp +300 -0
  247. package/nitrogen/generated/android/c++/JHybridVideoPlayerSpec.hpp +98 -0
  248. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.cpp +56 -0
  249. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerFactorySpec.hpp +63 -0
  250. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.cpp +185 -0
  251. package/nitrogen/generated/android/c++/JHybridVideoViewViewManagerSpec.hpp +87 -0
  252. package/nitrogen/generated/android/c++/JIgnoreSilentSwitchMode.hpp +61 -0
  253. package/nitrogen/generated/android/c++/JListenerSubscription.hpp +67 -0
  254. package/nitrogen/generated/android/c++/JLivePlaybackParams.hpp +73 -0
  255. package/nitrogen/generated/android/c++/JMixAudioMode.hpp +64 -0
  256. package/nitrogen/generated/android/c++/JNativeDrmParams.hpp +111 -0
  257. package/nitrogen/generated/android/c++/JNativeExternalSubtitle.hpp +71 -0
  258. package/nitrogen/generated/android/c++/JNativeVideoConfig.hpp +136 -0
  259. package/nitrogen/generated/android/c++/JOnGetLicensePayload.hpp +69 -0
  260. package/nitrogen/generated/android/c++/JResizeMode.hpp +64 -0
  261. package/nitrogen/generated/android/c++/JResolution.hpp +61 -0
  262. package/nitrogen/generated/android/c++/JSourceType.hpp +58 -0
  263. package/nitrogen/generated/android/c++/JSubtitleType.hpp +67 -0
  264. package/nitrogen/generated/android/c++/JSurfaceType.hpp +58 -0
  265. package/nitrogen/generated/android/c++/JTextTrack.hpp +70 -0
  266. package/nitrogen/generated/android/c++/JTimedMetadata.hpp +78 -0
  267. package/nitrogen/generated/android/c++/JTimedMetadataObject.hpp +61 -0
  268. package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.cpp +26 -0
  269. package/nitrogen/generated/android/c++/JVariant_NullType_HybridVideoPlayerSourceSpec.hpp +72 -0
  270. package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.cpp +26 -0
  271. package/nitrogen/generated/android/c++/JVariant_NullType_TextTrack.hpp +73 -0
  272. package/nitrogen/generated/android/c++/JVideoInformation.hpp +86 -0
  273. package/nitrogen/generated/android/c++/JVideoOrientation.hpp +73 -0
  274. package/nitrogen/generated/android/c++/JVideoPlayerStatus.hpp +64 -0
  275. package/nitrogen/generated/android/c++/JonLoadData.hpp +74 -0
  276. package/nitrogen/generated/android/c++/JonLoadStartData.hpp +65 -0
  277. package/nitrogen/generated/android/c++/JonPlaybackStateChangeData.hpp +61 -0
  278. package/nitrogen/generated/android/c++/JonProgressData.hpp +65 -0
  279. package/nitrogen/generated/android/c++/JonVolumeChangeData.hpp +61 -0
  280. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BandwidthData.kt +61 -0
  281. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/BufferConfig.kt +101 -0
  282. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/CustomVideoMetadata.kt +71 -0
  283. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.kt +80 -0
  284. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void.kt +80 -0
  285. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_BandwidthData.kt +80 -0
  286. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_TimedMetadata.kt +80 -0
  287. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_VideoPlayerStatus.kt +80 -0
  288. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_bool.kt +80 -0
  289. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_double.kt +80 -0
  290. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadData.kt +80 -0
  291. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onLoadStartData.kt +80 -0
  292. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onPlaybackStateChangeData.kt +80 -0
  293. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onProgressData.kt +80 -0
  294. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_onVolumeChangeData.kt +80 -0
  295. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.kt +80 -0
  296. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Func_void_std__vector_std__string_.kt +80 -0
  297. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerEventEmitterSpec.kt +226 -0
  298. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerFactorySpec.kt +54 -0
  299. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceFactorySpec.kt +58 -0
  300. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSourceSpec.kt +61 -0
  301. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoPlayerSpec.kt +178 -0
  302. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerFactorySpec.kt +54 -0
  303. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/HybridVideoViewViewManagerSpec.kt +168 -0
  304. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/IgnoreSilentSwitchMode.kt +24 -0
  305. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ListenerSubscription.kt +55 -0
  306. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/LivePlaybackParams.kt +71 -0
  307. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/MixAudioMode.kt +25 -0
  308. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeDrmParams.kt +85 -0
  309. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeExternalSubtitle.kt +66 -0
  310. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/NativeVideoConfig.kt +81 -0
  311. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/OnGetLicensePayload.kt +66 -0
  312. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/ResizeMode.kt +25 -0
  313. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Resolution.kt +56 -0
  314. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SourceType.kt +23 -0
  315. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SubtitleType.kt +26 -0
  316. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/SurfaceType.kt +23 -0
  317. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TextTrack.kt +66 -0
  318. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadata.kt +51 -0
  319. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/TimedMetadataObject.kt +56 -0
  320. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/UnifiedPlayerOnLoad.kt +35 -0
  321. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_HybridVideoPlayerSourceSpec.kt +62 -0
  322. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/Variant_NullType_TextTrack.kt +62 -0
  323. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoInformation.kt +86 -0
  324. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoOrientation.kt +28 -0
  325. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/VideoPlayerStatus.kt +25 -0
  326. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadData.kt +71 -0
  327. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onLoadStartData.kt +56 -0
  328. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onPlaybackStateChangeData.kt +56 -0
  329. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onProgressData.kt +61 -0
  330. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unifiedplayer/onVolumeChangeData.kt +56 -0
  331. package/nitrogen/generated/ios/UnifiedPlayer+autolinking.rb +62 -0
  332. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.cpp +280 -0
  333. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Bridge.hpp +1106 -0
  334. package/nitrogen/generated/ios/UnifiedPlayer-Swift-Cxx-Umbrella.hpp +162 -0
  335. package/nitrogen/generated/ios/UnifiedPlayerAutolinking.mm +49 -0
  336. package/nitrogen/generated/ios/UnifiedPlayerAutolinking.swift +50 -0
  337. package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.cpp +11 -0
  338. package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +279 -0
  339. package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.cpp +11 -0
  340. package/nitrogen/generated/ios/c++/HybridVideoPlayerFactorySpecSwift.hpp +87 -0
  341. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.cpp +11 -0
  342. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceFactorySpecSwift.hpp +125 -0
  343. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.cpp +11 -0
  344. package/nitrogen/generated/ios/c++/HybridVideoPlayerSourceSpecSwift.hpp +125 -0
  345. package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.cpp +11 -0
  346. package/nitrogen/generated/ios/c++/HybridVideoPlayerSpecSwift.hpp +256 -0
  347. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.cpp +11 -0
  348. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerFactorySpecSwift.hpp +84 -0
  349. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.cpp +11 -0
  350. package/nitrogen/generated/ios/c++/HybridVideoViewViewManagerSpecSwift.hpp +217 -0
  351. package/nitrogen/generated/ios/swift/BandwidthData.swift +65 -0
  352. package/nitrogen/generated/ios/swift/BufferConfig.swift +201 -0
  353. package/nitrogen/generated/ios/swift/CustomVideoMetadata.swift +114 -0
  354. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload.swift +61 -0
  355. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  356. package/nitrogen/generated/ios/swift/Func_void_BandwidthData.swift +46 -0
  357. package/nitrogen/generated/ios/swift/Func_void_TimedMetadata.swift +46 -0
  358. package/nitrogen/generated/ios/swift/Func_void_VideoInformation.swift +46 -0
  359. package/nitrogen/generated/ios/swift/Func_void_VideoPlayerStatus.swift +46 -0
  360. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  361. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  362. package/nitrogen/generated/ios/swift/Func_void_onLoadData.swift +46 -0
  363. package/nitrogen/generated/ios/swift/Func_void_onLoadStartData.swift +46 -0
  364. package/nitrogen/generated/ios/swift/Func_void_onPlaybackStateChangeData.swift +46 -0
  365. package/nitrogen/generated/ios/swift/Func_void_onProgressData.swift +46 -0
  366. package/nitrogen/generated/ios/swift/Func_void_onVolumeChangeData.swift +46 -0
  367. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  368. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__TextTrack__.swift +65 -0
  369. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__string__.swift +66 -0
  370. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  371. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
  372. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +74 -0
  373. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +479 -0
  374. package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec.swift +55 -0
  375. package/nitrogen/generated/ios/swift/HybridVideoPlayerFactorySpec_cxx.swift +145 -0
  376. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec.swift +56 -0
  377. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceFactorySpec_cxx.swift +156 -0
  378. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec.swift +56 -0
  379. package/nitrogen/generated/ios/swift/HybridVideoPlayerSourceSpec_cxx.swift +157 -0
  380. package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec.swift +80 -0
  381. package/nitrogen/generated/ios/swift/HybridVideoPlayerSpec_cxx.swift +490 -0
  382. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec.swift +55 -0
  383. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerFactorySpec_cxx.swift +141 -0
  384. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec.swift +72 -0
  385. package/nitrogen/generated/ios/swift/HybridVideoViewViewManagerSpec_cxx.swift +390 -0
  386. package/nitrogen/generated/ios/swift/IgnoreSilentSwitchMode.swift +44 -0
  387. package/nitrogen/generated/ios/swift/ListenerSubscription.swift +37 -0
  388. package/nitrogen/generated/ios/swift/LivePlaybackParams.swift +114 -0
  389. package/nitrogen/generated/ios/swift/MixAudioMode.swift +48 -0
  390. package/nitrogen/generated/ios/swift/NativeDrmParams.swift +193 -0
  391. package/nitrogen/generated/ios/swift/NativeExternalSubtitle.swift +44 -0
  392. package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +136 -0
  393. package/nitrogen/generated/ios/swift/OnGetLicensePayload.swift +44 -0
  394. package/nitrogen/generated/ios/swift/ResizeMode.swift +48 -0
  395. package/nitrogen/generated/ios/swift/Resolution.swift +34 -0
  396. package/nitrogen/generated/ios/swift/SourceType.swift +40 -0
  397. package/nitrogen/generated/ios/swift/SubtitleType.swift +52 -0
  398. package/nitrogen/generated/ios/swift/SurfaceType.swift +40 -0
  399. package/nitrogen/generated/ios/swift/TextTrack.swift +57 -0
  400. package/nitrogen/generated/ios/swift/TimedMetadata.swift +35 -0
  401. package/nitrogen/generated/ios/swift/TimedMetadataObject.swift +34 -0
  402. package/nitrogen/generated/ios/swift/Variant_NullType_TextTrack.swift +30 -0
  403. package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridVideoPlayerSourceSpec_.swift +30 -0
  404. package/nitrogen/generated/ios/swift/VideoInformation.swift +64 -0
  405. package/nitrogen/generated/ios/swift/VideoOrientation.swift +60 -0
  406. package/nitrogen/generated/ios/swift/VideoPlayerStatus.swift +48 -0
  407. package/nitrogen/generated/ios/swift/onLoadData.swift +49 -0
  408. package/nitrogen/generated/ios/swift/onLoadStartData.swift +41 -0
  409. package/nitrogen/generated/ios/swift/onPlaybackStateChangeData.swift +34 -0
  410. package/nitrogen/generated/ios/swift/onProgressData.swift +39 -0
  411. package/nitrogen/generated/ios/swift/onVolumeChangeData.swift +34 -0
  412. package/nitrogen/generated/shared/c++/BandwidthData.hpp +91 -0
  413. package/nitrogen/generated/shared/c++/BufferConfig.hpp +128 -0
  414. package/nitrogen/generated/shared/c++/CustomVideoMetadata.hpp +100 -0
  415. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +40 -0
  416. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +115 -0
  417. package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.cpp +21 -0
  418. package/nitrogen/generated/shared/c++/HybridVideoPlayerFactorySpec.hpp +67 -0
  419. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.cpp +22 -0
  420. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceFactorySpec.hpp +69 -0
  421. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.cpp +23 -0
  422. package/nitrogen/generated/shared/c++/HybridVideoPlayerSourceSpec.hpp +69 -0
  423. package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.cpp +57 -0
  424. package/nitrogen/generated/shared/c++/HybridVideoPlayerSpec.hpp +120 -0
  425. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.cpp +21 -0
  426. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerFactorySpec.hpp +64 -0
  427. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.cpp +46 -0
  428. package/nitrogen/generated/shared/c++/HybridVideoViewViewManagerSpec.hpp +99 -0
  429. package/nitrogen/generated/shared/c++/IgnoreSilentSwitchMode.hpp +80 -0
  430. package/nitrogen/generated/shared/c++/ListenerSubscription.hpp +83 -0
  431. package/nitrogen/generated/shared/c++/LivePlaybackParams.hpp +99 -0
  432. package/nitrogen/generated/shared/c++/MixAudioMode.hpp +84 -0
  433. package/nitrogen/generated/shared/c++/NativeDrmParams.hpp +113 -0
  434. package/nitrogen/generated/shared/c++/NativeExternalSubtitle.hpp +97 -0
  435. package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +121 -0
  436. package/nitrogen/generated/shared/c++/OnGetLicensePayload.hpp +95 -0
  437. package/nitrogen/generated/shared/c++/ResizeMode.hpp +84 -0
  438. package/nitrogen/generated/shared/c++/Resolution.hpp +87 -0
  439. package/nitrogen/generated/shared/c++/SourceType.hpp +76 -0
  440. package/nitrogen/generated/shared/c++/SubtitleType.hpp +88 -0
  441. package/nitrogen/generated/shared/c++/SurfaceType.hpp +76 -0
  442. package/nitrogen/generated/shared/c++/TextTrack.hpp +96 -0
  443. package/nitrogen/generated/shared/c++/TimedMetadata.hpp +85 -0
  444. package/nitrogen/generated/shared/c++/TimedMetadataObject.hpp +87 -0
  445. package/nitrogen/generated/shared/c++/VideoInformation.hpp +112 -0
  446. package/nitrogen/generated/shared/c++/VideoOrientation.hpp +96 -0
  447. package/nitrogen/generated/shared/c++/VideoPlayerStatus.hpp +84 -0
  448. package/nitrogen/generated/shared/c++/onLoadData.hpp +100 -0
  449. package/nitrogen/generated/shared/c++/onLoadStartData.hpp +92 -0
  450. package/nitrogen/generated/shared/c++/onPlaybackStateChangeData.hpp +87 -0
  451. package/nitrogen/generated/shared/c++/onProgressData.hpp +91 -0
  452. package/nitrogen/generated/shared/c++/onVolumeChangeData.hpp +87 -0
  453. package/package.json +180 -0
  454. package/react-native.config.js +10 -0
  455. package/src/core/VideoPlayer.ts +357 -0
  456. package/src/core/VideoPlayerEvents.ts +146 -0
  457. package/src/core/hooks/useEvent.ts +24 -0
  458. package/src/core/hooks/useManagedInstance.ts +96 -0
  459. package/src/core/hooks/useVideoPlayer.ts +73 -0
  460. package/src/core/types/BufferConfig.ts +103 -0
  461. package/src/core/types/DrmParams.ts +65 -0
  462. package/src/core/types/Events.ts +283 -0
  463. package/src/core/types/IgnoreSilentSwitchMode.ts +1 -0
  464. package/src/core/types/MixAudioMode.ts +1 -0
  465. package/src/core/types/ResizeMode.ts +9 -0
  466. package/src/core/types/TextTrack.ts +22 -0
  467. package/src/core/types/Utils.ts +1 -0
  468. package/src/core/types/VideoConfig.ts +150 -0
  469. package/src/core/types/VideoError.ts +174 -0
  470. package/src/core/types/VideoInformation.ts +45 -0
  471. package/src/core/types/VideoOrientation.ts +8 -0
  472. package/src/core/types/VideoPlayerBase.ts +181 -0
  473. package/src/core/types/VideoPlayerSourceBase.ts +19 -0
  474. package/src/core/types/VideoPlayerStatus.ts +8 -0
  475. package/src/core/utils/playerFactory.ts +33 -0
  476. package/src/core/utils/sourceFactory.ts +171 -0
  477. package/src/core/video-view/NativeVideoView.tsx +18 -0
  478. package/src/core/video-view/VideoView.tsx +492 -0
  479. package/src/expo-plugins/@types.ts +37 -0
  480. package/src/expo-plugins/getPackageInfo.ts +23 -0
  481. package/src/expo-plugins/withAndroidExtensions.ts +46 -0
  482. package/src/expo-plugins/withAndroidNotificationControls.ts +43 -0
  483. package/src/expo-plugins/withAndroidPictureInPicture.ts +31 -0
  484. package/src/expo-plugins/withBackgroundAudio.ts +26 -0
  485. package/src/expo-plugins/withReactNativeVideo.ts +32 -0
  486. package/src/expo-plugins/writeToPodfile.ts +74 -0
  487. package/src/index.tsx +29 -0
  488. package/src/spec/fabric/VideoViewNativeComponent.ts +17 -0
  489. package/src/spec/nitro/VideoPlayer.nitro.ts +62 -0
  490. package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +207 -0
  491. package/src/spec/nitro/VideoPlayerSource.nitro.ts +18 -0
  492. package/src/spec/nitro/VideoViewViewManager.nitro.ts +92 -0
@@ -0,0 +1,196 @@
1
+ //
2
+ // VideoComponent.swift
3
+ // ReactNativeVideo
4
+ //
5
+ // Created by Krzysztof Moch on 30/09/2024.
6
+ // VLC backend rewrite — replaces AVPlayerViewController with a UIView that
7
+ // serves as the VLCMediaPlayer drawable.
8
+ //
9
+
10
+ import Foundation
11
+ import MobileVLCKit
12
+ import UIKit
13
+
14
+ @objc public class VideoComponentView: UIView {
15
+ public weak var player: HybridVideoPlayerSpec? = nil {
16
+ didSet {
17
+ attachCurrentPlayer()
18
+ }
19
+ }
20
+
21
+ var delegate: VideoViewDelegate?
22
+
23
+ /// The UIView VLC renders into. We keep this distinct from `self` so that
24
+ /// resize-mode adjustments only affect the video surface, not the
25
+ /// container's interaction targets / overlays.
26
+ private var drawableView: UIView!
27
+
28
+ private var _keepScreenAwake: Bool = false
29
+ var keepScreenAwake: Bool {
30
+ get { _keepScreenAwake }
31
+ set {
32
+ _keepScreenAwake = newValue
33
+ DispatchQueue.main.async {
34
+ UIApplication.shared.isIdleTimerDisabled = newValue
35
+ }
36
+ }
37
+ }
38
+
39
+ /// Controls overlay isn't supported on the VLC backend; the prop is
40
+ /// preserved for API compat but is a no-op.
41
+ public var controls: Bool = false
42
+
43
+ public var allowsPictureInPicturePlayback: Bool = false
44
+ public var autoEnterPictureInPicture: Bool = false
45
+
46
+ public var resizeMode: ResizeMode = .none {
47
+ didSet { applyResizeMode() }
48
+ }
49
+
50
+ /// Track if we need to send pending nitroId change event
51
+ private var pendingNitroIdEvent = false
52
+
53
+ @objc public var onNitroIdChange: (([String: Any]) -> Void)? {
54
+ didSet {
55
+ if pendingNitroIdEvent, let callback = onNitroIdChange {
56
+ callback(["nitroId": nitroId])
57
+ pendingNitroIdEvent = false
58
+ }
59
+ }
60
+ }
61
+
62
+ @objc public var nitroId: NSNumber = -1 {
63
+ didSet {
64
+ VideoComponentView.globalViewsMap.setObject(self, forKey: nitroId)
65
+ if let callback = onNitroIdChange {
66
+ callback(["nitroId": nitroId])
67
+ pendingNitroIdEvent = false
68
+ } else {
69
+ pendingNitroIdEvent = true
70
+ }
71
+ }
72
+ }
73
+
74
+ @objc public static var globalViewsMap: NSMapTable<NSNumber, VideoComponentView> =
75
+ .strongToWeakObjects()
76
+
77
+ @objc public override init(frame: CGRect) {
78
+ super.init(frame: frame)
79
+ backgroundColor = .black
80
+ VideoManager.shared.register(view: self)
81
+ setupDrawableView()
82
+ }
83
+
84
+ deinit {
85
+ VideoManager.shared.unregister(view: self)
86
+ }
87
+
88
+ @objc public required init?(coder: NSCoder) {
89
+ super.init(coder: coder)
90
+ backgroundColor = .black
91
+ setupDrawableView()
92
+ }
93
+
94
+ func setNitroId(nitroId: NSNumber) {
95
+ self.nitroId = nitroId
96
+ }
97
+
98
+ private func setupDrawableView() {
99
+ drawableView = UIView(frame: bounds)
100
+ drawableView.backgroundColor = .black
101
+ drawableView.translatesAutoresizingMaskIntoConstraints = false
102
+ addSubview(drawableView)
103
+ NSLayoutConstraint.activate([
104
+ drawableView.leadingAnchor.constraint(equalTo: leadingAnchor),
105
+ drawableView.trailingAnchor.constraint(equalTo: trailingAnchor),
106
+ drawableView.topAnchor.constraint(equalTo: topAnchor),
107
+ drawableView.bottomAnchor.constraint(equalTo: bottomAnchor),
108
+ ])
109
+ }
110
+
111
+ private func attachCurrentPlayer() {
112
+ guard let hybridPlayer = player as? HybridVideoPlayer else { return }
113
+ DispatchQueue.main.async { [weak self] in
114
+ guard let self = self else { return }
115
+ hybridPlayer.mediaPlayer.drawable = self.drawableView
116
+ self.applyResizeMode()
117
+ // `play()` may have run from JS before this view existed; VLC needs a
118
+ // drawable to complete HLS decode on iOS — kick playback again here.
119
+ hybridPlayer.notifyVideoHostViewAttached()
120
+ }
121
+ }
122
+
123
+ private func applyResizeMode() {
124
+ guard let hybridPlayer = player as? HybridVideoPlayer else { return }
125
+ let mediaPlayer = hybridPlayer.mediaPlayer
126
+ DispatchQueue.main.async { [weak self] in
127
+ guard let self = self else { return }
128
+ switch self.resizeMode {
129
+ case .contain, .none:
130
+ // VLC default: fit-aspect (letterbox). scaleFactor=0 = auto.
131
+ mediaPlayer.scaleFactor = 0
132
+ case .cover, .stretch:
133
+ // Both modes fill the view. We compute scaleFactor from the ratio
134
+ // of view-aspect to video-aspect so the smaller side scales up to
135
+ // hide the letterbox. With VLC there's no clean way to anisotropic-
136
+ // scale through public API without char* lifetime gymnastics, so
137
+ // .stretch is approximated by .cover (visually identical for any
138
+ // source whose aspect roughly matches the view).
139
+ let viewSize = self.bounds.size
140
+ let videoSize = mediaPlayer.videoSize
141
+ guard
142
+ viewSize.width > 0, viewSize.height > 0,
143
+ videoSize.width > 0, videoSize.height > 0
144
+ else {
145
+ mediaPlayer.scaleFactor = 0
146
+ return
147
+ }
148
+ let viewAspect = viewSize.width / viewSize.height
149
+ let videoAspect = videoSize.width / videoSize.height
150
+ let scale: CGFloat = viewAspect > videoAspect
151
+ ? viewAspect / videoAspect
152
+ : videoAspect / viewAspect
153
+ mediaPlayer.scaleFactor = Float(scale)
154
+ }
155
+ }
156
+ }
157
+
158
+ public override func willMove(toSuperview newSuperview: UIView?) {
159
+ super.willMove(toSuperview: newSuperview)
160
+ if newSuperview == nil {
161
+ if keepScreenAwake { keepScreenAwake = false }
162
+ } else if _keepScreenAwake {
163
+ keepScreenAwake = true
164
+ }
165
+ }
166
+
167
+ public override func layoutSubviews() {
168
+ super.layoutSubviews()
169
+ // Reapply resize mode whenever bounds change so cover/stretch math stays
170
+ // in sync with the new aspect ratio.
171
+ applyResizeMode()
172
+ }
173
+
174
+ // MARK: - Fullscreen / PiP — not supported on the VLC backend
175
+
176
+ public func enterFullscreen() throws {
177
+ throw VideoViewError.viewIsDeallocated.error()
178
+ }
179
+
180
+ public func exitFullscreen() throws {
181
+ throw VideoViewError.viewIsDeallocated.error()
182
+ }
183
+
184
+ public func startPictureInPicture() throws {
185
+ throw VideoViewError.pictureInPictureNotSupported.error()
186
+ }
187
+
188
+ public func stopPictureInPicture() throws {
189
+ throw VideoViewError.pictureInPictureNotSupported.error()
190
+ }
191
+
192
+ // MARK: - Fullscreen lifecycle hooks (kept for API compat)
193
+
194
+ func onEnterFullscreen() { /* no-op */ }
195
+ func onExitFullscreen() { /* no-op */ }
196
+ }
@@ -0,0 +1,48 @@
1
+ //
2
+ // VideoComponentViewObserver.swift
3
+ // ReactNativeVideo
4
+ //
5
+ // VLC backend rewrite — AVPlayerViewController is gone, so the observer
6
+ // collapses into a thin delegate proxy that just forwards lifecycle hooks
7
+ // the JS layer expects (PiP/fullscreen become inert under VLC).
8
+ //
9
+
10
+ import Foundation
11
+ import UIKit
12
+
13
+ protocol VideoComponentViewDelegate: AnyObject {
14
+ func onPictureInPictureChange(_ isActive: Bool)
15
+ func onFullscreenChange(_ isActive: Bool)
16
+ func willEnterFullscreen()
17
+ func willExitFullscreen()
18
+ func willEnterPictureInPicture()
19
+ func willExitPictureInPicture()
20
+ func onReadyToDisplay()
21
+ }
22
+
23
+ final class VideoViewDelegate: NSObject, VideoComponentViewDelegate {
24
+ weak var viewManager: HybridVideoViewViewManager?
25
+
26
+ init(viewManager: HybridVideoViewViewManager) {
27
+ self.viewManager = viewManager
28
+ }
29
+
30
+ func onPictureInPictureChange(_ isActive: Bool) {
31
+ viewManager?.onPictureInPictureChange(isActive)
32
+ }
33
+
34
+ func onFullscreenChange(_ isActive: Bool) {
35
+ viewManager?.onFullscreenChange(isActive)
36
+ }
37
+
38
+ func willEnterFullscreen() { viewManager?.willEnterFullscreen() }
39
+ func willExitFullscreen() { viewManager?.willExitFullscreen() }
40
+ func willEnterPictureInPicture() { viewManager?.willEnterPictureInPicture() }
41
+ func willExitPictureInPicture() { viewManager?.willExitPictureInPicture() }
42
+
43
+ func onReadyToDisplay() {
44
+ if let player = viewManager?.player as? HybridVideoPlayer {
45
+ player._eventEmitter?.onReadyToDisplay()
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { NitroModules } from 'react-native-nitro-modules';
5
+ import { tryParseNativeVideoError, VideoRuntimeError } from "./types/VideoError.js";
6
+ import { createPlayer } from "./utils/playerFactory.js";
7
+ import { createSource } from "./utils/sourceFactory.js";
8
+ import { VideoPlayerEvents } from "./VideoPlayerEvents.js";
9
+ class VideoPlayer extends VideoPlayerEvents {
10
+ get player() {
11
+ if (this._player === undefined) {
12
+ throw new VideoRuntimeError('player/released', "You can't access player after it's released");
13
+ }
14
+ return this._player;
15
+ }
16
+ constructor(source) {
17
+ const hybridSource = createSource(source);
18
+ const player = createPlayer(hybridSource);
19
+
20
+ // Initialize events
21
+ super(player.eventEmitter);
22
+ this._player = player;
23
+ this._lastObservedStatus = player.status;
24
+ this._statusErrorSubscription = player.eventEmitter.addOnStatusChangeListener(status => {
25
+ if (status === 'error' && this._lastObservedStatus !== 'error') {
26
+ this.triggerJSEvent('onError', new VideoRuntimeError('unknown/unknown', 'Playback failed (native player reported error status).'));
27
+ }
28
+ this._lastObservedStatus = status;
29
+ });
30
+ }
31
+
32
+ /**
33
+ * Releases the player's native resources and releases native state.
34
+ * @internal
35
+ */
36
+ __destroy() {
37
+ if (this._player === undefined) return;
38
+ this._statusErrorSubscription?.remove();
39
+ this._statusErrorSubscription = undefined;
40
+ this._lastObservedStatus = undefined;
41
+ this.clearAllEvents();
42
+ try {
43
+ this.player.release();
44
+ } catch (error) {
45
+ // Best effort cleanup: teardown must never crash app unmount.
46
+ console.error('Failed to cleanup native player resources', error);
47
+ }
48
+
49
+ // We leave hybrid object to be cleaned up by garbage collector
50
+ // So we update memory size to ensure that memory is released
51
+ // when needed
52
+ this.updateMemorySize();
53
+
54
+ // We wait for 5s to let late events that were triggered before release to be processed
55
+ if (this._releaseTimeout !== undefined) {
56
+ clearTimeout(this._releaseTimeout);
57
+ }
58
+ this._releaseTimeout = setTimeout(() => {
59
+ this._player = undefined;
60
+ this._releaseTimeout = undefined;
61
+ }, 5000);
62
+ }
63
+
64
+ /**
65
+ * Returns the native (hybrid) player instance.
66
+ * Should not be used outside of the module.
67
+ * @internal
68
+ */
69
+ __getNativePlayer() {
70
+ return this.player;
71
+ }
72
+
73
+ /**
74
+ * Handles parsing native errors to VideoRuntimeError and calling onError if provided
75
+ * @internal
76
+ */
77
+ throwError(error) {
78
+ const parsedError = tryParseNativeVideoError(error);
79
+ if (parsedError instanceof VideoRuntimeError && this.triggerJSEvent('onError', parsedError)) {
80
+ // We don't throw errors if onError is provided
81
+ return;
82
+ }
83
+ throw parsedError;
84
+ }
85
+
86
+ /**
87
+ * Updates the memory size of the player and its source. Should be called after any operation that changes the memory size of the player or its source.
88
+ * @internal
89
+ */
90
+ updateMemorySize() {
91
+ NitroModules.updateMemorySize(this.player);
92
+ NitroModules.updateMemorySize(this.player.source);
93
+ }
94
+
95
+ /**
96
+ * Wraps a promise to try parsing native errors to VideoRuntimeError
97
+ * @internal
98
+ */
99
+ wrapPromise(promise) {
100
+ return new Promise((resolve, reject) => {
101
+ promise.then(resolve).catch(error => {
102
+ reject(this.throwError(error));
103
+ });
104
+ });
105
+ }
106
+
107
+ // Source
108
+ get source() {
109
+ return this.player.source;
110
+ }
111
+
112
+ // Status
113
+ get status() {
114
+ return this.player.status;
115
+ }
116
+
117
+ // Duration
118
+ get duration() {
119
+ return this.player.duration;
120
+ }
121
+
122
+ // Volume
123
+ get volume() {
124
+ return this.player.volume;
125
+ }
126
+ set volume(value) {
127
+ this.player.volume = value;
128
+ }
129
+
130
+ // Current Time
131
+ get currentTime() {
132
+ return this.player.currentTime;
133
+ }
134
+ set currentTime(value) {
135
+ this.player.currentTime = value;
136
+ }
137
+
138
+ // Muted
139
+ get muted() {
140
+ return this.player.muted;
141
+ }
142
+ set muted(value) {
143
+ this.player.muted = value;
144
+ }
145
+
146
+ // Loop
147
+ get loop() {
148
+ return this.player.loop;
149
+ }
150
+ set loop(value) {
151
+ this.player.loop = value;
152
+ }
153
+
154
+ // Rate
155
+ get rate() {
156
+ return this.player.rate;
157
+ }
158
+ set rate(value) {
159
+ this.player.rate = value;
160
+ }
161
+
162
+ // Mix Audio Mode
163
+ get mixAudioMode() {
164
+ return this.player.mixAudioMode;
165
+ }
166
+ set mixAudioMode(value) {
167
+ this.player.mixAudioMode = value;
168
+ }
169
+
170
+ // Ignore Silent Switch Mode
171
+ get ignoreSilentSwitchMode() {
172
+ return this.player.ignoreSilentSwitchMode;
173
+ }
174
+ set ignoreSilentSwitchMode(value) {
175
+ if (__DEV__ && !['ios'].includes(Platform.OS)) {
176
+ console.warn('ignoreSilentSwitchMode is not supported on this platform, it wont have any effect');
177
+ }
178
+ this.player.ignoreSilentSwitchMode = value;
179
+ }
180
+
181
+ // Play In Background
182
+ get playInBackground() {
183
+ return this.player.playInBackground;
184
+ }
185
+ set playInBackground(value) {
186
+ this.player.playInBackground = value;
187
+ }
188
+
189
+ // Play When Inactive
190
+ get playWhenInactive() {
191
+ return this.player.playWhenInactive;
192
+ }
193
+ set playWhenInactive(value) {
194
+ this.player.playWhenInactive = value;
195
+ }
196
+
197
+ // Is Playing
198
+ get isPlaying() {
199
+ return this.player.isPlaying;
200
+ }
201
+ get showNotificationControls() {
202
+ return this.player.showNotificationControls;
203
+ }
204
+ set showNotificationControls(value) {
205
+ this.player.showNotificationControls = value;
206
+ }
207
+ async initialize() {
208
+ await this.wrapPromise(this.player.initialize());
209
+ this.updateMemorySize();
210
+ }
211
+ async preload() {
212
+ await this.wrapPromise(this.player.preload());
213
+ this.updateMemorySize();
214
+ }
215
+
216
+ /**
217
+ * Releases the player's native resources and releases native state.
218
+ * After calling this method, the player is no longer usable.
219
+ * Accessing any properties or methods of the player after calling this method will throw an error.
220
+ * If you want to clean player resource use `replaceSourceAsync` with `null` instead.
221
+ */
222
+ release() {
223
+ this.__destroy();
224
+ }
225
+ play() {
226
+ try {
227
+ this.player.play();
228
+ } catch (error) {
229
+ this.throwError(error);
230
+ }
231
+ }
232
+ pause() {
233
+ try {
234
+ this.player.pause();
235
+ } catch (error) {
236
+ this.throwError(error);
237
+ }
238
+ }
239
+ seekBy(time) {
240
+ try {
241
+ this.player.seekBy(time);
242
+ } catch (error) {
243
+ this.throwError(error);
244
+ }
245
+ }
246
+ seekTo(time) {
247
+ try {
248
+ this.player.seekTo(time);
249
+ } catch (error) {
250
+ this.throwError(error);
251
+ }
252
+ }
253
+ async replaceSourceAsync(source) {
254
+ this.updateMemorySize();
255
+ await this.wrapPromise(this.player.replaceSourceAsync(source === null ? null : createSource(source)));
256
+ this.updateMemorySize();
257
+ }
258
+
259
+ // Text Track Management
260
+ getAvailableTextTracks() {
261
+ try {
262
+ return this.player.getAvailableTextTracks();
263
+ } catch (error) {
264
+ this.throwError(error);
265
+ return [];
266
+ }
267
+ }
268
+ selectTextTrack(textTrack) {
269
+ try {
270
+ this.player.selectTextTrack(textTrack);
271
+ } catch (error) {
272
+ this.throwError(error);
273
+ }
274
+ }
275
+
276
+ // Selected Text Track
277
+ get selectedTrack() {
278
+ return this.player.selectedTrack;
279
+ }
280
+
281
+ // Frame Capture
282
+ async captureFrame() {
283
+ return this.wrapPromise(this.player.captureFrame());
284
+ }
285
+ }
286
+ export { VideoPlayer };
287
+ //# sourceMappingURL=VideoPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","NitroModules","tryParseNativeVideoError","VideoRuntimeError","createPlayer","createSource","VideoPlayerEvents","VideoPlayer","player","_player","undefined","constructor","source","hybridSource","eventEmitter","_lastObservedStatus","status","_statusErrorSubscription","addOnStatusChangeListener","triggerJSEvent","__destroy","remove","clearAllEvents","release","error","console","updateMemorySize","_releaseTimeout","clearTimeout","setTimeout","__getNativePlayer","throwError","parsedError","wrapPromise","promise","Promise","resolve","reject","then","catch","duration","volume","value","currentTime","muted","loop","rate","mixAudioMode","ignoreSilentSwitchMode","__DEV__","includes","OS","warn","playInBackground","playWhenInactive","isPlaying","showNotificationControls","initialize","preload","play","pause","seekBy","time","seekTo","replaceSourceAsync","getAvailableTextTracks","selectTextTrack","textTrack","selectedTrack","captureFrame"],"sourceRoot":"../../../src","sources":["core/VideoPlayer.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ import { ALL_PLAYER_EVENTS } from "./types/Events.js";
4
+ export class VideoPlayerEvents {
5
+ jsEventListeners = {};
6
+ supportedEvents = ALL_PLAYER_EVENTS;
7
+ constructor(eventEmitter) {
8
+ this.eventEmitter = eventEmitter;
9
+ }
10
+ triggerJSEvent(event, ...params) {
11
+ if (!this.jsEventListeners[event]) return false;
12
+ this.jsEventListeners[event]?.forEach(fn => fn(...params));
13
+ return true;
14
+ }
15
+
16
+ /**
17
+ * Adds a listener for a player event.
18
+ * @throw Error if the event is not supported.
19
+ * @param event - The event to add a listener for.
20
+ * @param callback - The callback to call when the event is triggered.
21
+ * @returns A subscription object that can be used to remove the listener.
22
+ */
23
+ addEventListener(event, callback) {
24
+ switch (event) {
25
+ // ----------------- JS Events -----------------
26
+ case 'onError':
27
+ this.jsEventListeners.onError ??= new Set();
28
+ this.jsEventListeners.onError.add(callback);
29
+ return {
30
+ remove: () => this.jsEventListeners.onError?.delete(callback)
31
+ };
32
+ // ----------------- Native Events -----------------
33
+ case 'onAudioBecomingNoisy':
34
+ return this.eventEmitter.addOnAudioBecomingNoisyListener(callback);
35
+ case 'onAudioFocusChange':
36
+ return this.eventEmitter.addOnAudioFocusChangeListener(callback);
37
+ case 'onBandwidthUpdate':
38
+ return this.eventEmitter.addOnBandwidthUpdateListener(callback);
39
+ case 'onBuffer':
40
+ return this.eventEmitter.addOnBufferListener(callback);
41
+ case 'onControlsVisibleChange':
42
+ return this.eventEmitter.addOnControlsVisibleChangeListener(callback);
43
+ case 'onEnd':
44
+ return this.eventEmitter.addOnEndListener(callback);
45
+ case 'onExternalPlaybackChange':
46
+ return this.eventEmitter.addOnExternalPlaybackChangeListener(callback);
47
+ case 'onLoad':
48
+ return this.eventEmitter.addOnLoadListener(callback);
49
+ case 'onLoadStart':
50
+ return this.eventEmitter.addOnLoadStartListener(callback);
51
+ case 'onPlaybackStateChange':
52
+ return this.eventEmitter.addOnPlaybackStateChangeListener(callback);
53
+ case 'onPlaybackRateChange':
54
+ return this.eventEmitter.addOnPlaybackRateChangeListener(callback);
55
+ case 'onProgress':
56
+ return this.eventEmitter.addOnProgressListener(callback);
57
+ case 'onReadyToDisplay':
58
+ return this.eventEmitter.addOnReadyToDisplayListener(callback);
59
+ case 'onSeek':
60
+ return this.eventEmitter.addOnSeekListener(callback);
61
+ case 'onTimedMetadata':
62
+ return this.eventEmitter.addOnTimedMetadataListener(callback);
63
+ case 'onTextTrackDataChanged':
64
+ return this.eventEmitter.addOnTextTrackDataChangedListener(callback);
65
+ case 'onTrackChange':
66
+ return this.eventEmitter.addOnTrackChangeListener(callback);
67
+ case 'onVolumeChange':
68
+ return this.eventEmitter.addOnVolumeChangeListener(callback);
69
+ case 'onStatusChange':
70
+ return this.eventEmitter.addOnStatusChangeListener(callback);
71
+ default:
72
+ throw new Error(`[Unified Player] Unsupported event: ${event}`);
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Clears all events from the event emitter.
78
+ */
79
+ clearAllEvents() {
80
+ this.jsEventListeners = {};
81
+ this.eventEmitter.clearAllListeners();
82
+ }
83
+ }
84
+ //# sourceMappingURL=VideoPlayerEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ALL_PLAYER_EVENTS","VideoPlayerEvents","jsEventListeners","supportedEvents","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnTrackChangeListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { useEffect } from 'react';
4
+ /**
5
+ * Attaches an event listener to a `VideoPlayer` instance for a specified event.
6
+ *
7
+ * @param player - The player to attach the event to
8
+ * @param event - The name of the event to attach the callback to
9
+ * @param callback - The callback for the event
10
+ */
11
+ export const useEvent = (player, event, callback) => {
12
+ useEffect(() => {
13
+ const subscription = player.addEventListener(event, callback);
14
+ return () => {
15
+ subscription.remove();
16
+ };
17
+ }, [player, event, callback]);
18
+ };
19
+ //# sourceMappingURL=useEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useEvent","player","event","callback","subscription","addEventListener","remove"],"sourceRoot":"../../../../src","sources":["core/hooks/useEvent.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGA,CACtBC,MAAmB,EACnBC,KAAQ,EACRC,QAA4B,KACzB;EACHJ,SAAS,CAAC,MAAM;IACd,MAAMK,YAAY,GAAGH,MAAM,CAACI,gBAAgB,CAACH,KAAK,EAAEC,QAAQ,CAAC;IAE7D,OAAO,MAAM;MACXC,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACL,MAAM,EAAEC,KAAK,EAAEC,QAAQ,CAAC,CAAC;AAC/B,CAAC","ignoreList":[]}