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.
- package/.eslintignore +11 -0
- package/.eslintrc.js +7 -0
- package/.gitattributes +3 -0
- package/.prettierignore +11 -0
- package/.ruby-version +1 -0
- package/.swiftlint.yml +171 -0
- package/Brewfile +2 -0
- package/CHANGELOG.md +627 -0
- package/CONTRIBUTING.md +255 -0
- package/TODO.md +0 -0
- package/android/.editorconfig +8 -0
- package/android/build.gradle +78 -75
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/gradle.properties +1 -0
- package/android/gradlew +248 -0
- package/android/gradlew.bat +92 -0
- package/android/ktlint.gradle +31 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/ActivityLifecycleListener.kt +51 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinCastManagerModule.kt +32 -55
- package/android/src/main/java/com/bitmovin/player/reactnative/BufferModule.kt +33 -45
- package/android/src/main/java/com/bitmovin/player/reactnative/CustomMessageHandlerModule.kt +84 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/DebugModule.kt +6 -14
- package/android/src/main/java/com/bitmovin/player/reactnative/DecoderConfigModule.kt +89 -44
- package/android/src/main/java/com/bitmovin/player/reactnative/DrmModule.kt +80 -99
- package/android/src/main/java/com/bitmovin/player/reactnative/EventSubscription.kt +22 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/FullscreenHandlerModule.kt +100 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +5 -5
- package/android/src/main/java/com/bitmovin/player/reactnative/NetworkModule.kt +98 -56
- package/android/src/main/java/com/bitmovin/player/reactnative/OfflineModule.kt +132 -186
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerAnalyticsModule.kt +37 -36
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +252 -528
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerPackage.kt +11 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerView.kt +558 -213
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewManager.kt +99 -286
- package/android/src/main/java/com/bitmovin/player/reactnative/ResultWaiter.kt +58 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/SourceModule.kt +77 -151
- package/android/src/main/java/com/bitmovin/player/reactnative/Types.kt +44 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/UuidModule.kt +12 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +296 -456
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ListExtension.kt +89 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/MapExtension.kt +95 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/offline/OfflineContentManagerBridge.kt +20 -52
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerBridge.kt +10 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerBridge.kt +4 -9
- package/app.plugin.js +21 -0
- package/build/BitmovinPlayerReactNative.types.d.ts +18 -0
- package/build/BitmovinPlayerReactNative.types.d.ts.map +1 -0
- package/build/BitmovinPlayerReactNative.types.js +2 -0
- package/build/BitmovinPlayerReactNative.types.js.map +1 -0
- package/build/adaptationConfig.d.ts +18 -0
- package/build/adaptationConfig.d.ts.map +1 -0
- package/build/adaptationConfig.js +2 -0
- package/build/adaptationConfig.js.map +1 -0
- package/build/advertising.d.ts +175 -0
- package/build/advertising.d.ts.map +1 -0
- package/build/advertising.js +37 -0
- package/build/advertising.js.map +1 -0
- package/build/analytics/config.d.ts +194 -0
- package/build/analytics/config.d.ts.map +1 -0
- package/build/analytics/config.js +2 -0
- package/build/analytics/config.js.map +1 -0
- package/build/analytics/index.d.ts +3 -0
- package/build/analytics/index.d.ts.map +1 -0
- package/build/analytics/index.js +3 -0
- package/build/analytics/index.js.map +1 -0
- package/build/analytics/player.d.ts +24 -0
- package/build/analytics/player.d.ts.map +1 -0
- package/build/analytics/player.js +30 -0
- package/build/analytics/player.js.map +1 -0
- package/build/analytics/playerAnalyticsModule.d.ts +13 -0
- package/build/analytics/playerAnalyticsModule.d.ts.map +1 -0
- package/build/analytics/playerAnalyticsModule.js +3 -0
- package/build/analytics/playerAnalyticsModule.js.map +1 -0
- package/build/audioSession.d.ts +33 -0
- package/build/audioSession.d.ts.map +1 -0
- package/build/audioSession.js +21 -0
- package/build/audioSession.js.map +1 -0
- package/build/audioTrack.d.ts +39 -0
- package/build/audioTrack.d.ts.map +1 -0
- package/build/audioTrack.js +2 -0
- package/build/audioTrack.js.map +1 -0
- package/build/bitmovinCastManager.d.ts +58 -0
- package/build/bitmovinCastManager.d.ts.map +1 -0
- package/build/bitmovinCastManager.js +64 -0
- package/build/bitmovinCastManager.js.map +1 -0
- package/build/bufferApi.d.ts +85 -0
- package/build/bufferApi.d.ts.map +1 -0
- package/build/bufferApi.js +60 -0
- package/build/bufferApi.js.map +1 -0
- package/build/bufferConfig.d.ts +42 -0
- package/build/bufferConfig.d.ts.map +1 -0
- package/build/bufferConfig.js +2 -0
- package/build/bufferConfig.js.map +1 -0
- package/build/components/PlayerView/events.d.ts +310 -0
- package/build/components/PlayerView/events.d.ts.map +1 -0
- package/build/components/PlayerView/events.js +2 -0
- package/build/components/PlayerView/events.js.map +1 -0
- package/build/components/PlayerView/index.d.ts +10 -0
- package/build/components/PlayerView/index.d.ts.map +1 -0
- package/build/components/PlayerView/index.js +72 -0
- package/build/components/PlayerView/index.js.map +1 -0
- package/build/components/PlayerView/native.d.ts +30 -0
- package/build/components/PlayerView/native.d.ts.map +1 -0
- package/build/components/PlayerView/native.js +6 -0
- package/build/components/PlayerView/native.js.map +1 -0
- package/build/components/PlayerView/nativeEvents.d.ts +437 -0
- package/build/components/PlayerView/nativeEvents.d.ts.map +1 -0
- package/build/components/PlayerView/nativeEvents.js +2 -0
- package/build/components/PlayerView/nativeEvents.js.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts +22 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.js +2 -0
- package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -0
- package/build/components/PlayerView/playerViewConfig.d.ts +111 -0
- package/build/components/PlayerView/playerViewConfig.d.ts.map +1 -0
- package/build/components/PlayerView/playerViewConfig.js +51 -0
- package/build/components/PlayerView/playerViewConfig.js.map +1 -0
- package/build/components/PlayerView/properties.d.ts +61 -0
- package/build/components/PlayerView/properties.d.ts.map +1 -0
- package/build/components/PlayerView/properties.js +2 -0
- package/build/components/PlayerView/properties.js.map +1 -0
- package/build/components/index.d.ts +5 -0
- package/build/components/index.d.ts.map +1 -0
- package/build/components/index.js +5 -0
- package/build/components/index.js.map +1 -0
- package/build/debug.d.ts +46 -0
- package/build/debug.d.ts.map +1 -0
- package/build/debug.js +52 -0
- package/build/debug.js.map +1 -0
- package/build/decoder/decoderConfig.d.ts +96 -0
- package/build/decoder/decoderConfig.d.ts.map +1 -0
- package/build/decoder/decoderConfig.js +6 -0
- package/build/decoder/decoderConfig.js.map +1 -0
- package/build/decoder/decoderConfigModule.d.ts +14 -0
- package/build/decoder/decoderConfigModule.d.ts.map +1 -0
- package/build/decoder/decoderConfigModule.js +31 -0
- package/build/decoder/decoderConfigModule.js.map +1 -0
- package/build/decoder/index.d.ts +26 -0
- package/build/decoder/index.d.ts.map +1 -0
- package/build/decoder/index.js +50 -0
- package/build/decoder/index.js.map +1 -0
- package/build/drm/drmModule.d.ts +55 -0
- package/build/drm/drmModule.d.ts.map +1 -0
- package/build/drm/drmModule.js +3 -0
- package/build/drm/drmModule.js.map +1 -0
- package/build/drm/fairplayConfig.d.ts +91 -0
- package/build/drm/fairplayConfig.d.ts.map +1 -0
- package/build/drm/fairplayConfig.js +2 -0
- package/build/drm/fairplayConfig.js.map +1 -0
- package/build/drm/index.d.ts +112 -0
- package/build/drm/index.d.ts.map +1 -0
- package/build/drm/index.js +191 -0
- package/build/drm/index.js.map +1 -0
- package/build/drm/widevineConfig.d.ts +58 -0
- package/build/drm/widevineConfig.d.ts.map +1 -0
- package/build/drm/widevineConfig.js +2 -0
- package/build/drm/widevineConfig.js.map +1 -0
- package/build/events.d.ts +692 -0
- package/build/events.d.ts.map +1 -0
- package/build/events.js +2 -0
- package/build/events.js.map +1 -0
- package/build/hooks/index.d.ts +2 -0
- package/build/hooks/index.d.ts.map +1 -0
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -0
- package/build/hooks/usePlayer.d.ts +8 -0
- package/build/hooks/usePlayer.d.ts.map +1 -0
- package/build/hooks/usePlayer.js +10 -0
- package/build/hooks/usePlayer.js.map +1 -0
- package/build/hooks/useProxy.d.ts +18 -0
- package/build/hooks/useProxy.d.ts.map +1 -0
- package/build/hooks/useProxy.js +16 -0
- package/build/hooks/useProxy.js.map +1 -0
- package/build/index.d.ts +32 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +32 -0
- package/build/index.js.map +1 -0
- package/build/liveConfig.d.ts +13 -0
- package/build/liveConfig.d.ts.map +1 -0
- package/build/liveConfig.js +2 -0
- package/build/liveConfig.js.map +1 -0
- package/build/media.d.ts +85 -0
- package/build/media.d.ts.map +1 -0
- package/build/media.js +2 -0
- package/build/media.js.map +1 -0
- package/build/mediaControlConfig.d.ts +62 -0
- package/build/mediaControlConfig.d.ts.map +1 -0
- package/build/mediaControlConfig.js +2 -0
- package/build/mediaControlConfig.js.map +1 -0
- package/build/mediaTrackRole.d.ts +28 -0
- package/build/mediaTrackRole.d.ts.map +1 -0
- package/build/mediaTrackRole.js +2 -0
- package/build/mediaTrackRole.js.map +1 -0
- package/build/modules/AudioSessionModule.d.ts +8 -0
- package/build/modules/AudioSessionModule.d.ts.map +1 -0
- package/build/modules/AudioSessionModule.js +7 -0
- package/build/modules/AudioSessionModule.js.map +1 -0
- package/build/modules/BitmovinCastManagerModule.d.ts +11 -0
- package/build/modules/BitmovinCastManagerModule.d.ts.map +1 -0
- package/build/modules/BitmovinCastManagerModule.js +3 -0
- package/build/modules/BitmovinCastManagerModule.js.map +1 -0
- package/build/modules/BufferModule.d.ts +16 -0
- package/build/modules/BufferModule.d.ts.map +1 -0
- package/build/modules/BufferModule.js +3 -0
- package/build/modules/BufferModule.js.map +1 -0
- package/build/modules/DebugModule.d.ts +8 -0
- package/build/modules/DebugModule.d.ts.map +1 -0
- package/build/modules/DebugModule.js +3 -0
- package/build/modules/DebugModule.js.map +1 -0
- package/build/modules/PlayerModule.d.ts +188 -0
- package/build/modules/PlayerModule.d.ts.map +1 -0
- package/build/modules/PlayerModule.js +3 -0
- package/build/modules/PlayerModule.js.map +1 -0
- package/build/modules/SourceModule.d.ts +51 -0
- package/build/modules/SourceModule.d.ts.map +1 -0
- package/build/modules/SourceModule.js +3 -0
- package/build/modules/SourceModule.js.map +1 -0
- package/build/modules/UuidModule.d.ts +8 -0
- package/build/modules/UuidModule.d.ts.map +1 -0
- package/build/modules/UuidModule.js +3 -0
- package/build/modules/UuidModule.js.map +1 -0
- package/build/nativeInstance.d.ts +49 -0
- package/build/nativeInstance.d.ts.map +1 -0
- package/build/nativeInstance.js +20 -0
- package/build/nativeInstance.js.map +1 -0
- package/build/network/index.d.ts +50 -0
- package/build/network/index.d.ts.map +1 -0
- package/build/network/index.js +102 -0
- package/build/network/index.js.map +1 -0
- package/build/network/networkConfig.d.ts +151 -0
- package/build/network/networkConfig.d.ts.map +1 -0
- package/build/network/networkConfig.js +21 -0
- package/build/network/networkConfig.js.map +1 -0
- package/build/network/networkModule.d.ts +29 -0
- package/build/network/networkModule.d.ts.map +1 -0
- package/build/network/networkModule.js +3 -0
- package/build/network/networkModule.js.map +1 -0
- package/build/offline/index.d.ts +8 -0
- package/build/offline/index.d.ts.map +1 -0
- package/build/offline/index.js +8 -0
- package/build/offline/index.js.map +1 -0
- package/build/offline/offlineContentConfig.d.ts +18 -0
- package/build/offline/offlineContentConfig.d.ts.map +1 -0
- package/build/offline/offlineContentConfig.js +2 -0
- package/build/offline/offlineContentConfig.js.map +1 -0
- package/build/offline/offlineContentManager.d.ts +90 -0
- package/build/offline/offlineContentManager.d.ts.map +1 -0
- package/build/offline/offlineContentManager.js +177 -0
- package/build/offline/offlineContentManager.js.map +1 -0
- package/build/offline/offlineContentManagerListener.d.ts +174 -0
- package/build/offline/offlineContentManagerListener.d.ts.map +1 -0
- package/build/offline/offlineContentManagerListener.js +17 -0
- package/build/offline/offlineContentManagerListener.js.map +1 -0
- package/build/offline/offlineContentOptions.d.ts +29 -0
- package/build/offline/offlineContentOptions.d.ts.map +1 -0
- package/build/offline/offlineContentOptions.js +2 -0
- package/build/offline/offlineContentOptions.js.map +1 -0
- package/build/offline/offlineDownloadRequest.d.ts +19 -0
- package/build/offline/offlineDownloadRequest.d.ts.map +1 -0
- package/build/offline/offlineDownloadRequest.js +2 -0
- package/build/offline/offlineDownloadRequest.js.map +1 -0
- package/build/offline/offlineModule.d.ts +32 -0
- package/build/offline/offlineModule.d.ts.map +1 -0
- package/build/offline/offlineModule.js +3 -0
- package/build/offline/offlineModule.js.map +1 -0
- package/build/offline/offlineSourceOptions.d.ts +12 -0
- package/build/offline/offlineSourceOptions.d.ts.map +1 -0
- package/build/offline/offlineSourceOptions.js +2 -0
- package/build/offline/offlineSourceOptions.js.map +1 -0
- package/build/offline/offlineState.d.ts +23 -0
- package/build/offline/offlineState.d.ts.map +1 -0
- package/build/offline/offlineState.js +24 -0
- package/build/offline/offlineState.js.map +1 -0
- package/build/playbackConfig.d.ts +88 -0
- package/build/playbackConfig.d.ts.map +1 -0
- package/build/playbackConfig.js +2 -0
- package/build/playbackConfig.js.map +1 -0
- package/build/player.d.ts +308 -0
- package/build/player.d.ts.map +1 -0
- package/build/player.js +445 -0
- package/build/player.js.map +1 -0
- package/build/playerConfig.d.ts +83 -0
- package/build/playerConfig.d.ts.map +1 -0
- package/build/playerConfig.js +2 -0
- package/build/playerConfig.js.map +1 -0
- package/build/remoteControlConfig.d.ts +38 -0
- package/build/remoteControlConfig.d.ts.map +1 -0
- package/build/remoteControlConfig.js +2 -0
- package/build/remoteControlConfig.js.map +1 -0
- package/build/source.d.ts +216 -0
- package/build/source.d.ts.map +1 -0
- package/build/source.js +167 -0
- package/build/source.js.map +1 -0
- package/build/styleConfig.d.ts +120 -0
- package/build/styleConfig.d.ts.map +1 -0
- package/build/styleConfig.js +38 -0
- package/build/styleConfig.js.map +1 -0
- package/build/subtitleFormat.d.ts +27 -0
- package/build/subtitleFormat.d.ts.map +1 -0
- package/build/subtitleFormat.js +28 -0
- package/build/subtitleFormat.js.map +1 -0
- package/build/subtitleTrack.d.ts +55 -0
- package/build/subtitleTrack.d.ts.map +1 -0
- package/build/subtitleTrack.js +2 -0
- package/build/subtitleTrack.js.map +1 -0
- package/build/thumbnail.d.ts +38 -0
- package/build/thumbnail.d.ts.map +1 -0
- package/build/thumbnail.js +2 -0
- package/build/thumbnail.js.map +1 -0
- package/build/tweaksConfig.d.ts +197 -0
- package/build/tweaksConfig.d.ts.map +1 -0
- package/build/tweaksConfig.js +25 -0
- package/build/tweaksConfig.js.map +1 -0
- package/build/ui/customMessageHandlerModule.d.ts +27 -0
- package/build/ui/customMessageHandlerModule.d.ts.map +1 -0
- package/build/ui/customMessageHandlerModule.js +3 -0
- package/build/ui/customMessageHandlerModule.js.map +1 -0
- package/build/ui/custommessagehandler.d.ts +56 -0
- package/build/ui/custommessagehandler.d.ts.map +1 -0
- package/build/ui/custommessagehandler.js +54 -0
- package/build/ui/custommessagehandler.js.map +1 -0
- package/build/ui/custommessagehandlerbridge.d.ts +33 -0
- package/build/ui/custommessagehandlerbridge.d.ts.map +1 -0
- package/build/ui/custommessagehandlerbridge.js +72 -0
- package/build/ui/custommessagehandlerbridge.js.map +1 -0
- package/build/ui/custommessagesender.d.ts +5 -0
- package/build/ui/custommessagesender.d.ts.map +1 -0
- package/build/ui/custommessagesender.js +2 -0
- package/build/ui/custommessagesender.js.map +1 -0
- package/build/ui/fullscreenHandlerModule.d.ts +20 -0
- package/build/ui/fullscreenHandlerModule.d.ts.map +1 -0
- package/build/ui/fullscreenHandlerModule.js +3 -0
- package/build/ui/fullscreenHandlerModule.js.map +1 -0
- package/build/ui/fullscreenhandler.d.ts +18 -0
- package/build/ui/fullscreenhandler.d.ts.map +1 -0
- package/build/ui/fullscreenhandler.js +2 -0
- package/build/ui/fullscreenhandler.js.map +1 -0
- package/build/ui/fullscreenhandlerbridge.d.ts +26 -0
- package/build/ui/fullscreenhandlerbridge.d.ts.map +1 -0
- package/build/ui/fullscreenhandlerbridge.js +67 -0
- package/build/ui/fullscreenhandlerbridge.js.map +1 -0
- package/build/ui/index.d.ts +3 -0
- package/build/ui/index.d.ts.map +1 -0
- package/build/ui/index.js +3 -0
- package/build/ui/index.js.map +1 -0
- package/expo-module.config.json +40 -0
- package/ios/AppLifecycleDelegate.swift +25 -0
- package/ios/AudioSessionModule.swift +14 -40
- package/ios/BitmovinCastManagerModule.swift +30 -69
- package/ios/BufferModule.swift +26 -62
- package/ios/CustomMessageHandlerBridge.swift +11 -18
- package/ios/CustomMessageHandlerModule.swift +61 -63
- package/ios/DebugModule.swift +6 -27
- package/ios/DrmModule.swift +105 -379
- package/ios/Event+JSON.swift +1 -0
- package/ios/FullscreenHandlerBridge.swift +12 -5
- package/ios/FullscreenHandlerModule.swift +73 -57
- package/ios/LockedBox.swift +21 -0
- package/ios/ModuleRegistry+Generics.swift +11 -0
- package/ios/NetworkModule.swift +78 -82
- package/ios/OfflineContentManagerBridge.swift +11 -38
- package/ios/OfflineModule.swift +136 -454
- package/ios/PlayerAnalyticsModule.swift +24 -52
- package/ios/PlayerModule.swift +192 -770
- package/ios/RCTConvert+BitmovinPlayer.swift +38 -312
- package/ios/RNBitmovinPlayer.h +1 -8
- package/ios/RNBitmovinPlayer.podspec +47 -0
- package/ios/RNPlayerView.swift +600 -77
- package/ios/RNPlayerViewManager.swift +96 -210
- package/ios/Registry.swift +2 -2
- package/ios/ResultWaiter.swift +66 -0
- package/ios/SourceModule.swift +104 -223
- package/ios/UuidModule.swift +9 -18
- package/package.json +67 -71
- package/plugin/build/FeatureFlags.d.ts +24 -0
- package/plugin/build/FeatureFlags.js +2 -0
- package/plugin/build/index.d.ts +7 -0
- package/plugin/build/index.js +10 -0
- package/plugin/build/withAppGradleDependencies.d.ts +7 -0
- package/plugin/build/withAppGradleDependencies.js +49 -0
- package/plugin/build/withBitmovinAndroidConfig.d.ts +7 -0
- package/plugin/build/withBitmovinAndroidConfig.js +159 -0
- package/plugin/build/withBitmovinConfig.d.ts +7 -0
- package/plugin/build/withBitmovinConfig.js +21 -0
- package/plugin/build/withBitmovinIosConfig.d.ts +7 -0
- package/plugin/build/withBitmovinIosConfig.js +53 -0
- package/plugin/src/FeatureFlags.ts +21 -0
- package/plugin/src/index.ts +9 -0
- package/plugin/src/withAppGradleDependencies.ts +80 -0
- package/plugin/src/withBitmovinAndroidConfig.ts +224 -0
- package/plugin/src/withBitmovinConfig.ts +24 -0
- package/plugin/src/withBitmovinIosConfig.ts +71 -0
- package/plugin/tsconfig.json +9 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/prettier.config.js +7 -0
- package/scripts/format-android.sh +2 -0
- package/scripts/format-swift.sh +3 -0
- package/scripts/lint-android.sh +2 -0
- package/scripts/lint-swift.sh +3 -0
- package/scripts/pre-commit.sh +14 -0
- package/scripts/setup-hooks.sh +58 -0
- package/src/BitmovinPlayerReactNative.types.ts +19 -0
- package/src/adaptationConfig.ts +1 -1
- package/src/advertising.ts +1 -1
- package/src/analytics/config.ts +4 -4
- package/src/analytics/player.ts +4 -6
- package/src/analytics/playerAnalyticsModule.ts +19 -0
- package/src/audioSession.ts +4 -6
- package/src/audioTrack.ts +1 -1
- package/src/bitmovinCastManager.ts +14 -10
- package/src/bufferApi.ts +1 -3
- package/src/bufferConfig.ts +2 -2
- package/src/components/PlayerView/events.ts +92 -94
- package/src/components/PlayerView/index.tsx +109 -159
- package/src/components/PlayerView/native.ts +24 -11
- package/src/components/PlayerView/nativeEvents.ts +113 -94
- package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
- package/src/components/PlayerView/playerViewConfig.ts +4 -8
- package/src/components/PlayerView/properties.ts +23 -22
- package/src/debug.ts +1 -3
- package/src/decoder/decoderConfig.ts +3 -3
- package/src/decoder/decoderConfigModule.ts +62 -0
- package/src/decoder/index.ts +32 -16
- package/src/drm/drmModule.ts +84 -0
- package/src/drm/fairplayConfig.ts +1 -1
- package/src/drm/index.ts +130 -40
- package/src/drm/widevineConfig.ts +5 -5
- package/src/events.ts +47 -41
- package/src/hooks/useProxy.ts +13 -20
- package/src/mediaControlConfig.ts +1 -1
- package/src/modules/AudioSessionModule.ts +13 -0
- package/src/modules/BitmovinCastManagerModule.ts +14 -0
- package/src/modules/BufferModule.ts +18 -0
- package/src/modules/DebugModule.ts +9 -0
- package/src/modules/PlayerModule.ts +251 -0
- package/src/modules/SourceModule.ts +74 -0
- package/src/modules/UuidModule.ts +9 -0
- package/src/nativeInstance.ts +3 -3
- package/src/network/index.ts +42 -15
- package/src/network/networkConfig.ts +3 -3
- package/src/network/networkModule.ts +51 -0
- package/src/offline/offlineContentConfig.ts +1 -1
- package/src/offline/offlineContentManager.ts +15 -50
- package/src/offline/offlineContentManagerListener.ts +20 -23
- package/src/offline/offlineContentOptions.ts +2 -2
- package/src/offline/offlineDownloadRequest.ts +1 -1
- package/src/offline/offlineModule.ts +46 -0
- package/src/offline/offlineSourceOptions.ts +2 -2
- package/src/offline/offlineState.ts +1 -1
- package/src/playbackConfig.ts +5 -6
- package/src/player.ts +53 -48
- package/src/source.ts +15 -14
- package/src/styleConfig.ts +5 -5
- package/src/subtitleFormat.ts +5 -5
- package/src/subtitleTrack.ts +1 -1
- package/src/tweaksConfig.ts +16 -16
- package/src/ui/customMessageHandlerModule.ts +46 -0
- package/src/ui/custommessagehandlerbridge.ts +45 -18
- package/src/ui/fullscreenHandlerModule.ts +35 -0
- package/src/ui/fullscreenhandlerbridge.ts +35 -15
- package/tsconfig.json +9 -0
- package/typedoc.json +23 -0
- package/RNBitmovinPlayer.podspec +0 -26
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinBaseModule.kt +0 -114
- package/android/src/main/java/com/bitmovin/player/reactnative/EventRelay.kt +0 -47
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewPackage.kt +0 -48
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReactContextExtension.kt +0 -24
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableArray.kt +0 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMap.kt +0 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMapExtension.kt +0 -57
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/WritableMap.kt +0 -27
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerModule.kt +0 -86
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerModule.kt +0 -78
- package/ios/AudioSessionModule.m +0 -10
- package/ios/BitmovinCastManagerModule.m +0 -14
- package/ios/BufferModule.m +0 -8
- package/ios/CustomMessageHandlerModule.m +0 -10
- package/ios/DebugModule.m +0 -7
- package/ios/DrmModule.m +0 -16
- package/ios/FullscreenHandlerModule.m +0 -10
- package/ios/NetworkModule.m +0 -10
- package/ios/OfflineModule.m +0 -19
- package/ios/PlayerAnalyticsModule.m +0 -8
- package/ios/PlayerModule.m +0 -130
- package/ios/PreprocessHttpRequestDelegateBridge.swift +0 -30
- package/ios/RCTBridge+Generics.swift +0 -6
- package/ios/RNBitmovinPlayer.xcodeproj/project.pbxproj +0 -303
- package/ios/RNPlayerView+PlayerListener.swift +0 -229
- package/ios/RNPlayerView+UserInterfaceListener.swift +0 -35
- package/ios/RNPlayerViewManager.m +0 -79
- package/ios/SourceModule.m +0 -42
- package/ios/UuidModule.m +0 -9
- package/lib/index.d.mts +0 -4303
- package/lib/index.d.ts +0 -4303
- package/lib/index.js +0 -1895
- package/lib/index.mjs +0 -1836
package/ios/SourceModule.swift
CHANGED
|
@@ -1,263 +1,144 @@
|
|
|
1
1
|
import BitmovinPlayer
|
|
2
|
+
import ExpoModulesCore
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
public class SourceModule: NSObject, RCTBridgeModule {
|
|
5
|
-
// swiftlint:disable:next implicitly_unwrapped_optional
|
|
6
|
-
@objc public var bridge: RCTBridge!
|
|
7
|
-
|
|
4
|
+
public class SourceModule: Module {
|
|
8
5
|
/// In-memory mapping from `nativeId`s to `Source` instances.
|
|
9
6
|
private var sources: Registry<Source> = [:]
|
|
10
|
-
|
|
11
7
|
/// In-memory mapping from `nativeId`s to `SourceConfig` instances for casting.
|
|
12
8
|
private var castSourceConfigs: Registry<SourceConfig> = [:]
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// swiftlint:disable:next implicitly_unwrapped_optional
|
|
24
|
-
public var methodQueue: DispatchQueue! {
|
|
25
|
-
bridge.uiManager.methodQueue
|
|
26
|
-
}
|
|
10
|
+
public func definition() -> ModuleDefinition {
|
|
11
|
+
Name("SourceModule")
|
|
12
|
+
OnCreate {
|
|
13
|
+
// Module initialization
|
|
14
|
+
}
|
|
15
|
+
OnDestroy {
|
|
16
|
+
sources.removeAll()
|
|
17
|
+
castSourceConfigs.removeAll()
|
|
18
|
+
}
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
// MARK: - Module methods
|
|
21
|
+
AsyncFunction("initializeWithConfig") { [weak self] (nativeId: NativeId, drmNativeId: NativeId?, config: [String: Any]?, sourceRemoteControlConfig: [String: Any]?) in // swiftlint:disable:this line_length
|
|
22
|
+
self?.createSource(
|
|
23
|
+
nativeId: nativeId,
|
|
24
|
+
drmNativeId: drmNativeId,
|
|
25
|
+
config: config,
|
|
26
|
+
sourceRemoteControlConfig: sourceRemoteControlConfig
|
|
27
|
+
)
|
|
28
|
+
}.runOnQueue(.main)
|
|
29
|
+
AsyncFunction("initializeWithAnalyticsConfig") { [weak self] (nativeId: NativeId, drmNativeId: NativeId?, config: [String: Any]?, sourceRemoteControlConfig: [String: Any]?, analyticsSourceMetadata: [String: Any]?) in // swiftlint:disable:this line_length
|
|
30
|
+
self?.createSource(
|
|
31
|
+
nativeId: nativeId,
|
|
32
|
+
drmNativeId: drmNativeId,
|
|
33
|
+
config: config,
|
|
34
|
+
sourceRemoteControlConfig: sourceRemoteControlConfig,
|
|
35
|
+
analyticsSourceMetadata: analyticsSourceMetadata
|
|
36
|
+
)
|
|
37
|
+
}.runOnQueue(.main)
|
|
38
|
+
AsyncFunction("destroy") { [weak self] (nativeId: NativeId) in
|
|
39
|
+
self?.destroySource(nativeId: nativeId)
|
|
40
|
+
}.runOnQueue(.main)
|
|
41
|
+
AsyncFunction("isAttachedToPlayer") { [weak self] (nativeId: NativeId) -> Bool? in
|
|
42
|
+
self?.sources[nativeId]?.isAttachedToPlayer
|
|
43
|
+
}.runOnQueue(.main)
|
|
44
|
+
AsyncFunction("isActive") { [weak self] (nativeId: NativeId) -> Bool? in
|
|
45
|
+
self?.sources[nativeId]?.isActive
|
|
46
|
+
}.runOnQueue(.main)
|
|
47
|
+
AsyncFunction("duration") { [weak self] (nativeId: NativeId) -> Double? in
|
|
48
|
+
self?.sources[nativeId]?.duration
|
|
49
|
+
}.runOnQueue(.main)
|
|
50
|
+
AsyncFunction("loadingState") { [weak self] (nativeId: NativeId) -> Int? in
|
|
51
|
+
self?.sources[nativeId]?.loadingState.rawValue
|
|
52
|
+
}.runOnQueue(.main)
|
|
53
|
+
AsyncFunction("getMetadata") { [weak self] (nativeId: NativeId) -> [String: Any]? in
|
|
54
|
+
self?.getSourceMetadata(nativeId: nativeId)
|
|
55
|
+
}.runOnQueue(.main)
|
|
56
|
+
AsyncFunction("setMetadata") { [weak self] (nativeId: NativeId, metadata: [String: Any]?) in
|
|
57
|
+
self?.setSourceMetadata(nativeId: nativeId, metadata: metadata)
|
|
58
|
+
}.runOnQueue(.main)
|
|
59
|
+
AsyncFunction("getThumbnail") { [weak self] (nativeId: NativeId, time: Double) -> [String: Any]? in
|
|
60
|
+
self?.getSourceThumbnail(nativeId: nativeId, time: time)
|
|
61
|
+
}.runOnQueue(.main)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// MARK: - Public methods
|
|
65
|
+
public func retrieve(_ nativeId: NativeId) -> Source? {
|
|
35
66
|
sources[nativeId]
|
|
36
67
|
}
|
|
37
68
|
|
|
38
69
|
// Finds `NativeId` based on predicate ran on `Source` instances
|
|
39
|
-
func nativeId(where predicate: (Source) -> Bool) -> NativeId? {
|
|
70
|
+
public func nativeId(where predicate: (Source) -> Bool) -> NativeId? {
|
|
40
71
|
sources.first { _, value in
|
|
41
72
|
predicate(value)
|
|
42
73
|
}?.key
|
|
43
74
|
}
|
|
44
75
|
|
|
45
|
-
|
|
46
|
-
func retrieveCastSourceConfig(_ nativeId: NativeId) -> SourceConfig? {
|
|
76
|
+
public func retrieveCastSourceConfig(_ nativeId: NativeId) -> SourceConfig? {
|
|
47
77
|
castSourceConfigs[nativeId]
|
|
48
78
|
}
|
|
49
79
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- Parameter nativeId: ID to be associated with the `Source` instance.
|
|
54
|
-
- Parameter drmNativeId: ID of the DRM config object to use.
|
|
55
|
-
- Parameter config: `SourceConfig` object received from JS.
|
|
56
|
-
- Parameter analyticsSourceMetadata: `SourceMetadata` object received from JS.
|
|
57
|
-
- Parameter sourceRemoteControlConfig: `SourceRemoteControlConfig` object received from JS.
|
|
58
|
-
*/
|
|
59
|
-
@objc(initWithAnalyticsConfig:drmNativeId:config:sourceRemoteControlConfig:analyticsSourceMetadata:)
|
|
60
|
-
func initWithAnalyticsConfig(
|
|
61
|
-
_ nativeId: NativeId,
|
|
62
|
-
drmNativeId: NativeId?,
|
|
63
|
-
config: Any?,
|
|
64
|
-
sourceRemoteControlConfig: Any?,
|
|
65
|
-
analyticsSourceMetadata: Any?
|
|
66
|
-
) {
|
|
67
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
68
|
-
let drmConfig: DrmConfig?
|
|
69
|
-
if let drmNativeId {
|
|
70
|
-
drmConfig = self?.getDrmModule()?.retrieve(drmNativeId)
|
|
71
|
-
} else {
|
|
72
|
-
drmConfig = nil
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
guard
|
|
76
|
-
self?.sources[nativeId] == nil,
|
|
77
|
-
let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig),
|
|
78
|
-
let sourceMetadata = RCTConvert.analyticsSourceMetadata(analyticsSourceMetadata)
|
|
79
|
-
else {
|
|
80
|
-
return
|
|
81
|
-
}
|
|
82
|
-
self?.sources[nativeId] = SourceFactory.create(from: sourceConfig, sourceMetadata: sourceMetadata)
|
|
83
|
-
#if os(iOS)
|
|
84
|
-
if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
|
|
85
|
-
self?.castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
|
|
86
|
-
}
|
|
87
|
-
#endif
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
Creates a new `Source` instance inside the internal sources using
|
|
93
|
-
the provided `config` object and an initialized DRM configuration ID.
|
|
94
|
-
- Parameter nativeId: ID to be associated with the `Source` instance.
|
|
95
|
-
- Parameter drmNativeId: ID of the DRM config object to use.
|
|
96
|
-
- Parameter config: `SourceConfig` object received from JS.
|
|
97
|
-
- Parameter sourceRemoteControlConfig: `SourceRemoteControlConfig` object received from JS.
|
|
98
|
-
*/
|
|
99
|
-
@objc(initWithConfig:drmNativeId:config:sourceRemoteControlConfig:)
|
|
100
|
-
func initWithConfig(
|
|
101
|
-
_ nativeId: NativeId,
|
|
102
|
-
drmNativeId: NativeId?,
|
|
103
|
-
config: Any?,
|
|
104
|
-
sourceRemoteControlConfig: Any?
|
|
105
|
-
) {
|
|
106
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
107
|
-
let drmConfig: DrmConfig?
|
|
108
|
-
if let drmNativeId {
|
|
109
|
-
drmConfig = self?.getDrmModule()?.retrieve(drmNativeId)
|
|
110
|
-
} else {
|
|
111
|
-
drmConfig = nil
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
guard
|
|
115
|
-
self?.sources[nativeId] == nil,
|
|
116
|
-
let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig)
|
|
117
|
-
else {
|
|
118
|
-
return
|
|
119
|
-
}
|
|
120
|
-
self?.sources[nativeId] = SourceFactory.create(from: sourceConfig)
|
|
121
|
-
#if os(iOS)
|
|
122
|
-
if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
|
|
123
|
-
self?.castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
|
|
124
|
-
}
|
|
125
|
-
#endif
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/// Fetches the initialized `DrmModule` instance on RN's bridge object.
|
|
130
|
-
private func getDrmModule() -> DrmModule? {
|
|
131
|
-
bridge.module(for: DrmModule.self) as? DrmModule
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
Removes the `Source` instance associated with `nativeId` from `sources`.
|
|
136
|
-
- Parameter nativeId: Instance to be disposed.
|
|
137
|
-
*/
|
|
138
|
-
@objc(destroy:)
|
|
139
|
-
func destroy(_ nativeId: NativeId) {
|
|
140
|
-
sources.removeValue(forKey: nativeId)
|
|
141
|
-
castSourceConfigs.removeValue(forKey: nativeId)
|
|
80
|
+
// MARK: - Private methods
|
|
81
|
+
private func getSourceMetadata(nativeId: NativeId) -> [String: Any]? {
|
|
82
|
+
sources[nativeId]?.metadata
|
|
142
83
|
}
|
|
143
84
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
- Parameter rejecter: JS promise rejecter.
|
|
149
|
-
*/
|
|
150
|
-
@objc(isAttachedToPlayer:resolver:rejecter:)
|
|
151
|
-
func isAttachedToPlayer(
|
|
152
|
-
_ nativeId: NativeId,
|
|
153
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
154
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
155
|
-
) {
|
|
156
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
157
|
-
resolve(self?.sources[nativeId]?.isAttachedToPlayer)
|
|
85
|
+
private func setSourceMetadata(nativeId: NativeId, metadata: [String: Any]?) {
|
|
86
|
+
guard let metadata else {
|
|
87
|
+
sources[nativeId]?.metadata = nil
|
|
88
|
+
return
|
|
158
89
|
}
|
|
90
|
+
let metadataObjects = metadata as [String: AnyObject]
|
|
91
|
+
sources[nativeId]?.metadata = metadataObjects
|
|
159
92
|
}
|
|
160
93
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
- Parameter resolver: JS promise resolver.
|
|
165
|
-
- Parameter rejecter: JS promise rejecter.
|
|
166
|
-
*/
|
|
167
|
-
@objc(isActive:resolver:rejecter:)
|
|
168
|
-
func isActive(
|
|
169
|
-
_ nativeId: NativeId,
|
|
170
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
171
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
172
|
-
) {
|
|
173
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
174
|
-
resolve(self?.sources[nativeId]?.isActive)
|
|
94
|
+
private func getSourceThumbnail(nativeId: NativeId, time: Double) -> [String: Any]? {
|
|
95
|
+
guard let thumbnail = sources[nativeId]?.thumbnail(forTime: time) else {
|
|
96
|
+
return nil
|
|
175
97
|
}
|
|
98
|
+
return RCTConvert.toJson(thumbnail: thumbnail)
|
|
176
99
|
}
|
|
177
100
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
@objc(duration:resolver:rejecter:)
|
|
185
|
-
func duration(
|
|
186
|
-
_ nativeId: NativeId,
|
|
187
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
188
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
101
|
+
private func createSource(
|
|
102
|
+
nativeId: NativeId,
|
|
103
|
+
drmNativeId: NativeId?,
|
|
104
|
+
config: [String: Any]?,
|
|
105
|
+
sourceRemoteControlConfig: [String: Any]?,
|
|
106
|
+
analyticsSourceMetadata: [String: Any]? = nil
|
|
189
107
|
) {
|
|
190
|
-
|
|
191
|
-
|
|
108
|
+
guard sources[nativeId] == nil else {
|
|
109
|
+
// Source already exists
|
|
110
|
+
return
|
|
192
111
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
- Parameter resolver: JS promise resolver.
|
|
199
|
-
- Parameter rejecter: JS promise rejecter.
|
|
200
|
-
*/
|
|
201
|
-
@objc(loadingState:resolver:rejecter:)
|
|
202
|
-
func loadingState(
|
|
203
|
-
_ nativeId: NativeId,
|
|
204
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
205
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
206
|
-
) {
|
|
207
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
208
|
-
resolve(self?.sources[nativeId]?.loadingState)
|
|
112
|
+
// Get DRM config if provided
|
|
113
|
+
let drmModule = appContext?.moduleRegistry.get(DrmModule.self)
|
|
114
|
+
let drmConfig = drmNativeId.flatMap { drmModule?.retrieve($0) }
|
|
115
|
+
guard let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig) else {
|
|
116
|
+
return
|
|
209
117
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
@objc(getMetadata:resolver:rejecter:)
|
|
219
|
-
func getMetadata(
|
|
220
|
-
_ nativeId: NativeId,
|
|
221
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
222
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
223
|
-
) {
|
|
224
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
225
|
-
resolve(self?.sources[nativeId]?.metadata)
|
|
118
|
+
// Add analytics metadata if provided
|
|
119
|
+
let sourceMetadata = RCTConvert.analyticsSourceMetadata(analyticsSourceMetadata)
|
|
120
|
+
|
|
121
|
+
let source: Source
|
|
122
|
+
if let sourceMetadata {
|
|
123
|
+
source = SourceFactory.createSource(from: sourceConfig, sourceMetadata: sourceMetadata)
|
|
124
|
+
} else {
|
|
125
|
+
source = SourceFactory.createSource(from: sourceConfig)
|
|
226
126
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
- Parameter resolver: JS promise resolver.
|
|
233
|
-
- Parameter rejecter: JS promise rejecter.
|
|
234
|
-
*/
|
|
235
|
-
@objc(setMetadata:metadata:)
|
|
236
|
-
func setMetadata(_ nativeId: NativeId, metadata: Any?) {
|
|
237
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
238
|
-
guard let metadata = metadata as? [String: AnyObject] else {
|
|
239
|
-
return
|
|
240
|
-
}
|
|
241
|
-
self?.sources[nativeId]?.metadata = metadata
|
|
127
|
+
sources[nativeId] = source
|
|
128
|
+
// Store cast source config if provided
|
|
129
|
+
#if os(iOS)
|
|
130
|
+
if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
|
|
131
|
+
castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
|
|
242
132
|
}
|
|
133
|
+
#endif
|
|
243
134
|
}
|
|
244
135
|
|
|
245
136
|
/**
|
|
246
|
-
|
|
247
|
-
- Parameter nativeId: Target player id.
|
|
248
|
-
- Parameter resolver: JS promise resolver.
|
|
249
|
-
- Parameter rejecter: JS promise rejecter.
|
|
137
|
+
Destroys the source instance with the given `nativeId`.
|
|
250
138
|
*/
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
time: NSNumber,
|
|
255
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
256
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
257
|
-
) {
|
|
258
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
259
|
-
resolve(RCTConvert.toJson(thumbnail: self?.sources[nativeId]?.thumbnail(forTime: time.doubleValue)))
|
|
260
|
-
}
|
|
139
|
+
private func destroySource(nativeId: NativeId) {
|
|
140
|
+
sources.removeValue(forKey: nativeId)
|
|
141
|
+
castSourceConfigs.removeValue(forKey: nativeId)
|
|
261
142
|
}
|
|
262
143
|
}
|
|
263
144
|
|
package/ios/UuidModule.swift
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
import Foundation
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
Native module for easy and fast unique ID generation on JS side. Used to generate native instance IDs.
|
|
3
6
|
*/
|
|
4
|
-
|
|
5
|
-
public
|
|
6
|
-
|
|
7
|
-
public static func requiresMainQueueSetup() -> Bool {
|
|
8
|
-
true
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// swiftlint:disable:next implicitly_unwrapped_optional
|
|
12
|
-
public static func moduleName() -> String! {
|
|
13
|
-
"UuidModule"
|
|
14
|
-
}
|
|
7
|
+
public class UuidModule: Module {
|
|
8
|
+
public func definition() -> ModuleDefinition {
|
|
9
|
+
Name("UuidModule")
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*/
|
|
20
|
-
@objc
|
|
21
|
-
public func generate() -> String {
|
|
22
|
-
UUID().uuidString
|
|
11
|
+
Function("generate") { () -> String in
|
|
12
|
+
UUID().uuidString
|
|
13
|
+
}
|
|
23
14
|
}
|
|
24
15
|
}
|
package/package.json
CHANGED
|
@@ -1,100 +1,96 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bitmovin-player-react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-alpha.0",
|
|
4
4
|
"description": "Official React Native bindings for Bitmovin's mobile Player SDKs.",
|
|
5
|
-
"main": "
|
|
6
|
-
"
|
|
7
|
-
"types": "lib/index.d.ts",
|
|
8
|
-
"source": "src/index.ts",
|
|
9
|
-
"react-native": "src/index.ts",
|
|
10
|
-
"author": "Bitmovin GmbH",
|
|
11
|
-
"files": [
|
|
12
|
-
"src",
|
|
13
|
-
"lib",
|
|
14
|
-
"android",
|
|
15
|
-
"ios",
|
|
16
|
-
"cpp",
|
|
17
|
-
"*.podspec",
|
|
18
|
-
"!android/build",
|
|
19
|
-
"!ios/build",
|
|
20
|
-
"!android/build",
|
|
21
|
-
"!android/gradle",
|
|
22
|
-
"!android/gradlew",
|
|
23
|
-
"!android/gradlew.bat",
|
|
24
|
-
"!android/local.properties",
|
|
25
|
-
"!**/__tests__",
|
|
26
|
-
"!**/__fixtures__",
|
|
27
|
-
"!**/__mocks__",
|
|
28
|
-
"!**/.*"
|
|
29
|
-
],
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"types": "build/index.d.ts",
|
|
30
7
|
"scripts": {
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
8
|
+
"build": "yarn build:module && yarn build:plugin",
|
|
9
|
+
"build:module": "EXPO_NONINTERACTIVE=true expo-module build",
|
|
10
|
+
"build:plugin": "EXPO_NONINTERACTIVE=true expo-module build plugin",
|
|
11
|
+
"dev:plugin": "expo-module build plugin",
|
|
12
|
+
"clean": "expo-module clean",
|
|
13
|
+
"lint": "expo-module lint",
|
|
14
|
+
"lint:all": "yarn lint && yarn example lint && yarn lint:ios && yarn lint:android",
|
|
15
|
+
"lint:all-with-tests": "yarn lint && yarn example lint && yarn integration-test lint && yarn lint:ios && yarn lint:android",
|
|
16
|
+
"typecheck": "tsc --noEmit",
|
|
17
|
+
"typecheck:all": "yarn typecheck && yarn example typecheck && yarn integration-test typecheck",
|
|
18
|
+
"format": "prettier --write '**/*.{ts,tsx,js,jsx,md,json,yml,yaml}'",
|
|
19
|
+
"format:ios": "./scripts/format-swift.sh",
|
|
20
|
+
"format:android": "./scripts/format-android.sh",
|
|
21
|
+
"format:all": "yarn format && yarn format:ios && yarn format:android",
|
|
22
|
+
"setup-hooks": "./scripts/setup-hooks.sh",
|
|
23
|
+
"lint:ios": "swiftlint ios --strict --quiet",
|
|
24
|
+
"lint:android": "cd android && ./gradlew -b ktlint.gradle ktlintCheck --quiet --console=plain",
|
|
25
|
+
"prepare": "expo-module prepare",
|
|
26
|
+
"prepublishOnly": "expo-module prepublishOnly",
|
|
27
|
+
"module": "expo-module",
|
|
36
28
|
"example": "yarn --cwd example",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"bootstrap": "yarn bootstrap:example && yarn bootstrap:integration-test",
|
|
40
|
-
"bootstrap:example": "yarn && yarn example && yarn example pods && yarn brew",
|
|
41
|
-
"bootstrap:integration-test": "yarn && yarn integration-test && yarn integration-test pods && yarn brew",
|
|
29
|
+
"open:ios": "yarn example open:ios",
|
|
30
|
+
"open:android": "yarn example open:android",
|
|
42
31
|
"brew": "[ \"$(uname)\" != Darwin ] || brew bundle install",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
32
|
+
"docs": "typedoc",
|
|
33
|
+
"pods": "yarn example pods #&& yarn integration-test pods",
|
|
34
|
+
"bootstrap": "yarn brew && yarn build && yarn example bootstrap && yarn integration-test bootstrap && yarn setup-hooks",
|
|
35
|
+
"integration-test": "yarn --cwd integration_test"
|
|
45
36
|
},
|
|
46
37
|
"keywords": [
|
|
47
38
|
"react-native",
|
|
39
|
+
"expo",
|
|
40
|
+
"bitmovin-player-react-native",
|
|
48
41
|
"ios",
|
|
49
42
|
"android",
|
|
43
|
+
"tvos",
|
|
44
|
+
"androidtv",
|
|
50
45
|
"bitmovin",
|
|
51
46
|
"player",
|
|
52
47
|
"video",
|
|
53
48
|
"streaming"
|
|
54
49
|
],
|
|
55
|
-
"license": "MIT",
|
|
56
|
-
"homepage": "https://bitmovin.com/video-player/react-native-sdk",
|
|
57
50
|
"repository": {
|
|
58
51
|
"type": "git",
|
|
59
52
|
"url": "https://github.com/bitmovin/bitmovin-player-react-native"
|
|
60
53
|
},
|
|
54
|
+
"author": "Bitmovin GmbH <player-sdks@bitmovin.com> (https://github.com/bitmovin)",
|
|
55
|
+
"license": "MIT",
|
|
56
|
+
"homepage": "https://bitmovin.com/video-player/react-native-sdk",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@expo/config-plugins": "~10.1.2",
|
|
59
|
+
"expo-keep-awake": "~14.1.4"
|
|
60
|
+
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@babel/core": "7.
|
|
63
|
-
"@
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"babel-plugin-module-resolver": "5.0.0",
|
|
71
|
-
"eslint": "8.24.0",
|
|
72
|
-
"eslint-config-prettier": "8.5.0",
|
|
73
|
-
"eslint-plugin-prettier": "4.2.1",
|
|
74
|
-
"husky": "8.0.1",
|
|
75
|
-
"jest": "^29.6.3",
|
|
62
|
+
"@babel/core": "^7.28.0",
|
|
63
|
+
"@types/react": "~19.0.10",
|
|
64
|
+
"eslint": "^8.57.0",
|
|
65
|
+
"eslint-config-expo": "~9.2.0",
|
|
66
|
+
"eslint-config-prettier": "^9.1.0",
|
|
67
|
+
"eslint-plugin-prettier": "^5.5.1",
|
|
68
|
+
"expo": "53.0.20",
|
|
69
|
+
"expo-module-scripts": "^4.1.9",
|
|
76
70
|
"lint-staged": "13.0.3",
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"tsup": "7.2.0",
|
|
83
|
-
"typedoc": "^0.25.2",
|
|
84
|
-
"typescript": "5.0.2"
|
|
85
|
-
},
|
|
86
|
-
"resolutions": {
|
|
87
|
-
"@types/react": "17.0.21"
|
|
88
|
-
},
|
|
89
|
-
"dependencies": {
|
|
90
|
-
"lodash.omit": "4.5.0"
|
|
71
|
+
"prettier": "^3.6.2",
|
|
72
|
+
"react": "19.0.0",
|
|
73
|
+
"react-native": "0.79.5",
|
|
74
|
+
"typedoc": "^0.28.7",
|
|
75
|
+
"typescript": "~5.8.3"
|
|
91
76
|
},
|
|
92
77
|
"peerDependencies": {
|
|
93
|
-
"
|
|
94
|
-
"react
|
|
78
|
+
"expo": ">=53.0.0",
|
|
79
|
+
"react": "*",
|
|
80
|
+
"react-native": "*"
|
|
95
81
|
},
|
|
96
82
|
"lint-staged": {
|
|
97
|
-
"
|
|
83
|
+
"src/**/*.(ts|tsx)": "eslint --quiet",
|
|
84
|
+
"example/src/**/*.(ts|tsx)": "eslint --quiet --config example/.eslintrc.js",
|
|
85
|
+
"integration_test/{src,playertesting,tests}/**/*.(ts|tsx)": "eslint --quiet --config integration_test/.eslintrc.js",
|
|
86
|
+
"ios/**/*.swift": [
|
|
87
|
+
"./scripts/format-swift.sh",
|
|
88
|
+
"./scripts/lint-swift.sh"
|
|
89
|
+
],
|
|
90
|
+
"android/**/*.kt": [
|
|
91
|
+
"./scripts/format-android.sh",
|
|
92
|
+
"./scripts/lint-android.sh"
|
|
93
|
+
],
|
|
98
94
|
"*.(ts|tsx|js|jsx|md|json|yml|yaml)": "prettier --write"
|
|
99
95
|
}
|
|
100
96
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export default interface FeatureFlags {
|
|
2
|
+
airPlay?: boolean;
|
|
3
|
+
backgroundPlayback?: boolean;
|
|
4
|
+
googleCastSDK?: {
|
|
5
|
+
android: string | {
|
|
6
|
+
version: string;
|
|
7
|
+
};
|
|
8
|
+
ios: string | {
|
|
9
|
+
version: string;
|
|
10
|
+
appId?: string;
|
|
11
|
+
localNetworkUsageDescription?: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
offline?: boolean | {
|
|
15
|
+
android?: {
|
|
16
|
+
isEnabled: boolean;
|
|
17
|
+
externalStoragePermission?: boolean;
|
|
18
|
+
};
|
|
19
|
+
ios?: {
|
|
20
|
+
isEnabled: boolean;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
pictureInPicture?: boolean;
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const config_plugins_1 = require("expo/config-plugins");
|
|
7
|
+
const withBitmovinConfig_1 = __importDefault(require("./withBitmovinConfig"));
|
|
8
|
+
// Keeping the name, and version in sync with it's package.
|
|
9
|
+
const pkg = require('../../package.json');
|
|
10
|
+
exports.default = (0, config_plugins_1.createRunOncePlugin)(withBitmovinConfig_1.default, pkg.name, pkg.version);
|