diff --git a/examples/README.md b/examples/README.md
index e27fa755..894980ef 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -8,12 +8,6 @@ This directory contains examples for `react-native-video` - this is a guide that
- **[`expo`](#expo)** - Expo example that you can run on: iOS, Android, tvOS, web
-### Updating Examples Content
-
-Both of applications have mostly the same code (Windows and tvOS have platform-specific code). Other platform are using codebase from `bare` example.
-If you want to update examples content, you should do it in `bare` example. `expo` example is copping (and overwriting!) `src` folder from `bare` on dependency install.
-If you want to sync `expo` example, you can use `yarn update-src` command in `expo` example directory.
-
## How To Run Examples
## [Bare](https://github.com/TheWidlarzGroup/react-native-video/tree/master/examples/bare)
diff --git a/examples/bare/android/gradle.properties b/examples/bare/android/gradle.properties
index a713e83e..59f98b7e 100644
--- a/examples/bare/android/gradle.properties
+++ b/examples/bare/android/gradle.properties
@@ -18,7 +18,7 @@ org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryEr
# section on Gradle build performance:
# https://docs.gradle.org/current/userguide/performance.html#parallel_execution.
# Default is `false`.
-#org.gradle.parallel=true
+# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
@@ -40,14 +40,19 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
# Note that this is incompatible with web debugging.
-#newArchEnabled=true
-#bridgelessEnabled=true
+# newArchEnabled=true
+# bridgelessEnabled=true
# Uncomment the line below to build React Native from source.
-#react.buildFromSource=true
+# react.buildFromSource=true
# Version of Android NDK to build against.
-#ANDROID_NDK_VERSION=26.1.10909125
+# ANDROID_NDK_VERSION=26.1.10909125
# Version of Kotlin to build against.
-#KOTLIN_VERSION=1.8.22
+# KOTLIN_VERSION=1.8.22
+
+RNVideo_useExoplayerRtsp=true
+RNVideo_useExoplayerSmoothStreaming=true
+RNVideo_useExoplayerDash=true
+RNVideo_useExoplayerHls=true
\ No newline at end of file
diff --git a/examples/bare/index.js b/examples/bare/index.js
index 7ae62fd9..8c4bf6db 100644
--- a/examples/bare/index.js
+++ b/examples/bare/index.js
@@ -3,9 +3,9 @@
*/
import {AppRegistry} from 'react-native';
-import BasicExample from './src/BasicExample';
+import BasicExample from 'common/BasicExample';
import {name as appName} from './app.json';
-import DRMExample from './src/DRMExample';
+import DRMExample from 'common/DRMExample';
AppRegistry.registerComponent(appName, () => BasicExample);
AppRegistry.registerComponent('DRMExample', () => DRMExample);
diff --git a/examples/bare/ios/Podfile.lock b/examples/bare/ios/Podfile.lock
index 8700236a..3653b4ed 100644
--- a/examples/bare/ios/Podfile.lock
+++ b/examples/bare/ios/Podfile.lock
@@ -852,12 +852,12 @@ PODS:
- React-Mapbuffer (0.73.2):
- glog
- React-debug
- - react-native-video (6.6.4):
+ - react-native-video (6.10.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- - react-native-video/Video (= 6.6.4)
- - react-native-video/Video (6.6.4):
+ - react-native-video/Video (= 6.10.0)
+ - react-native-video/Video (6.10.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
@@ -1030,11 +1030,11 @@ PODS:
- React-Core
- React-cxxreact
- ReactCommon/turbomodule/core
- - ReactTestApp-DevSupport (3.10.14):
+ - ReactTestApp-DevSupport (3.10.18):
- React-Core
- React-jsi
- ReactTestApp-Resources (1.0.0-dev)
- - RNCPicker (2.7.5):
+ - RNCPicker (2.8.1):
- React-Core
- SocketRocket (0.6.1)
- Yoga (1.14.0)
@@ -1234,7 +1234,7 @@ SPEC CHECKSUMS:
React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618
React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570
React-Mapbuffer: 9ee041e1d7be96da6d76a251f92e72b711c651d6
- react-native-video: 60dcbdb52c8291b0a01256d00ac25fde0c18e602
+ react-native-video: ff568aadb2beaec754c61b76bd7dd784883c71ea
React-nativeconfig: d753fbbc8cecc8ae413d615599ac378bbf6999bb
React-NativeModulesApple: 22c25a1baa4b0d0d4845dad2578fc017b0805589
React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e
@@ -1256,9 +1256,9 @@ SPEC CHECKSUMS:
React-utils: f5bc61e7ea3325c0732ae2d755f4441940163b85
ReactCommon: a42e89b49d88c3890dfb6fd98a33ac80d555be19
ReactNativeHost: 1e71e0d4c176f03f4b9073a35197d576ec40cce3
- ReactTestApp-DevSupport: ed439cce949caf074af3ae05051b4bd157ed4019
+ ReactTestApp-DevSupport: 1e39530b4a8602e7138a5b9dfafe41d3a78382ff
ReactTestApp-Resources: 857244f3a23f2b3157b364fa06cf3e8866deff9c
- RNCPicker: 3e2c37a8328f368ce14da050cdc8231deb5fc9f9
+ RNCPicker: d2ac37457765e0066fe17c93f536eae024b6e53a
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047
diff --git a/examples/bare/metro.config.js b/examples/bare/metro.config.js
index 21afe1ba..16b39136 100644
--- a/examples/bare/metro.config.js
+++ b/examples/bare/metro.config.js
@@ -12,9 +12,16 @@ module.exports = makeMetroConfig({
},
resolver: {
enableSymlinks: true,
+ // Add support for ../common by including it in extraNodeModules
+ extraNodeModules: {
+ common: path.resolve(__dirname, '../common'),
+ 'react-native-video': path.resolve(__dirname, '../../lib/'),
+ '@react-native-picker/picker': path.resolve(__dirname, 'node_modules/@react-native-picker/picker'),
+ },
},
watchFolders: [
path.join(__dirname, 'node_modules', 'react-native-video'),
path.resolve(__dirname, '../..'),
+ path.resolve(__dirname, '../common'),
],
});
diff --git a/examples/bare/src/BasicExample.tsx b/examples/common/BasicExample.tsx
similarity index 100%
rename from examples/bare/src/BasicExample.tsx
rename to examples/common/BasicExample.tsx
diff --git a/examples/bare/src/BasicExample.windows.tsx b/examples/common/BasicExample.windows.tsx
similarity index 100%
rename from examples/bare/src/BasicExample.windows.tsx
rename to examples/common/BasicExample.windows.tsx
diff --git a/examples/bare/src/DRMExample.tsx b/examples/common/DRMExample.tsx
similarity index 100%
rename from examples/bare/src/DRMExample.tsx
rename to examples/common/DRMExample.tsx
diff --git a/examples/bare/src/assets/index.ts b/examples/common/assets/index.ts
similarity index 100%
rename from examples/bare/src/assets/index.ts
rename to examples/common/assets/index.ts
diff --git a/examples/bare/src/assets/videos/broadchurch.mp4 b/examples/common/assets/videos/broadchurch.mp4
similarity index 100%
rename from examples/bare/src/assets/videos/broadchurch.mp4
rename to examples/common/assets/videos/broadchurch.mp4
diff --git a/examples/bare/src/assets/videos/index.ts b/examples/common/assets/videos/index.ts
similarity index 100%
rename from examples/bare/src/assets/videos/index.ts
rename to examples/common/assets/videos/index.ts
diff --git a/examples/bare/src/assets/videos/portrait.mp4 b/examples/common/assets/videos/portrait.mp4
similarity index 100%
rename from examples/bare/src/assets/videos/portrait.mp4
rename to examples/common/assets/videos/portrait.mp4
diff --git a/examples/bare/src/components/AudioTracksSelector.tsx b/examples/common/components/AudioTracksSelector.tsx
similarity index 100%
rename from examples/bare/src/components/AudioTracksSelector.tsx
rename to examples/common/components/AudioTracksSelector.tsx
diff --git a/examples/bare/src/components/Indicator.tsx b/examples/common/components/Indicator.tsx
similarity index 100%
rename from examples/bare/src/components/Indicator.tsx
rename to examples/common/components/Indicator.tsx
diff --git a/examples/bare/src/components/MultiValueControl.tsx b/examples/common/components/MultiValueControl.tsx
similarity index 100%
rename from examples/bare/src/components/MultiValueControl.tsx
rename to examples/common/components/MultiValueControl.tsx
diff --git a/examples/bare/src/components/Overlay.tsx b/examples/common/components/Overlay.tsx
similarity index 100%
rename from examples/bare/src/components/Overlay.tsx
rename to examples/common/components/Overlay.tsx
diff --git a/examples/bare/src/components/Seeker.tsx b/examples/common/components/Seeker.tsx
similarity index 100%
rename from examples/bare/src/components/Seeker.tsx
rename to examples/common/components/Seeker.tsx
diff --git a/examples/bare/src/components/TextTracksSelector.tsx b/examples/common/components/TextTracksSelector.tsx
similarity index 100%
rename from examples/bare/src/components/TextTracksSelector.tsx
rename to examples/common/components/TextTracksSelector.tsx
diff --git a/examples/bare/src/components/Toast.ts b/examples/common/components/Toast.ts
similarity index 100%
rename from examples/bare/src/components/Toast.ts
rename to examples/common/components/Toast.ts
diff --git a/examples/bare/src/components/ToggleControl.tsx b/examples/common/components/ToggleControl.tsx
similarity index 100%
rename from examples/bare/src/components/ToggleControl.tsx
rename to examples/common/components/ToggleControl.tsx
diff --git a/examples/bare/src/components/TopControl.tsx b/examples/common/components/TopControl.tsx
similarity index 100%
rename from examples/bare/src/components/TopControl.tsx
rename to examples/common/components/TopControl.tsx
diff --git a/examples/bare/src/components/VideoLoader.tsx b/examples/common/components/VideoLoader.tsx
similarity index 100%
rename from examples/bare/src/components/VideoLoader.tsx
rename to examples/common/components/VideoLoader.tsx
diff --git a/examples/bare/src/components/VideoTracksSelector.tsx b/examples/common/components/VideoTracksSelector.tsx
similarity index 100%
rename from examples/bare/src/components/VideoTracksSelector.tsx
rename to examples/common/components/VideoTracksSelector.tsx
diff --git a/examples/bare/src/components/index.ts b/examples/common/components/index.ts
similarity index 100%
rename from examples/bare/src/components/index.ts
rename to examples/common/components/index.ts
diff --git a/examples/bare/src/constants/general.ts b/examples/common/constants/general.ts
similarity index 100%
rename from examples/bare/src/constants/general.ts
rename to examples/common/constants/general.ts
diff --git a/examples/bare/src/constants/index.ts b/examples/common/constants/index.ts
similarity index 100%
rename from examples/bare/src/constants/index.ts
rename to examples/common/constants/index.ts
diff --git a/examples/bare/src/styles.tsx b/examples/common/styles.tsx
similarity index 100%
rename from examples/bare/src/styles.tsx
rename to examples/common/styles.tsx
diff --git a/examples/bare/src/types/index.ts b/examples/common/types/index.ts
similarity index 100%
rename from examples/bare/src/types/index.ts
rename to examples/common/types/index.ts
diff --git a/examples/bare/src/types/types.ts b/examples/common/types/types.ts
similarity index 100%
rename from examples/bare/src/types/types.ts
rename to examples/common/types/types.ts
diff --git a/examples/expo/App.tsx b/examples/expo/App.tsx
index 534be5ba..125c7094 100644
--- a/examples/expo/App.tsx
+++ b/examples/expo/App.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import BasicExample from './src/BasicExample';
+import BasicExample from 'common/BasicExample';
export default function App() {
return ;
diff --git a/examples/expo/ios/Podfile.lock b/examples/expo/ios/Podfile.lock
index 09bebeeb..0b4e0fa2 100644
--- a/examples/expo/ios/Podfile.lock
+++ b/examples/expo/ios/Podfile.lock
@@ -38,12 +38,12 @@ PODS:
- Yoga
- ExpoSplashScreen (0.29.11):
- ExpoModulesCore
- - FBLazyVector (0.76.2)
+ - FBLazyVector (0.76.2-0)
- fmt (9.1.0)
- glog (0.3.5)
- - hermes-engine (0.76.2):
- - hermes-engine/Pre-built (= 0.76.2)
- - hermes-engine/Pre-built (0.76.2)
+ - hermes-engine (0.76.2-0):
+ - hermes-engine/Pre-built (= 0.76.2-0)
+ - hermes-engine/Pre-built (0.76.2-0)
- RCT-Folly (2024.01.01.00):
- boost
- DoubleConversion
@@ -60,32 +60,31 @@ PODS:
- DoubleConversion
- fmt (= 9.1.0)
- glog
- - RCTDeprecation (0.76.2)
- - RCTRequired (0.76.2)
- - RCTTypeSafety (0.76.2):
- - FBLazyVector (= 0.76.2)
- - RCTRequired (= 0.76.2)
- - React-Core (= 0.76.2)
- - React (0.76.2):
- - React-Core (= 0.76.2)
- - React-Core/DevSupport (= 0.76.2)
- - React-Core/RCTWebSocket (= 0.76.2)
- - React-RCTActionSheet (= 0.76.2)
- - React-RCTAnimation (= 0.76.2)
- - React-RCTBlob (= 0.76.2)
- - React-RCTImage (= 0.76.2)
- - React-RCTLinking (= 0.76.2)
- - React-RCTNetwork (= 0.76.2)
- - React-RCTSettings (= 0.76.2)
- - React-RCTText (= 0.76.2)
- - React-RCTVibration (= 0.76.2)
- - React-callinvoker (0.76.2)
- - React-Core (0.76.2):
+ - RCTDeprecation (0.76.2-0)
+ - RCTRequired (0.76.2-0)
+ - RCTTypeSafety (0.76.2-0):
+ - FBLazyVector (= 0.76.2-0)
+ - RCTRequired (= 0.76.2-0)
+ - React-Core (= 0.76.2-0)
+ - React (0.76.2-0):
+ - React-Core (= 0.76.2-0)
+ - React-Core/DevSupport (= 0.76.2-0)
+ - React-Core/RCTWebSocket (= 0.76.2-0)
+ - React-RCTActionSheet (= 0.76.2-0)
+ - React-RCTAnimation (= 0.76.2-0)
+ - React-RCTBlob (= 0.76.2-0)
+ - React-RCTImage (= 0.76.2-0)
+ - React-RCTLinking (= 0.76.2-0)
+ - React-RCTNetwork (= 0.76.2-0)
+ - React-RCTSettings (= 0.76.2-0)
+ - React-RCTText (= 0.76.2-0)
+ - React-callinvoker (0.76.2-0)
+ - React-Core (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTDeprecation
- - React-Core/Default (= 0.76.2)
+ - React-Core/Default (= 0.76.2-0)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -97,7 +96,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/CoreModulesHeaders (0.76.2):
+ - React-Core/CoreModulesHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -114,7 +113,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/Default (0.76.2):
+ - React-Core/Default (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -130,13 +129,13 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/DevSupport (0.76.2):
+ - React-Core/DevSupport (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTDeprecation
- - React-Core/Default (= 0.76.2)
- - React-Core/RCTWebSocket (= 0.76.2)
+ - React-Core/Default (= 0.76.2-0)
+ - React-Core/RCTWebSocket (= 0.76.2-0)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -148,7 +147,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTActionSheetHeaders (0.76.2):
+ - React-Core/RCTActionSheetHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -165,7 +164,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTAnimationHeaders (0.76.2):
+ - React-Core/RCTAnimationHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -182,7 +181,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTBlobHeaders (0.76.2):
+ - React-Core/RCTBlobHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -199,7 +198,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTImageHeaders (0.76.2):
+ - React-Core/RCTImageHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -216,7 +215,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTLinkingHeaders (0.76.2):
+ - React-Core/RCTLinkingHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -233,7 +232,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTNetworkHeaders (0.76.2):
+ - React-Core/RCTNetworkHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -250,7 +249,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTSettingsHeaders (0.76.2):
+ - React-Core/RCTSettingsHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -267,7 +266,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTTextHeaders (0.76.2):
+ - React-Core/RCTTextHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -284,7 +283,7 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTVibrationHeaders (0.76.2):
+ - React-Core/RCTVibrationHeaders (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -301,12 +300,12 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-Core/RCTWebSocket (0.76.2):
+ - React-Core/RCTWebSocket (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTDeprecation
- - React-Core/Default (= 0.76.2)
+ - React-Core/Default (= 0.76.2-0)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -318,37 +317,37 @@ PODS:
- React-utils
- SocketRocket (= 0.7.1)
- Yoga
- - React-CoreModules (0.76.2):
+ - React-CoreModules (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- RCT-Folly (= 2024.01.01.00)
- - RCTTypeSafety (= 0.76.2)
- - React-Core/CoreModulesHeaders (= 0.76.2)
- - React-jsi (= 0.76.2)
+ - RCTTypeSafety (= 0.76.2-0)
+ - React-Core/CoreModulesHeaders (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
- React-jsinspector
- React-NativeModulesApple
- React-RCTBlob
- - React-RCTImage (= 0.76.2)
+ - React-RCTImage (= 0.76.2-0)
- ReactCodegen
- ReactCommon
- SocketRocket (= 0.7.1)
- - React-cxxreact (0.76.2):
+ - React-cxxreact (0.76.2-0):
- boost
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-callinvoker (= 0.76.2)
- - React-debug (= 0.76.2)
- - React-jsi (= 0.76.2)
+ - React-callinvoker (= 0.76.2-0)
+ - React-debug (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
- React-jsinspector
- - React-logger (= 0.76.2)
- - React-perflogger (= 0.76.2)
- - React-runtimeexecutor (= 0.76.2)
- - React-timing (= 0.76.2)
- - React-debug (0.76.2)
- - React-defaultsnativemodule (0.76.2):
+ - React-logger (= 0.76.2-0)
+ - React-perflogger (= 0.76.2-0)
+ - React-runtimeexecutor (= 0.76.2-0)
+ - React-timing (= 0.76.2-0)
+ - React-debug (0.76.2-0)
+ - React-defaultsnativemodule (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -373,7 +372,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - React-domnativemodule (0.76.2):
+ - React-domnativemodule (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -395,7 +394,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - React-Fabric (0.76.2):
+ - React-Fabric (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -406,21 +405,21 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/animations (= 0.76.2)
- - React-Fabric/attributedstring (= 0.76.2)
- - React-Fabric/componentregistry (= 0.76.2)
- - React-Fabric/componentregistrynative (= 0.76.2)
- - React-Fabric/components (= 0.76.2)
- - React-Fabric/core (= 0.76.2)
- - React-Fabric/dom (= 0.76.2)
- - React-Fabric/imagemanager (= 0.76.2)
- - React-Fabric/leakchecker (= 0.76.2)
- - React-Fabric/mounting (= 0.76.2)
- - React-Fabric/observers (= 0.76.2)
- - React-Fabric/scheduler (= 0.76.2)
- - React-Fabric/telemetry (= 0.76.2)
- - React-Fabric/templateprocessor (= 0.76.2)
- - React-Fabric/uimanager (= 0.76.2)
+ - React-Fabric/animations (= 0.76.2-0)
+ - React-Fabric/attributedstring (= 0.76.2-0)
+ - React-Fabric/componentregistry (= 0.76.2-0)
+ - React-Fabric/componentregistrynative (= 0.76.2-0)
+ - React-Fabric/components (= 0.76.2-0)
+ - React-Fabric/core (= 0.76.2-0)
+ - React-Fabric/dom (= 0.76.2-0)
+ - React-Fabric/imagemanager (= 0.76.2-0)
+ - React-Fabric/leakchecker (= 0.76.2-0)
+ - React-Fabric/mounting (= 0.76.2-0)
+ - React-Fabric/observers (= 0.76.2-0)
+ - React-Fabric/scheduler (= 0.76.2-0)
+ - React-Fabric/telemetry (= 0.76.2-0)
+ - React-Fabric/templateprocessor (= 0.76.2-0)
+ - React-Fabric/uimanager (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -430,7 +429,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/animations (0.76.2):
+ - React-Fabric/animations (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -450,7 +449,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/attributedstring (0.76.2):
+ - React-Fabric/attributedstring (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -470,7 +469,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/componentregistry (0.76.2):
+ - React-Fabric/componentregistry (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -490,7 +489,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/componentregistrynative (0.76.2):
+ - React-Fabric/componentregistrynative (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -510,7 +509,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/components (0.76.2):
+ - React-Fabric/components (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -521,9 +520,9 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.76.2)
- - React-Fabric/components/root (= 0.76.2)
- - React-Fabric/components/view (= 0.76.2)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.76.2-0)
+ - React-Fabric/components/root (= 0.76.2-0)
+ - React-Fabric/components/view (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -533,7 +532,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/components/legacyviewmanagerinterop (0.76.2):
+ - React-Fabric/components/legacyviewmanagerinterop (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -553,7 +552,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/components/root (0.76.2):
+ - React-Fabric/components/root (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -573,7 +572,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/components/view (0.76.2):
+ - React-Fabric/components/view (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -594,7 +593,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- Yoga
- - React-Fabric/core (0.76.2):
+ - React-Fabric/core (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -614,7 +613,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/dom (0.76.2):
+ - React-Fabric/dom (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -634,7 +633,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/imagemanager (0.76.2):
+ - React-Fabric/imagemanager (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -654,7 +653,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/leakchecker (0.76.2):
+ - React-Fabric/leakchecker (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -674,7 +673,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/mounting (0.76.2):
+ - React-Fabric/mounting (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -694,7 +693,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/observers (0.76.2):
+ - React-Fabric/observers (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -705,7 +704,7 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.76.2)
+ - React-Fabric/observers/events (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -715,7 +714,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/observers/events (0.76.2):
+ - React-Fabric/observers/events (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -735,7 +734,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/scheduler (0.76.2):
+ - React-Fabric/scheduler (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -757,7 +756,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/telemetry (0.76.2):
+ - React-Fabric/telemetry (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -777,7 +776,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/templateprocessor (0.76.2):
+ - React-Fabric/templateprocessor (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -797,7 +796,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/uimanager (0.76.2):
+ - React-Fabric/uimanager (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -808,7 +807,7 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.76.2)
+ - React-Fabric/uimanager/consistency (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -819,7 +818,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-Fabric/uimanager/consistency (0.76.2):
+ - React-Fabric/uimanager/consistency (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -840,7 +839,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - React-FabricComponents (0.76.2):
+ - React-FabricComponents (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -852,8 +851,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.76.2)
- - React-FabricComponents/textlayoutmanager (= 0.76.2)
+ - React-FabricComponents/components (= 0.76.2-0)
+ - React-FabricComponents/textlayoutmanager (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -865,7 +864,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components (0.76.2):
+ - React-FabricComponents/components (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -877,15 +876,15 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.76.2)
- - React-FabricComponents/components/iostextinput (= 0.76.2)
- - React-FabricComponents/components/modal (= 0.76.2)
- - React-FabricComponents/components/rncore (= 0.76.2)
- - React-FabricComponents/components/safeareaview (= 0.76.2)
- - React-FabricComponents/components/scrollview (= 0.76.2)
- - React-FabricComponents/components/text (= 0.76.2)
- - React-FabricComponents/components/textinput (= 0.76.2)
- - React-FabricComponents/components/unimplementedview (= 0.76.2)
+ - React-FabricComponents/components/inputaccessory (= 0.76.2-0)
+ - React-FabricComponents/components/iostextinput (= 0.76.2-0)
+ - React-FabricComponents/components/modal (= 0.76.2-0)
+ - React-FabricComponents/components/rncore (= 0.76.2-0)
+ - React-FabricComponents/components/safeareaview (= 0.76.2-0)
+ - React-FabricComponents/components/scrollview (= 0.76.2-0)
+ - React-FabricComponents/components/text (= 0.76.2-0)
+ - React-FabricComponents/components/textinput (= 0.76.2-0)
+ - React-FabricComponents/components/unimplementedview (= 0.76.2-0)
- React-featureflags
- React-graphics
- React-jsi
@@ -897,7 +896,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/inputaccessory (0.76.2):
+ - React-FabricComponents/components/inputaccessory (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -920,7 +919,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/iostextinput (0.76.2):
+ - React-FabricComponents/components/iostextinput (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -943,7 +942,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/modal (0.76.2):
+ - React-FabricComponents/components/modal (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -966,7 +965,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/rncore (0.76.2):
+ - React-FabricComponents/components/rncore (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -989,7 +988,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/safeareaview (0.76.2):
+ - React-FabricComponents/components/safeareaview (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1012,7 +1011,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/scrollview (0.76.2):
+ - React-FabricComponents/components/scrollview (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1035,7 +1034,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/text (0.76.2):
+ - React-FabricComponents/components/text (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1058,7 +1057,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/textinput (0.76.2):
+ - React-FabricComponents/components/textinput (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1081,7 +1080,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/components/unimplementedview (0.76.2):
+ - React-FabricComponents/components/unimplementedview (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1104,7 +1103,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricComponents/textlayoutmanager (0.76.2):
+ - React-FabricComponents/textlayoutmanager (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1127,26 +1126,26 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/core
- Yoga
- - React-FabricImage (0.76.2):
+ - React-FabricImage (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
- - RCTRequired (= 0.76.2)
- - RCTTypeSafety (= 0.76.2)
+ - RCTRequired (= 0.76.2-0)
+ - RCTTypeSafety (= 0.76.2-0)
- React-Fabric
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.76.2)
+ - React-jsiexecutor (= 0.76.2-0)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- Yoga
- - React-featureflags (0.76.2)
- - React-featureflagsnativemodule (0.76.2):
+ - React-featureflags (0.76.2-0)
+ - React-featureflagsnativemodule (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -1167,7 +1166,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - React-graphics (0.76.2):
+ - React-graphics (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
@@ -1175,19 +1174,19 @@ PODS:
- React-jsi
- React-jsiexecutor
- React-utils
- - React-hermes (0.76.2):
+ - React-hermes (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-cxxreact (= 0.76.2)
+ - React-cxxreact (= 0.76.2-0)
- React-jsi
- - React-jsiexecutor (= 0.76.2)
+ - React-jsiexecutor (= 0.76.2-0)
- React-jsinspector
- - React-perflogger (= 0.76.2)
+ - React-perflogger (= 0.76.2-0)
- React-runtimeexecutor
- - React-idlecallbacksnativemodule (0.76.2):
+ - React-idlecallbacksnativemodule (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -1209,7 +1208,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - React-ImageManager (0.76.2):
+ - React-ImageManager (0.76.2-0):
- glog
- RCT-Folly/Fabric
- React-Core/Default
@@ -1218,47 +1217,47 @@ PODS:
- React-graphics
- React-rendererdebug
- React-utils
- - React-jserrorhandler (0.76.2):
+ - React-jserrorhandler (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
- React-cxxreact
- React-debug
- React-jsi
- - React-jsi (0.76.2):
+ - React-jsi (0.76.2-0):
- boost
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-jsiexecutor (0.76.2):
+ - React-jsiexecutor (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-cxxreact (= 0.76.2)
- - React-jsi (= 0.76.2)
+ - React-cxxreact (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
- React-jsinspector
- - React-perflogger (= 0.76.2)
- - React-jsinspector (0.76.2):
+ - React-perflogger (= 0.76.2-0)
+ - React-jsinspector (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- React-featureflags
- React-jsi
- - React-perflogger (= 0.76.2)
- - React-runtimeexecutor (= 0.76.2)
- - React-jsitracing (0.76.2):
+ - React-perflogger (= 0.76.2-0)
+ - React-runtimeexecutor (= 0.76.2-0)
+ - React-jsitracing (0.76.2-0):
- React-jsi
- - React-logger (0.76.2):
+ - React-logger (0.76.2-0):
- glog
- - React-Mapbuffer (0.76.2):
+ - React-Mapbuffer (0.76.2-0):
- glog
- React-debug
- - React-microtasksnativemodule (0.76.2):
+ - React-microtasksnativemodule (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -1279,7 +1278,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - react-native-video (6.7.0):
+ - react-native-video (6.10.0):
- DoubleConversion
- glog
- hermes-engine
@@ -1292,7 +1291,7 @@ PODS:
- React-featureflags
- React-graphics
- React-ImageManager
- - react-native-video/Video (= 6.7.0)
+ - react-native-video/Video (= 6.10.0)
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
@@ -1323,7 +1322,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - react-native-video/Video (6.7.0):
+ - react-native-video/Video (6.10.0):
- DoubleConversion
- glog
- hermes-engine
@@ -1344,8 +1343,8 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - React-nativeconfig (0.76.2)
- - React-NativeModulesApple (0.76.2):
+ - React-nativeconfig (0.76.2-0)
+ - React-NativeModulesApple (0.76.2-0):
- glog
- hermes-engine
- React-callinvoker
@@ -1356,16 +1355,16 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-perflogger (0.76.2):
+ - React-perflogger (0.76.2-0):
- DoubleConversion
- RCT-Folly (= 2024.01.01.00)
- - React-performancetimeline (0.76.2):
+ - React-performancetimeline (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- React-cxxreact
- React-timing
- - React-RCTActionSheet (0.76.2):
- - React-Core/RCTActionSheetHeaders (= 0.76.2)
- - React-RCTAnimation (0.76.2):
+ - React-RCTActionSheet (0.76.2-0):
+ - React-Core/RCTActionSheetHeaders (= 0.76.2-0)
+ - React-RCTAnimation (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- RCTTypeSafety
- React-Core/RCTAnimationHeaders
@@ -1373,7 +1372,7 @@ PODS:
- React-NativeModulesApple
- ReactCodegen
- ReactCommon
- - React-RCTAppDelegate (0.76.2):
+ - React-RCTAppDelegate (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
@@ -1398,7 +1397,7 @@ PODS:
- React-utils
- ReactCodegen
- ReactCommon
- - React-RCTBlob (0.76.2):
+ - React-RCTBlob (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- hermes-engine
@@ -1411,7 +1410,7 @@ PODS:
- React-RCTNetwork
- ReactCodegen
- ReactCommon
- - React-RCTFabric (0.76.2):
+ - React-RCTFabric (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
@@ -1434,7 +1433,7 @@ PODS:
- React-runtimescheduler
- React-utils
- Yoga
- - React-RCTImage (0.76.2):
+ - React-RCTImage (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- RCTTypeSafety
- React-Core/RCTImageHeaders
@@ -1443,14 +1442,14 @@ PODS:
- React-RCTNetwork
- ReactCodegen
- ReactCommon
- - React-RCTLinking (0.76.2):
- - React-Core/RCTLinkingHeaders (= 0.76.2)
- - React-jsi (= 0.76.2)
+ - React-RCTLinking (0.76.2-0):
+ - React-Core/RCTLinkingHeaders (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
- React-NativeModulesApple
- ReactCodegen
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.76.2)
- - React-RCTNetwork (0.76.2):
+ - ReactCommon/turbomodule/core (= 0.76.2-0)
+ - React-RCTNetwork (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- RCTTypeSafety
- React-Core/RCTNetworkHeaders
@@ -1458,7 +1457,7 @@ PODS:
- React-NativeModulesApple
- ReactCodegen
- ReactCommon
- - React-RCTSettings (0.76.2):
+ - React-RCTSettings (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- RCTTypeSafety
- React-Core/RCTSettingsHeaders
@@ -1466,24 +1465,24 @@ PODS:
- React-NativeModulesApple
- ReactCodegen
- ReactCommon
- - React-RCTText (0.76.2):
- - React-Core/RCTTextHeaders (= 0.76.2)
+ - React-RCTText (0.76.2-0):
+ - React-Core/RCTTextHeaders (= 0.76.2-0)
- Yoga
- - React-RCTVibration (0.76.2):
+ - React-RCTVibration (0.76.2-0):
- RCT-Folly (= 2024.01.01.00)
- React-Core/RCTVibrationHeaders
- React-jsi
- React-NativeModulesApple
- ReactCodegen
- ReactCommon
- - React-rendererconsistency (0.76.2)
- - React-rendererdebug (0.76.2):
+ - React-rendererconsistency (0.76.2-0)
+ - React-rendererdebug (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- RCT-Folly (= 2024.01.01.00)
- React-debug
- - React-rncore (0.76.2)
- - React-RuntimeApple (0.76.2):
+ - React-rncore (0.76.2-0)
+ - React-RuntimeApple (0.76.2-0):
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
- React-callinvoker
@@ -1502,7 +1501,7 @@ PODS:
- React-RuntimeHermes
- React-runtimescheduler
- React-utils
- - React-RuntimeCore (0.76.2):
+ - React-RuntimeCore (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
@@ -1516,9 +1515,9 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - React-runtimeexecutor (0.76.2):
- - React-jsi (= 0.76.2)
- - React-RuntimeHermes (0.76.2):
+ - React-runtimeexecutor (0.76.2-0):
+ - React-jsi (= 0.76.2-0)
+ - React-RuntimeHermes (0.76.2-0):
- hermes-engine
- RCT-Folly/Fabric (= 2024.01.01.00)
- React-featureflags
@@ -1529,7 +1528,7 @@ PODS:
- React-nativeconfig
- React-RuntimeCore
- React-utils
- - React-runtimescheduler (0.76.2):
+ - React-runtimescheduler (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
@@ -1544,14 +1543,14 @@ PODS:
- React-runtimeexecutor
- React-timing
- React-utils
- - React-timing (0.76.2)
- - React-utils (0.76.2):
+ - React-timing (0.76.2-0)
+ - React-utils (0.76.2-0):
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- React-debug
- - React-jsi (= 0.76.2)
- - ReactCodegen (0.76.2):
+ - React-jsi (= 0.76.2-0)
+ - ReactCodegen (0.76.2-0):
- DoubleConversion
- glog
- hermes-engine
@@ -1571,46 +1570,46 @@ PODS:
- React-utils
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - ReactCommon (0.76.2):
- - ReactCommon/turbomodule (= 0.76.2)
- - ReactCommon/turbomodule (0.76.2):
+ - ReactCommon (0.76.2-0):
+ - ReactCommon/turbomodule (= 0.76.2-0)
+ - ReactCommon/turbomodule (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-callinvoker (= 0.76.2)
- - React-cxxreact (= 0.76.2)
- - React-jsi (= 0.76.2)
- - React-logger (= 0.76.2)
- - React-perflogger (= 0.76.2)
- - ReactCommon/turbomodule/bridging (= 0.76.2)
- - ReactCommon/turbomodule/core (= 0.76.2)
- - ReactCommon/turbomodule/bridging (0.76.2):
+ - React-callinvoker (= 0.76.2-0)
+ - React-cxxreact (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
+ - React-logger (= 0.76.2-0)
+ - React-perflogger (= 0.76.2-0)
+ - ReactCommon/turbomodule/bridging (= 0.76.2-0)
+ - ReactCommon/turbomodule/core (= 0.76.2-0)
+ - ReactCommon/turbomodule/bridging (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-callinvoker (= 0.76.2)
- - React-cxxreact (= 0.76.2)
- - React-jsi (= 0.76.2)
- - React-logger (= 0.76.2)
- - React-perflogger (= 0.76.2)
- - ReactCommon/turbomodule/core (0.76.2):
+ - React-callinvoker (= 0.76.2-0)
+ - React-cxxreact (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
+ - React-logger (= 0.76.2-0)
+ - React-perflogger (= 0.76.2-0)
+ - ReactCommon/turbomodule/core (0.76.2-0):
- DoubleConversion
- fmt (= 9.1.0)
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- - React-callinvoker (= 0.76.2)
- - React-cxxreact (= 0.76.2)
- - React-debug (= 0.76.2)
- - React-featureflags (= 0.76.2)
- - React-jsi (= 0.76.2)
- - React-logger (= 0.76.2)
- - React-perflogger (= 0.76.2)
- - React-utils (= 0.76.2)
+ - React-callinvoker (= 0.76.2-0)
+ - React-cxxreact (= 0.76.2-0)
+ - React-debug (= 0.76.2-0)
+ - React-featureflags (= 0.76.2-0)
+ - React-jsi (= 0.76.2-0)
+ - React-logger (= 0.76.2-0)
+ - React-perflogger (= 0.76.2-0)
+ - React-utils (= 0.76.2-0)
- RNCPicker (2.9.0):
- React-Core
- SocketRocket (0.7.1)
@@ -1860,71 +1859,71 @@ SPEC CHECKSUMS:
ExpoKeepAwake: 783e68647b969b210a786047c3daa7b753dcac1f
ExpoModulesCore: 2d1df04dc27f91d8b383c0ec7f1d121e3d9b7f68
ExpoSplashScreen: 26cee50e9e95572baf87cd3a8ccaf2ffc3856422
- FBLazyVector: bc70dcb22ad30ce734a7cce7210791dc737e230f
+ FBLazyVector: 6bbb8b88508d32cdf0ffb7ceddedf6aca79eff14
fmt: a150d37a5595336f19c91e6f1db7fcf17d5eb99f
glog: 9ab333e271c177cecb6362fe27832c88667cb7e9
- hermes-engine: 3852e37f6158a2fcfad23e31215ed495da3a6a40
+ hermes-engine: 7bc33a9a81e6a58b3bc3426105ecd59981ac730e
RCT-Folly: 2512380c804686400e7f60b9e8b60525df4a6191
- RCTDeprecation: d575d28132f93e5deef4849d5afffb4ac4e63226
- RCTRequired: e2e5df1df76aac8685aabfebca389e6bec64792b
- RCTTypeSafety: 30e36ceafa26979860e13fb3f234fb61692924c2
- React: 10ad41b51f981992714011b6a4e081234c28dc2e
- React-callinvoker: 58b51494f8b2cca07a27fc6f69273239c30a1e70
- React-Core: 54860c16fb5873a6f00dd44d8979bbb648b34c7c
- React-CoreModules: 443101f113a7b5d51b93e061574dcadf7850f8cc
- React-cxxreact: 5407ecb854a755de34c0e6b03965d3a51c28c933
- React-debug: 252c723eb205cc508aa9690a16dff46293c30ed8
- React-defaultsnativemodule: 0d983d9db88d87aa069016e8efce2008aa7922ed
- React-domnativemodule: c59883e41a571db75c530221d40a86c4f0b150ff
- React-Fabric: 58696d9eaee305bb5a5af26071966dcfb941f9eb
- React-FabricComponents: a037b977430eceae4bac539934497bacc8de3971
- React-FabricImage: 2658c3e383195f69e7c83e4f75519bee17c3169a
- React-featureflags: 7dc483869b3a940dcd92c7942c5e3492ad6afe68
- React-featureflagsnativemodule: 4632286176fb4ec110e392bff37e1b958971719b
- React-graphics: 066863eb87b142f0603fed08c71bac452238ac3e
- React-hermes: 8f31f252aff98a4cb711ccf6644cccfe35d8edd1
- React-idlecallbacksnativemodule: bb67b2e497d025e9e1e2a06e4208c1e66c1c2683
- React-ImageManager: 36240f8ab7181551574ca443da507272dbbf7014
- React-jserrorhandler: 1aa045c492222751dc476bcb973f787e82f952b9
- React-jsi: b96853ac12c1dab5fe3ea131f959fda0bbaf1151
- React-jsiexecutor: e38748a0e9d899f63dec562f93ac06c7acbc813d
- React-jsinspector: 91b3c73d2afb7627af7872cedb0b74a0f00f57d1
- React-jsitracing: a340047c9fd31a36b222569c402e472e20557805
- React-logger: 81d58ca6f1d93fca9a770bda6cc1c4fbfcc99c9c
- React-Mapbuffer: 726951e68f4bb1c2513d322f2548798b2a3d628d
- React-microtasksnativemodule: bc55596cbf40957f5099bc495f1a06f459d0be88
- react-native-video: 9aec95eecb1c523b67e71a44032935f77f926276
+ RCTDeprecation: b90bc991c207fa777f3d4f0d7f36d7473e62319a
+ RCTRequired: c8fda281396e4e5cf96e3ab216c05986fb37ca3e
+ RCTTypeSafety: 28a29fb79051f043943135d2e4403e77d3b7ec21
+ React: dade949d9edcee964714fe90a2892beef3d3a54b
+ React-callinvoker: a6517e487e1645d2bc627be8d86b1f8dd5278bb5
+ React-Core: 7010fbd0ed122476aa2cf7aa9619ec9ffb73c551
+ React-CoreModules: 64eea3d14266e79f8362da71623a5157a7a6c41f
+ React-cxxreact: 01f36b93aa3c923f7607c50a43cc2b5a06129f07
+ React-debug: 25139c51b9fda09bb1745952c81cea9f46225d6a
+ React-defaultsnativemodule: 3805189f0d7bce05b3650d364676cf9b49e75eab
+ React-domnativemodule: abb803da2e62c1acbae61d277fd044fe77f6a9af
+ React-Fabric: c8d1c4207248fbaf9c046d92d81bab67d4694122
+ React-FabricComponents: 7147628a2fec488771369e0a0dead89ad9649e0e
+ React-FabricImage: f814221b18a7d560baaa5fb807895c4c345036be
+ React-featureflags: b684bbc804b9c85754fd009167a527a6eadbd9d5
+ React-featureflagsnativemodule: 8b29cc7a659d17d0072924a83de9cf9a62a4d147
+ React-graphics: 4d7d1fa0ea456c398de7b1f40f708885bccec2e8
+ React-hermes: 981bd8b0f89a50a8fd06079bbdc4b11003135021
+ React-idlecallbacksnativemodule: 12e7223f085d9d0b82aa0a10b0691294b11c792e
+ React-ImageManager: 4300a7a83ee603351659dade2e61e673ae3b88d2
+ React-jserrorhandler: 40984dfabb1ab0b2e21d9d21af66530d5309aad0
+ React-jsi: ecb93733e8efcd240957abf32b33624ce207d1f9
+ React-jsiexecutor: 7ceddf35714b4c4a95ea1f590a16d96b1d577c49
+ React-jsinspector: fe8b01493fb3cb8c6b946cb24c3e83e5d774fb1e
+ React-jsitracing: 47a37e9a623aadd867574d8143fa314df57f1f49
+ React-logger: e928ead07d07fbe16f5bebc7ee004bfb7bf731d5
+ React-Mapbuffer: 08b067fc26d19868b0a1fea3586d92afff4e8e4f
+ React-microtasksnativemodule: 309d3c6653f4ffcb8a3956604e07ab19b006ef82
+ react-native-video: 25ecb15d6ac0f97e2d863cbe317c70bd6e8f1a6e
react-native-video-plugin-sample: 1f6b1dda047cdf07f6cd7e730dc92c1349656b1a
- React-nativeconfig: 470fce6d871c02dc5eff250a362d56391b7f52d6
- React-NativeModulesApple: 6297fc3136c1fd42884795c51d7207de6312b606
- React-perflogger: f2c94413cfad44817c96cab33753831e73f0d0dd
- React-performancetimeline: d6e493713e6aab3cc8b7c1c07e97160e22dd79cc
- React-RCTActionSheet: 2eb26cbf384f3d3b2cb2e23be850a956d83f77ab
- React-RCTAnimation: 59463699a92edc6705ce5306bb789d6a0ca4df0b
- React-RCTAppDelegate: c4ec243c440e4eaec813a07c26626e9b11d6f9ec
- React-RCTBlob: 0883f5363069ad30f628c970fcb413a619e42804
- React-RCTFabric: abc9810407f5f45b0e1945d96ac86d1564d5a438
- React-RCTImage: 78884b7ea6ef4f7bb9655614bf09a40054f282ce
- React-RCTLinking: b9beba7465fd9a1ed7a88a4e7fc403d26e17ab95
- React-RCTNetwork: 701d9c050077596b15a11b6b573ed95c309d2315
- React-RCTSettings: e700a82e3e923c10060b8f65297f9d321b93d8eb
- React-RCTText: e782ce1c3f9d915daf50d97157f8c226e8f3d206
- React-RCTVibration: 2a19c56be78cb7afce9f4f3471aacfb063f32a00
- React-rendererconsistency: b389e324712bf0869529823216e922836ed9b737
- React-rendererdebug: 9f5629032c0937c62b21dcaf96b374a149bf8a44
- React-rncore: 2cf6b2348ee5d5431c4735180364b207ecf47123
- React-RuntimeApple: 84d648b9a87c34041d6628dde50d1acf54e5bf89
- React-RuntimeCore: 79290b2eb17a25c1b23c4d5dde13d43c20467eef
- React-runtimeexecutor: 69e27948ee2127400297c7de50b809a7cd127a15
- React-RuntimeHermes: 5fe2082f98187410c1815c532f72348fbe1d0517
- React-runtimescheduler: 95b7087f459699756c1b7feb3f4637066c337b62
- React-timing: 97673939f96f79031d2a5a0a92285618475149ec
- React-utils: ed6cb7ba089ac0856aa104df12691e99abbf14e1
- ReactCodegen: 93b271af49774429f34d7fd561197020d86436e2
- ReactCommon: 208cb02e3c0bb8a727b3e1a1782202bcfa5d9631
+ React-nativeconfig: e90353e1c5ab46843222e25d529d342c174184f4
+ React-NativeModulesApple: 5f46e9be9fbff00c706cb31a91753975e99f86a1
+ React-perflogger: a629f2ce2eeab290cfc851a015c5d804a8b36f20
+ React-performancetimeline: 09eaa1261ce7b3d51dcd8001f922c7b7f018957c
+ React-RCTActionSheet: 0622ace751a55109844ff5d6239c83ae36f193d6
+ React-RCTAnimation: 8651b17476b17d97d7f0fad16d9020f9b1724226
+ React-RCTAppDelegate: 09147856b3e6c55f45afc32f485697b9c7097830
+ React-RCTBlob: 4ce6e176c0b0999b6ae907537c665dec382095ca
+ React-RCTFabric: 6d6d776ec2bb746a599ca113da4c9e5e30519175
+ React-RCTImage: 1ba821a26daf160f596266f78b084df38bad43bf
+ React-RCTLinking: b913efa56e459a7c9bd8575ea35fffcd43d2b226
+ React-RCTNetwork: ff7b971a79b35407aa7fc84d0d34d4bf87977832
+ React-RCTSettings: a40d2c591ea4b3ebeb0d5fca84cef83bf3a808b8
+ React-RCTText: 54e4c01e54f2b323494950100b3f96a44c8d756a
+ React-RCTVibration: 415d77ace6572495a7fabc0013794eb232263f61
+ React-rendererconsistency: abd0c952e6447de1851995630d388adb756c5490
+ React-rendererdebug: 931afa3e69cad5617d70fc8d22a51b8f0b8962ab
+ React-rncore: 4fa27b1f5758f1e43daecaca33828b6724ff975e
+ React-RuntimeApple: bc87436ff646bc38b3b40b5c1b64b3292083b5d6
+ React-RuntimeCore: 4588a5b4bf68324088d3aba640c7aecda1f8ccf7
+ React-runtimeexecutor: 369f2c0dd457ecc25d8aca20717b8b7c655fea30
+ React-RuntimeHermes: fa0dbe3e215052f6f2a64961a81292a7d8a29cc1
+ React-runtimescheduler: 0c3791a76e2c851a6c0387549f6288cb9dd6e3d6
+ React-timing: d1b4d886b3ad54cb7d7902551d6f326de16b13d3
+ React-utils: 5b35e0df4b1e5414ccb7aad3295de9e422d19265
+ ReactCodegen: 64ba3fd7eb98692015dbd29ca0ca38ea2c5f92c6
+ ReactCommon: 8676c2ee5eb8c937ea33df7c91f42d4cd9e95e79
RNCPicker: f963e01f78e546a93b98aa201501713dbda14e94
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
- Yoga: c5b0e913b5b3b4cde588227c1402e747797061f3
+ Yoga: aaa386a35c44b356306dafca9e8afd81877fb7ed
PODFILE CHECKSUM: 90d803972b4acfc1d2bb6dbe7b0713677a2ff655
diff --git a/examples/expo/metro.config.js b/examples/expo/metro.config.js
index 4ec138cb..325d4158 100644
--- a/examples/expo/metro.config.js
+++ b/examples/expo/metro.config.js
@@ -27,7 +27,7 @@ const pak = require('../../package.json');
const modules = Object.keys({...pak.peerDependencies});
// Watch the
-config.watchFolders = [repoRoot, path.resolve(projectRoot, '../..')];
+config.watchFolders = [repoRoot, path.resolve(projectRoot, '../..'), path.resolve(projectRoot, '../common')];
// Add the root node_modules to the resolver's search path
config.resolver.nodeModulesPaths = [
@@ -42,6 +42,8 @@ config.resolver.extraNodeModules = modules.reduce((acc, name) => {
return acc;
}, {});
+config.resolver.extraNodeModules = {...config.resolver.extraNodeModules, 'common': path.resolve(projectRoot, '../common')}
+
// We need to make sure that only one version is loaded for peerDependencies
// So we block them at the root, and alias them to the versions in example's node_modules
config.resolver.blacklistRE = blacklist([
diff --git a/examples/expo/package.json b/examples/expo/package.json
index faa6f2ff..431c80dd 100644
--- a/examples/expo/package.json
+++ b/examples/expo/package.json
@@ -2,7 +2,6 @@
"name": "expoexample",
"version": "1.0.0",
"scripts": {
- "postinstall": "yarn update-src",
"start": "expo start",
"start:tv": "EXPO_TV=1 expo start",
"android:tv": "EXPO_TV=1 expo run:android",
@@ -14,7 +13,6 @@
"web": "expo start --web",
"prebuild:tv": "EXPO_TV=1 expo prebuild",
"prebuild": "EXPO_TV=0 expo prebuild",
- "update-src": "echo 'Updating src from ../bare/src' && rm -r ./src && cp -r ../bare/src ./src && echo 'Updated src from ../bare/src'",
"clean": "rm -rf node_modules && rm -rf android/build/ && rm -rf android/app/build && rm -rf ./lib @@ rm -rf ./android/.gradle && rm -rf ./android/.idea && rm -rf ./.expo"
},
"dependencies": {
diff --git a/examples/expo/src/BasicExample.tsx b/examples/expo/src/BasicExample.tsx
deleted file mode 100644
index af1aeede..00000000
--- a/examples/expo/src/BasicExample.tsx
+++ /dev/null
@@ -1,342 +0,0 @@
-import React, {useCallback, useRef, useState, useEffect} from 'react';
-
-import {Platform, TouchableOpacity, View, StatusBar} from 'react-native';
-
-import Video, {
- SelectedVideoTrackType,
- BufferingStrategyType,
- SelectedTrackType,
- ResizeMode,
- type VideoRef,
- type AudioTrack,
- type OnAudioTracksData,
- type OnLoadData,
- type OnProgressData,
- type OnTextTracksData,
- type OnVideoAspectRatioData,
- type TextTrack,
- type OnBufferData,
- type OnAudioFocusChangedData,
- type OnVideoErrorData,
- type OnTextTrackDataChangedData,
- type OnSeekData,
- type OnPlaybackStateChangedData,
- type OnPlaybackRateChangeData,
- type OnVideoTracksData,
- type VideoTrack,
- type SelectedTrack,
- type SelectedVideoTrack,
- type EnumValues,
- type OnBandwidthUpdateData,
- type ControlsStyles,
-} from 'react-native-video';
-import styles from './styles';
-import {type AdditionalSourceInfo} from './types';
-import {
- bufferConfig,
- srcList,
- textTracksSelectionBy,
- audioTracksSelectionBy,
-} from './constants';
-import {Overlay, toast, VideoLoader} from './components';
-
-const BasicExample = () => {
- const [rate, setRate] = useState(1);
- const [volume, setVolume] = useState(1);
- const [muted, setMuted] = useState(false);
- const [resizeMode, setResizeMode] = useState>(
- ResizeMode.CONTAIN,
- );
- const [duration, setDuration] = useState(0);
- const [currentTime, setCurrentTime] = useState(0);
- const [_, setVideoSize] = useState({videoWidth: 0, videoHeight: 0});
- const [paused, setPaused] = useState(false);
- const [fullscreen, setFullscreen] = useState(true);
- const [isLoading, setIsLoading] = useState(false);
- const [audioTracks, setAudioTracks] = useState([]);
- const [textTracks, setTextTracks] = useState([]);
- const [videoTracks, setVideoTracks] = useState([]);
- const [selectedAudioTrack, setSelectedAudioTrack] = useState<
- SelectedTrack | undefined
- >(undefined);
- const [selectedTextTrack, setSelectedTextTrack] = useState<
- SelectedTrack | undefined
- >(undefined);
- const [selectedVideoTrack, setSelectedVideoTrack] =
- useState({
- type: SelectedVideoTrackType.AUTO,
- });
- const [srcListId, setSrcListId] = useState(0);
- const [repeat, setRepeat] = useState(false);
- const [controls, setControls] = useState(false);
- const [useCache, setUseCache] = useState(false);
- const [showPoster, setShowPoster] = useState(false);
- const [showNotificationControls, setShowNotificationControls] =
- useState(false);
- const [isSeeking, setIsSeeking] = useState(false);
-
- const videoRef = useRef(null);
- const viewStyle = fullscreen ? styles.fullScreen : styles.halfScreen;
- const currentSrc = srcList[srcListId];
- const additional = currentSrc as AdditionalSourceInfo;
-
- const goToChannel = useCallback((channel: number) => {
- setSrcListId(channel);
- setDuration(0);
- setCurrentTime(0);
- setVideoSize({videoWidth: 0, videoHeight: 0});
- setIsLoading(false);
- setAudioTracks([]);
- setTextTracks([]);
- setSelectedAudioTrack(undefined);
- setSelectedTextTrack(undefined);
- setSelectedVideoTrack({
- type: SelectedVideoTrackType.AUTO,
- });
- }, []);
-
- const channelUp = useCallback(() => {
- console.log('channel up');
- goToChannel((srcListId + 1) % srcList.length);
- }, [goToChannel, srcListId]);
-
- const channelDown = useCallback(() => {
- console.log('channel down');
- goToChannel((srcListId + srcList.length - 1) % srcList.length);
- }, [goToChannel, srcListId]);
-
- const onAudioTracks = (data: OnAudioTracksData) => {
- console.log('onAudioTracks', data);
- const selectedTrack = data.audioTracks?.find((x: AudioTrack) => {
- return x.selected;
- });
- let value;
- if (audioTracksSelectionBy === SelectedTrackType.INDEX) {
- value = selectedTrack?.index;
- } else if (audioTracksSelectionBy === SelectedTrackType.LANGUAGE) {
- value = selectedTrack?.language;
- } else if (audioTracksSelectionBy === SelectedTrackType.TITLE) {
- value = selectedTrack?.title;
- }
- setAudioTracks(data.audioTracks);
- setSelectedAudioTrack({
- type: audioTracksSelectionBy,
- value: value,
- });
- };
-
- const onVideoTracks = (data: OnVideoTracksData) => {
- console.log('onVideoTracks', data.videoTracks);
- setVideoTracks(data.videoTracks);
- };
-
- const onTextTracks = (data: OnTextTracksData) => {
- const selectedTrack = data.textTracks?.find((x: TextTrack) => {
- return x?.selected;
- });
-
- setTextTracks(data.textTracks);
- let value;
- if (textTracksSelectionBy === SelectedTrackType.INDEX) {
- value = selectedTrack?.index;
- } else if (textTracksSelectionBy === SelectedTrackType.LANGUAGE) {
- value = selectedTrack?.language;
- } else if (textTracksSelectionBy === SelectedTrackType.TITLE) {
- value = selectedTrack?.title;
- }
- setSelectedTextTrack({
- type: textTracksSelectionBy,
- value: value,
- });
- };
-
- const onLoad = (data: OnLoadData) => {
- setDuration(data.duration);
- onAudioTracks(data);
- onTextTracks(data);
- onVideoTracks(data);
- };
-
- const onProgress = (data: OnProgressData) => {
- setCurrentTime(data.currentTime);
- };
-
- const onSeek = (data: OnSeekData) => {
- setCurrentTime(data.currentTime);
- setIsSeeking(false);
- };
-
- const onVideoLoadStart = () => {
- console.log('onVideoLoadStart');
- setIsLoading(true);
- };
-
- const onTextTrackDataChanged = (data: OnTextTrackDataChangedData) => {
- console.log(`Subtitles: ${JSON.stringify(data, null, 2)}`);
- };
-
- const onAspectRatio = (data: OnVideoAspectRatioData) => {
- console.log('onAspectRadio called ' + JSON.stringify(data));
- setVideoSize({videoWidth: data.width, videoHeight: data.height});
- };
-
- const onVideoBuffer = (param: OnBufferData) => {
- console.log('onVideoBuffer');
- setIsLoading(param.isBuffering);
- };
-
- const onReadyForDisplay = () => {
- console.log('onReadyForDisplay');
- setIsLoading(false);
- };
-
- const onAudioBecomingNoisy = () => {
- setPaused(true);
- };
-
- const onAudioFocusChanged = (event: OnAudioFocusChangedData) => {
- setPaused(!event.hasAudioFocus);
- };
-
- const onError = (err: OnVideoErrorData) => {
- console.log(JSON.stringify(err));
- toast(true, 'error: ' + JSON.stringify(err));
- };
-
- const onEnd = () => {
- if (!repeat) {
- channelUp();
- }
- };
-
- const onPlaybackRateChange = (data: OnPlaybackRateChangeData) => {
- console.log('onPlaybackRateChange', data);
- };
-
- const onPlaybackStateChanged = (data: OnPlaybackStateChangedData) => {
- console.log('onPlaybackStateChanged', data);
- };
-
- const onVideoBandwidthUpdate = (data: OnBandwidthUpdateData) => {
- console.log('onVideoBandwidthUpdate', data);
- };
-
- const onFullScreenExit = () => {
- // iOS pauses video on exit from full screen
- Platform.OS === 'ios' && setPaused(true);
- };
-
- const _renderLoader = showPoster ? () => : undefined;
-
- const _subtitleStyle = {subtitlesFollowVideo: true};
- const _controlsStyles: ControlsStyles = {
- hideNavigationBarOnFullScreenMode: true,
- hideNotificationBarOnFullScreenMode: true,
- liveLabel: 'LIVE',
- };
- const _bufferConfig = {
- ...bufferConfig,
- cacheSizeMB: useCache ? 200 : 0,
- };
-
- useEffect(() => {
- videoRef.current?.setSource({...currentSrc, bufferConfig: _bufferConfig });
- }, [currentSrc]);
-
- return (
-
-
-
- {(srcList[srcListId] as AdditionalSourceInfo)?.noView ? null : (
-
-
-
- )}
-
-
- );
-};
-export default BasicExample;
diff --git a/examples/expo/src/BasicExample.windows.tsx b/examples/expo/src/BasicExample.windows.tsx
deleted file mode 100644
index 5c66eeba..00000000
--- a/examples/expo/src/BasicExample.windows.tsx
+++ /dev/null
@@ -1,240 +0,0 @@
-'use strict';
-
-import React, {Component} from 'react';
-
-import {
- StyleSheet,
- Text,
- TextStyle,
- TouchableOpacity,
- View,
-} from 'react-native';
-
-import Video, {ResizeMode} from 'react-native-video';
-
-class VideoPlayer extends Component {
- constructor(props: any) {
- super(props);
- this.onLoad = this.onLoad.bind(this);
- this.onProgress = this.onProgress.bind(this);
- }
-
- state = {
- rate: 1,
- volume: 1,
- muted: false,
- resizeMode: ResizeMode.CONTAIN,
- duration: 0.0,
- currentTime: 0.0,
- paused: false,
- };
-
- onLoad(data: any) {
- this.setState({duration: data.duration});
- }
-
- onProgress(data: any) {
- this.setState({currentTime: data.currentTime});
- }
-
- getCurrentTimePercentage() {
- if (this.state.currentTime > 0 && this.state.duration !== 0) {
- return this.state.currentTime / this.state.duration;
- } else {
- return 0;
- }
- }
-
- renderRateControl(rate: number) {
- const isSelected = this.state.rate === rate;
- const style: TextStyle = StyleSheet.flatten([
- styles.controlOption,
- {fontWeight: isSelected ? 'bold' : 'normal'},
- ]);
-
- return (
- {
- this.setState({rate: rate});
- }}>
- {rate}x
-
- );
- }
-
- renderResizeModeControl(resizeMode: string) {
- const isSelected = this.state.resizeMode === resizeMode;
- const style: TextStyle = StyleSheet.flatten([
- styles.controlOption,
- {fontWeight: isSelected ? 'bold' : 'normal'},
- ]);
-
- return (
- {
- this.setState({resizeMode: resizeMode});
- }}>
- {resizeMode}
-
- );
- }
-
- renderVolumeControl(volume: number) {
- const isSelected = this.state.volume === volume;
- const style: TextStyle = StyleSheet.flatten([
- styles.controlOption,
- {fontWeight: isSelected ? 'bold' : 'normal'},
- ]);
-
- return (
- {
- this.setState({volume: volume});
- }}>
- {volume * 100}%
-
- );
- }
-
- render() {
- const flexCompleted = this.getCurrentTimePercentage() * 100;
- const flexRemaining = (1 - this.getCurrentTimePercentage()) * 100;
-
- return (
-
- {
- this.setState({paused: !this.state.paused});
- }}>
-
-
-
-
-
- {this.renderRateControl(0.25)}
- {this.renderRateControl(0.5)}
- {this.renderRateControl(1.0)}
- {this.renderRateControl(1.5)}
- {this.renderRateControl(2.0)}
-
-
-
- {this.renderVolumeControl(0.5)}
- {this.renderVolumeControl(1)}
- {this.renderVolumeControl(1.5)}
-
-
-
- {this.renderResizeModeControl('cover')}
- {this.renderResizeModeControl('contain')}
- {this.renderResizeModeControl('stretch')}
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: 'black',
- },
- fullScreen: {
- position: 'absolute',
- top: 0,
- left: 0,
- bottom: 0,
- right: 0,
- },
- controls: {
- backgroundColor: 'transparent',
- borderRadius: 5,
- position: 'absolute',
- bottom: 20,
- left: 20,
- right: 20,
- },
- progress: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 3,
- overflow: 'hidden',
- },
- innerProgressCompleted: {
- height: 20,
- backgroundColor: '#cccccc',
- },
- innerProgressRemaining: {
- height: 20,
- backgroundColor: '#2C2C2C',
- },
- generalControls: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 4,
- overflow: 'hidden',
- paddingBottom: 10,
- },
- rateControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- volumeControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- resizeModeControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
- controlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
- trackingControls: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
-export default VideoPlayer;
diff --git a/examples/expo/src/DRMExample.tsx b/examples/expo/src/DRMExample.tsx
deleted file mode 100644
index f0f56525..00000000
--- a/examples/expo/src/DRMExample.tsx
+++ /dev/null
@@ -1,231 +0,0 @@
-import * as React from 'react';
-import {
- Text,
- View,
- StyleSheet,
- Platform,
- ScrollView,
- TextInput,
- Alert,
- Button,
- ActivityIndicator,
-} from 'react-native';
-import Video, {DRMType, ReactVideoSourceProperties} from 'react-native-video';
-
-type SourceType = ReactVideoSourceProperties | null;
-
-const DRMExample = () => {
- const [loading, setLoading] = React.useState(false);
-
- const [source, setSource] = React.useState(null);
-
- const [hls, setHls] = React.useState(
- 'https://d2e67eijd6imrw.cloudfront.net/559c7a7e-960d-4cd8-9dba-bc4e59890177/assets/47cfca69-91b5-4311-bf6c-b9b1f297ed9b/videokit-720p-dash-hls-drm/hls/index.m3u8',
- );
- const [fairplayLicense, setFairplayLicense] = React.useState(
- 'https://thewidlarzgroup.la.drm.cloud/acquire-license/fairplay?brandGuid=559c7a7e-960d-4cd8-9dba-bc4e59890177',
- );
- const [fairplayCertificate, setFairplayCertificate] = React.useState(
- 'https://thewidlarzgroup.la.drm.cloud/certificate/fairplay?brandGuid=559c7a7e-960d-4cd8-9dba-bc4e59890177',
- );
- const [dash, setDash] = React.useState(
- 'https://d2e67eijd6imrw.cloudfront.net/559c7a7e-960d-4cd8-9dba-bc4e59890177/assets/47cfca69-91b5-4311-bf6c-b9b1f297ed9b/videokit-720p-dash-hls-drm/dash/index.mpd',
- );
- const [widevineLicense, setWidevineLicense] = React.useState(
- 'https://thewidlarzgroup.la.drm.cloud/acquire-license/widevine?brandGuid=559c7a7e-960d-4cd8-9dba-bc4e59890177',
- );
-
- // ------------- DMR Token -------------
- // This token is used to authenticate the user and get the license
- // To run example please go to https://www.thewidlarzgroup.com/services/free-drm-token-generator-for-video?utm_source=drm&utm_medium=code and complete the form to receive the token
- // After you receive the token, please paste it here
- const [token, setToken] = React.useState('');
-
- const handlePlayStopVideo = () => {
- if (source !== null) {
- setSource(null);
- return;
- }
-
- if (token === '') {
- Alert.alert('Error', 'Please enter the token received from the website');
- return;
- }
-
- setLoading(true);
-
- const newSource: ReactVideoSourceProperties = {};
-
- if (Platform.OS === 'ios') {
- if (fairplayLicense && fairplayCertificate) {
- newSource.uri = hls;
- newSource.drm = {
- type: DRMType.FAIRPLAY,
- licenseServer: fairplayLicense,
- certificateUrl: fairplayCertificate,
- getLicense: (spcString, contentId, licenseUrl, loadedLicenseUrl) => {
- const formData = new FormData();
- formData.append('spc', spcString);
-
- const resultURL = loadedLicenseUrl.replace('skd://', 'https://');
-
- return fetch(`${resultURL}&userToken=${token}`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'multipart/form-data',
- Accept: 'application/json',
- },
- body: formData,
- })
- .then((response) => response.json())
- .then((response) => {
- return response.ckc;
- })
- .catch((error) => {
- console.error('Error', error);
- });
- },
- };
- } else {
- Alert.alert('Error', 'Please enter Fairplay License and Certificate');
- setLoading(false);
- }
- }
-
- if (Platform.OS === 'android') {
- if (widevineLicense) {
- newSource.drm = {
- type: DRMType.WIDEVINE,
- licenseServer: widevineLicense,
- };
- newSource.uri = dash;
- } else {
- Alert.alert('Error', 'Please enter Widevine License');
- setLoading(false);
- }
- }
-
- setSource(newSource);
- };
-
- if (Platform.OS !== 'ios' && Platform.OS !== 'android') {
- return (
-
- DRM is not supported on this platform
-
- );
- }
-
- return (
-
- DRM Protected Stream Player
-
- {loading && }
- {source && source.uri && (
-
- );
-};
-
-export default DRMExample;
-
-const styles = StyleSheet.create({
- container: {
- flexGrow: 1,
- justifyContent: 'center',
- alignItems: 'center',
- padding: 20,
- backgroundColor: 'black',
- },
- title: {
- fontSize: 24,
- fontWeight: 'bold',
- marginBottom: 20,
- color: 'white',
- },
- video: {
- width: '100%',
- height: 200,
- marginBottom: 80,
- },
- input: {
- height: 40,
- borderColor: 'gray',
- borderWidth: 1,
- marginBottom: 10,
- paddingHorizontal: 10,
- width: '100%',
- color: 'white',
- },
-});
diff --git a/examples/expo/src/assets/index.ts b/examples/expo/src/assets/index.ts
deleted file mode 100644
index d6f9a7e7..00000000
--- a/examples/expo/src/assets/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './videos';
diff --git a/examples/expo/src/assets/videos/broadchurch.mp4 b/examples/expo/src/assets/videos/broadchurch.mp4
deleted file mode 100644
index 7a7a4949..00000000
Binary files a/examples/expo/src/assets/videos/broadchurch.mp4 and /dev/null differ
diff --git a/examples/expo/src/assets/videos/index.ts b/examples/expo/src/assets/videos/index.ts
deleted file mode 100644
index 5e9b414f..00000000
--- a/examples/expo/src/assets/videos/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export const localeVideo = {
- broadchurch: require('./broadchurch.mp4'),
- portrait: require('./portrait.mp4'),
-};
diff --git a/examples/expo/src/assets/videos/portrait.mp4 b/examples/expo/src/assets/videos/portrait.mp4
deleted file mode 100644
index 0e4414c6..00000000
Binary files a/examples/expo/src/assets/videos/portrait.mp4 and /dev/null differ
diff --git a/examples/expo/src/components/AudioTracksSelector.tsx b/examples/expo/src/components/AudioTracksSelector.tsx
deleted file mode 100644
index d0e10059..00000000
--- a/examples/expo/src/components/AudioTracksSelector.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import {Picker} from '@react-native-picker/picker';
-import {Text} from 'react-native';
-import {
- SelectedTrackType,
- type AudioTrack,
- type SelectedTrack,
-} from 'react-native-video';
-import styles from '../styles';
-import React from 'react';
-
-export interface AudioTrackSelectorType {
- audioTracks: Array;
- selectedAudioTrack: SelectedTrack | undefined;
- onValueChange: (arg0: string | number) => void;
- audioTracksSelectionBy: SelectedTrackType;
-}
-
-export const AudioTrackSelector = ({
- audioTracks,
- selectedAudioTrack,
- onValueChange,
- audioTracksSelectionBy,
-}: AudioTrackSelectorType) => {
- return (
- <>
- AudioTrack
- {
- if (itemValue !== 'empty') {
- console.log('on audio value change ' + itemValue);
- onValueChange(itemValue);
- }
- }}>
- {audioTracks?.length <= 0 ? (
-
- ) : (
-
- )}
- {audioTracks.map(track => {
- if (!track) {
- return;
- }
- let value;
- if (audioTracksSelectionBy === SelectedTrackType.INDEX) {
- value = track.index;
- } else if (audioTracksSelectionBy === SelectedTrackType.LANGUAGE) {
- value = track.language;
- } else if (audioTracksSelectionBy === SelectedTrackType.TITLE) {
- value = track.title;
- }
- return (
-
- );
- })}
-
- >
- );
-};
diff --git a/examples/expo/src/components/Indicator.tsx b/examples/expo/src/components/Indicator.tsx
deleted file mode 100644
index 68691672..00000000
--- a/examples/expo/src/components/Indicator.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React, {memo} from 'react';
-import {ActivityIndicator} from 'react-native';
-
-const _Indicator = () => {
- return ;
-};
-
-export const Indicator = memo(_Indicator);
diff --git a/examples/expo/src/components/MultiValueControl.tsx b/examples/expo/src/components/MultiValueControl.tsx
deleted file mode 100644
index 99195b8d..00000000
--- a/examples/expo/src/components/MultiValueControl.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import React from 'react';
-import {
- StyleSheet,
- Text,
- TextStyle,
- TouchableOpacity,
- View,
-} from 'react-native';
-import {ResizeMode} from 'react-native-video';
-
-/*
- * MultiValueControl displays a list clickable text view
- */
-
-interface MultiValueControlType {
- // a list a string or number to be displayed
- values: Array;
- // The selected value in values
- selected?: T;
- // callback to press onPress
- onPress: (arg: T) => void;
-}
-
-export const MultiValueControl = ({
- values,
- selected,
- onPress,
-}: MultiValueControlType) => {
- const selectedStyle: TextStyle = StyleSheet.flatten([
- styles.option,
- {fontWeight: 'bold'},
- ]);
-
- const unselectedStyle: TextStyle = StyleSheet.flatten([
- styles.option,
- {fontWeight: 'normal'},
- ]);
-
- return (
-
- {values.map(value => {
- const _style = value === selected ? selectedStyle : unselectedStyle;
- return (
- {
- onPress?.(value);
- }}>
- {value}
-
- );
- })}
-
- );
-};
-
-const styles = StyleSheet.create({
- option: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
- container: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
-
-export default MultiValueControl;
diff --git a/examples/expo/src/components/Overlay.tsx b/examples/expo/src/components/Overlay.tsx
deleted file mode 100644
index 8af4d7a7..00000000
--- a/examples/expo/src/components/Overlay.tsx
+++ /dev/null
@@ -1,350 +0,0 @@
-import React, {
- forwardRef,
- memo,
- useCallback,
- type Dispatch,
- type SetStateAction,
-} from 'react';
-import {View} from 'react-native';
-import styles from '../styles.tsx';
-import {
- isAndroid,
- isIos,
- textTracksSelectionBy,
- audioTracksSelectionBy,
-} from '../constants';
-import {
- ResizeMode,
- VideoRef,
- SelectedTrackType,
- SelectedVideoTrackType,
- VideoDecoderProperties,
- type EnumValues,
- type TextTrack,
- type SelectedVideoTrack,
- type SelectedTrack,
- type VideoTrack,
- type AudioTrack,
-} from 'react-native-video';
-
-import {toast} from './Toast';
-import {Seeker} from './Seeker';
-import {AudioTrackSelector} from './AudioTracksSelector';
-import {VideoTrackSelector} from './VideoTracksSelector';
-import {TextTrackSelector} from './TextTracksSelector';
-import {TopControl} from './TopControl';
-import {ToggleControl} from './ToggleControl';
-import {MultiValueControl} from './MultiValueControl';
-
-type Props = {
- channelDown: () => void;
- channelUp: () => void;
- setFullscreen: Dispatch>;
- controls: boolean;
- setControls: Dispatch>;
- showNotificationControls: boolean;
- setShowNotificationControls: Dispatch>;
- selectedAudioTrack: SelectedTrack | undefined;
- setSelectedAudioTrack: Dispatch>;
- selectedTextTrack: SelectedTrack | undefined;
- setSelectedTextTrack: (value: SelectedTrack | undefined) => void;
- selectedVideoTrack: SelectedVideoTrack;
- setSelectedVideoTrack: (value: SelectedVideoTrack) => void;
- setIsSeeking: Dispatch>;
- rate: number;
- setRate: Dispatch>;
- volume: number;
- setVolume: (value: number) => void;
- resizeMode: EnumValues;
- setResizeMode: Dispatch>>;
- isLoading: boolean;
- srcListId: number;
- useCache: boolean;
- setUseCache: Dispatch>;
- paused: boolean;
- setPaused: Dispatch>;
- repeat: boolean;
- setRepeat: Dispatch>;
- showPoster: boolean;
- setShowPoster: Dispatch>;
- muted: boolean;
- setMuted: Dispatch>;
- currentTime: number;
- duration: number;
- isSeeking: boolean;
- audioTracks: AudioTrack[];
- textTracks: TextTrack[];
- videoTracks: VideoTrack[];
-};
-
-const _Overlay = forwardRef((props, ref) => {
- const {
- channelUp,
- channelDown,
- setFullscreen,
- setControls,
- controls,
- setShowNotificationControls,
- showNotificationControls,
- setSelectedAudioTrack,
- setSelectedTextTrack,
- setSelectedVideoTrack,
- setIsSeeking,
- rate,
- setRate,
- volume,
- setVolume,
- resizeMode,
- setResizeMode,
- isLoading,
- srcListId,
- setUseCache,
- useCache,
- paused,
- setPaused,
- setRepeat,
- repeat,
- setShowPoster,
- showPoster,
- setMuted,
- muted,
- duration,
- isSeeking,
- currentTime,
- textTracks,
- videoTracks,
- audioTracks,
- selectedAudioTrack,
- selectedVideoTrack,
- selectedTextTrack,
- } = props;
- const popupInfo = useCallback(() => {
- VideoDecoderProperties.getWidevineLevel().then((widevineLevel: number) => {
- VideoDecoderProperties.isHEVCSupported().then((hevc: string) => {
- VideoDecoderProperties.isCodecSupported('video/avc', 1920, 1080).then(
- (avc: string) => {
- toast(
- true,
- 'Widevine level: ' +
- widevineLevel +
- '\n hevc: ' +
- hevc +
- '\n avc: ' +
- avc,
- );
- },
- );
- });
- });
- }, []);
-
- const toggleFullscreen = () => {
- setFullscreen(prev => !prev);
- };
- const toggleControls = () => {
- setControls(prev => !prev);
- };
-
- const openDecoration = () => {
- typeof ref !== 'function' && ref?.current?.setFullScreen(true);
- };
-
- const toggleShowNotificationControls = () => {
- setShowNotificationControls(prev => !prev);
- };
-
- const onSelectedAudioTrackChange = (itemValue: string | number) => {
- console.log('on audio value change ' + itemValue);
- if (itemValue === 'none') {
- setSelectedAudioTrack({
- type: SelectedTrackType.DISABLED,
- });
- } else {
- setSelectedAudioTrack({type: audioTracksSelectionBy, value: itemValue});
- }
- };
-
- const onSelectedTextTrackChange = (itemValue: string) => {
- console.log('on value change ' + itemValue);
- setSelectedTextTrack({type: textTracksSelectionBy, value: itemValue});
- };
-
- const onSelectedVideoTrackChange = (itemValue: string) => {
- console.log('on value change ' + itemValue);
- if (itemValue === undefined || itemValue === 'auto') {
- setSelectedVideoTrack({
- type: SelectedVideoTrackType.AUTO,
- });
- } else {
- setSelectedVideoTrack({
- type: SelectedVideoTrackType.INDEX,
- value: itemValue,
- });
- }
- };
-
- const videoSeek = (position: number) => {
- setIsSeeking(true);
- typeof ref !== 'function' && ref?.current?.seek(position);
- };
-
- const onRateSelected = (value: number) => {
- setRate(value);
- };
-
- const onVolumeSelected = (value: number) => {
- setVolume(value);
- };
-
- const onResizeModeSelected = (value: EnumValues) => {
- setResizeMode(value);
- };
-
- const toggleCache = () => setUseCache(prev => !prev);
-
- const togglePause = () => setPaused(prev => !prev);
-
- const toggleRepeat = () => setRepeat(prev => !prev);
-
- const togglePoster = () => setShowPoster(prev => !prev);
-
- const toggleMuted = () => setMuted(prev => !prev);
-
- return (
- <>
-
-
-
-
-
- {!controls ? (
- <>
-
-
-
-
-
-
-
-
- {isAndroid ? (
-
-
-
-
- ) : null}
-
-
-
-
-
-
-
-
- {/* shall be replaced by slider */}
-
- {/* shall be replaced by slider */}
-
-
-
- {isIos ? (
- {
- typeof ref !== 'function' &&
- ref?.current
- ?.save({})
- ?.then((response: unknown) => {
- console.log('Downloaded URI', response);
- })
- .catch((error: unknown) => {
- console.log('error during save ', error);
- });
- }}
- text="save"
- />
- ) : null}
-
- videoSeek(prop)}
- isUISeeking={isSeeking}
- />
-
-
-
-
-
-
- >
- ) : null}
- >
- );
-});
-
-export const Overlay = memo(_Overlay);
diff --git a/examples/expo/src/components/Seeker.tsx b/examples/expo/src/components/Seeker.tsx
deleted file mode 100644
index 242fcab9..00000000
--- a/examples/expo/src/components/Seeker.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
-import React, {useCallback, useEffect, useState} from 'react';
-import {PanResponder, View} from 'react-native';
-import styles from '../styles';
-
-interface SeekerProps {
- currentTime: number;
- duration: number;
- isLoading: boolean;
- isUISeeking: boolean;
- videoSeek: (arg0: number) => void;
-}
-
-export const Seeker = ({
- currentTime,
- duration,
- isLoading,
- isUISeeking,
- videoSeek,
-}: SeekerProps) => {
- const [seeking, setSeeking] = useState(false);
- const [seekerPosition, setSeekerPosition] = useState(0);
- const [seekerWidth, setSeekerWidth] = useState(0);
-
- /**
- * Set the position of the seekbar's components
- * (both fill and handle) according to the
- * position supplied.
- *
- * @param {float} position position in px of seeker handle}
- */
- const updateSeekerPosition = useCallback(
- (position = 0) => {
- if (position <= 0) {
- position = 0;
- } else if (position >= seekerWidth) {
- position = seekerWidth;
- }
- setSeekerPosition(position);
- },
- [seekerWidth],
- );
-
- /**
- * Return the time that the video should be at
- * based on where the seeker handle is.
- *
- * @return {float} time in ms based on seekerPosition.
- */
- const calculateTimeFromSeekerPosition = () => {
- const percent = seekerPosition / seekerWidth;
- return duration * percent;
- };
-
- /**
- * Get our seekbar responder going
- */
-
- const seekPanResponder = PanResponder.create({
- // Ask to be the responder.
- onStartShouldSetPanResponder: (_evt, _gestureState) => true,
- onMoveShouldSetPanResponder: (_evt, _gestureState) => true,
-
- /**
- * When we start the pan tell the machine that we're
- * seeking. This stops it from updating the seekbar
- * position in the onProgress listener.
- */
- onPanResponderGrant: (evt, _gestureState) => {
- const position = evt.nativeEvent.locationX;
- updateSeekerPosition(position);
- setSeeking(true);
- },
-
- /**
- * When panning, update the seekbar position, duh.
- */
- onPanResponderMove: (evt, _gestureState) => {
- const position = evt.nativeEvent.locationX;
- updateSeekerPosition(position);
- },
-
- /**
- * On release we update the time and seek to it in the video.
- * If you seek to the end of the video we fire the
- * onEnd callback
- */
- onPanResponderRelease: (_evt, _gestureState) => {
- const time = calculateTimeFromSeekerPosition();
- if (time >= duration && !isLoading) {
- // FIXME ...
- // state.paused = true;
- // this.onEnd();
- } else {
- videoSeek(time);
- setSeeking(false);
- }
- },
- });
-
- useEffect(() => {
- if (!isLoading && !seeking && !isUISeeking) {
- const percent = currentTime / duration;
- const position = seekerWidth * percent;
- updateSeekerPosition(position);
- }
- }, [
- currentTime,
- duration,
- isLoading,
- seekerWidth,
- seeking,
- isUISeeking,
- updateSeekerPosition,
- ]);
-
- if (!seekPanResponder) {
- return null;
- }
- const seekerStyle = [
- styles.seekbarFill,
- {
- width: seekerPosition > 0 ? seekerPosition : 0,
- backgroundColor: '#FFF',
- },
- ];
-
- const seekerPositionStyle = [
- styles.seekbarHandle,
- {
- left: seekerPosition > 0 ? seekerPosition : 0,
- },
- ];
-
- const seekerPointerStyle = [styles.seekbarCircle, {backgroundColor: '#FFF'}];
-
- return (
-
- setSeekerWidth(event.nativeEvent.layout.width)}
- pointerEvents={'none'}>
-
-
-
-
-
-
- );
-};
diff --git a/examples/expo/src/components/TextTracksSelector.tsx b/examples/expo/src/components/TextTracksSelector.tsx
deleted file mode 100644
index b1fb04ff..00000000
--- a/examples/expo/src/components/TextTracksSelector.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import {Picker} from '@react-native-picker/picker';
-import {Text} from 'react-native';
-import {
- type TextTrack,
- type SelectedTrack,
- SelectedTrackType,
-} from 'react-native-video';
-import styles from '../styles';
-import React from 'react';
-
-export interface TextTrackSelectorType {
- textTracks: Array;
- selectedTextTrack: SelectedTrack | undefined;
- onValueChange: (arg0: string) => void;
- textTracksSelectionBy: string;
-}
-
-export const TextTrackSelector = ({
- textTracks,
- selectedTextTrack,
- onValueChange,
- textTracksSelectionBy,
-}: TextTrackSelectorType) => {
- return (
- <>
- TextTrack
- {
- if (itemValue !== 'empty') {
- onValueChange(itemValue);
- }
- }}>
- {textTracks?.length <= 0 ? (
-
- ) : (
-
- )}
- {textTracks.map(track => {
- if (!track) {
- return;
- }
- let value;
- if (textTracksSelectionBy === SelectedTrackType.INDEX) {
- value = track.index;
- } else if (textTracksSelectionBy === SelectedTrackType.LANGUAGE) {
- value = track.language;
- } else if (textTracksSelectionBy === SelectedTrackType.TITLE) {
- value = track.title;
- }
- return ;
- })}
-
- >
- );
-};
diff --git a/examples/expo/src/components/Toast.ts b/examples/expo/src/components/Toast.ts
deleted file mode 100644
index 60e73653..00000000
--- a/examples/expo/src/components/Toast.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import {Alert, ToastAndroid} from 'react-native';
-import {isAndroid} from '../constants';
-
-export const toast = (visible: boolean, message: string) => {
- if (visible) {
- if (isAndroid) {
- ToastAndroid.showWithGravityAndOffset(
- message,
- ToastAndroid.LONG,
- ToastAndroid.BOTTOM,
- 25,
- 50,
- );
- } else {
- Alert.alert(message, message);
- }
- }
-};
diff --git a/examples/expo/src/components/ToggleControl.tsx b/examples/expo/src/components/ToggleControl.tsx
deleted file mode 100644
index 3757f155..00000000
--- a/examples/expo/src/components/ToggleControl.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import React from 'react';
-
-import {
- StyleSheet,
- Text,
- TextStyle,
- TouchableOpacity,
- View,
-} from 'react-native';
-
-/*
- * ToggleControl displays a 2 states clickable text
- */
-
-interface ToggleControlType {
- // boolean indicating if text is selected state
- isSelected?: boolean;
- // value of text when selected
- selectedText?: string;
- // value of text when NOT selected
- unselectedText?: string;
- // default text if no only one text field is needed
- text?: string;
- // callback called when pressing the component
- onPress: () => void;
-}
-
-export const ToggleControl = ({
- isSelected,
- selectedText,
- unselectedText,
- text,
- onPress,
-}: ToggleControlType) => {
- const selectedStyle: TextStyle = StyleSheet.flatten([
- styles.controlOption,
- {fontWeight: 'bold'},
- ]);
-
- const unselectedStyle: TextStyle = StyleSheet.flatten([
- styles.controlOption,
- {fontWeight: 'normal'},
- ]);
-
- const style = isSelected ? selectedStyle : unselectedStyle;
- const _text = text ? text : isSelected ? selectedText : unselectedText;
- return (
-
-
- {_text}
-
-
- );
-};
-
-const styles = StyleSheet.create({
- controlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
- resizeModeControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
-
-export default ToggleControl;
diff --git a/examples/expo/src/components/TopControl.tsx b/examples/expo/src/components/TopControl.tsx
deleted file mode 100644
index f3866c6c..00000000
--- a/examples/expo/src/components/TopControl.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import React, {FC, memo} from 'react';
-import {Text, TouchableOpacity, View} from 'react-native';
-import styles from '../styles.tsx';
-import {srcList} from '../constants';
-import {type AdditionalSourceInfo} from '../types';
-
-type Props = {
- srcListId: number;
- showRNVControls: boolean;
- toggleControls: () => void;
-};
-
-const _TopControl: FC = ({
- toggleControls,
- showRNVControls,
- srcListId,
-}) => {
- return (
-
-
- {(srcList[srcListId] as AdditionalSourceInfo)?.description ||
- 'local file'}
-
-
- {
- toggleControls();
- }}>
-
- {showRNVControls ? 'Hide controls' : 'Show controls'}
-
-
-
-
- );
-};
-export const TopControl = memo(_TopControl);
diff --git a/examples/expo/src/components/VideoLoader.tsx b/examples/expo/src/components/VideoLoader.tsx
deleted file mode 100644
index 9071c707..00000000
--- a/examples/expo/src/components/VideoLoader.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import {Text, View} from 'react-native';
-import {Indicator} from './Indicator.tsx';
-import React, {memo} from 'react';
-import styles from '../styles.tsx';
-
-const _VideoLoader = () => {
- return (
-
- Loading...
-
-
- );
-};
-
-export const VideoLoader = memo(_VideoLoader);
diff --git a/examples/expo/src/components/VideoTracksSelector.tsx b/examples/expo/src/components/VideoTracksSelector.tsx
deleted file mode 100644
index 562e6617..00000000
--- a/examples/expo/src/components/VideoTracksSelector.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import {Picker} from '@react-native-picker/picker';
-import {Text} from 'react-native';
-import {
- SelectedVideoTrackType,
- type SelectedVideoTrack,
- type VideoTrack,
-} from 'react-native-video';
-import styles from '../styles';
-import React from 'react';
-
-export interface VideoTrackSelectorType {
- videoTracks: Array;
- selectedVideoTrack: SelectedVideoTrack | undefined;
- onValueChange: (arg0: string) => void;
-}
-
-export const VideoTrackSelector = ({
- videoTracks,
- selectedVideoTrack,
- onValueChange,
-}: VideoTrackSelectorType) => {
- return (
- <>
- VideoTrack
- {
- if (itemValue !== 'empty') {
- onValueChange(itemValue);
- }
- }}>
-
- {videoTracks?.length <= 0 || videoTracks?.length <= 0 ? (
-
- ) : (
-
- )}
- {videoTracks?.map(track => {
- if (!track) {
- return;
- }
- return (
-
- );
- })}
-
- >
- );
-};
diff --git a/examples/expo/src/components/index.ts b/examples/expo/src/components/index.ts
deleted file mode 100644
index 70b755d4..00000000
--- a/examples/expo/src/components/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export * from './VideoLoader';
-export * from './Indicator';
-export * from './Seeker';
-export * from './AudioTracksSelector';
-export * from './VideoTracksSelector';
-export * from './TextTracksSelector';
-export * from './Overlay';
-export * from './TopControl';
-export * from './Toast';
-export * from './ToggleControl';
-export * from './MultiValueControl';
diff --git a/examples/expo/src/constants/general.ts b/examples/expo/src/constants/general.ts
deleted file mode 100644
index 3db84749..00000000
--- a/examples/expo/src/constants/general.ts
+++ /dev/null
@@ -1,192 +0,0 @@
-import {
- BufferConfig,
- DRMType,
- ISO639_1,
- SelectedTrackType,
- TextTrackType,
-} from 'react-native-video';
-import {SampleVideoSource} from '../types';
-import {localeVideo} from '../assets';
-import {Platform} from 'react-native';
-
-// This constant allows to change how the sample behaves regarding to audio and texts selection.
-// You can change it to change how selector will use tracks information.
-// by default, index will be displayed and index will be applied to selected tracks.
-// You can also use LANGUAGE or TITLE
-export const textTracksSelectionBy = SelectedTrackType.INDEX;
-export const audioTracksSelectionBy = SelectedTrackType.INDEX;
-
-export const isIos = Platform.OS === 'ios';
-
-export const isAndroid = Platform.OS === 'android';
-
-export const srcAllPlatformList = [
- {
- description: 'local file landscape',
- uri: localeVideo.broadchurch,
- },
- {
- description: 'local file landscape cropped',
- uri: localeVideo.broadchurch,
- cropStart: 3000,
- cropEnd: 10000,
- },
- {
- description: 'video with 90° rotation',
- uri: 'https://bn-dev.fra1.digitaloceanspaces.com/km-tournament/uploads/rn_image_picker_lib_temp_2ee86a27_9312_4548_84af_7fd75d9ad4dd_ad8b20587a.mp4',
- },
- {
- description: 'local file portrait',
- uri: localeVideo.portrait,
- metadata: {
- title: 'Test Title',
- subtitle: 'Test Subtitle',
- artist: 'Test Artist',
- description: 'Test Description',
- imageUri:
- 'https://pbs.twimg.com/profile_images/1498641868397191170/6qW2XkuI_400x400.png',
- },
- },
- {
- description: '(hls|live) red bull tv',
- textTracksAllowChunklessPreparation: false,
- uri: 'https://rbmn-live.akamaized.net/hls/live/590964/BoRB-AT/master_928.m3u8',
- metadata: {
- title: 'Custom Title',
- subtitle: 'Custom Subtitle',
- artist: 'Custom Artist',
- description: 'Custom Description',
- imageUri:
- 'https://pbs.twimg.com/profile_images/1498641868397191170/6qW2XkuI_400x400.png',
- },
- },
- {
- description: 'invalid URL',
- uri: 'mmt://www.youtube.com',
- type: 'mpd',
- },
- {description: '(no url) Stopped playback', uri: undefined},
- {
- description: '(no view) no View',
- noView: true,
- },
- {
- description: 'Another live sample',
- uri: 'https://live.forstreet.cl/live/livestream.m3u8',
- },
- {
- description: 'another bunny (can be saved)',
- uri: 'https://rawgit.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4',
- headers: {referer: 'www.github.com', 'User-Agent': 'react.native.video'},
- metadata: {
- title: 'Custom Title',
- subtitle: 'Custom Subtitle',
- artist: 'Custom Artist',
- description: 'Custom Description',
- imageUri:
- 'https://pbs.twimg.com/profile_images/1498641868397191170/6qW2XkuI_400x400.png',
- },
- },
- {
- description: 'sintel with subtitles',
- uri: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8',
- },
- {
- description: 'sintel starts at 20sec',
- uri: 'https://bitmovin-a.akamaihd.net/content/sintel/hls/playlist.m3u8',
- startPosition: 50000,
- },
- {
- description: 'mp3 with texttrack',
- uri: 'https://traffic.libsyn.com/democracynow/wx2024-0702_SOT_DeadCalm-LucileSmith-FULL-V2.mxf-audio.mp3', // an mp3 file
- textTracks: [], // empty text track list
- },
- {
- description: 'BigBugBunny sideLoaded subtitles',
- // sideloaded subtitles wont work for streaming like HLS on ios
- // mp4
- uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4',
- textTracks: [
- {
- title: 'test',
- language: 'en' as ISO639_1,
- type: TextTrackType.VTT,
- uri: 'https://bitdash-a.akamaihd.net/content/sintel/subtitles/subtitles_en.vtt',
- },
- ],
- },
- {
- description: '(mp4) big buck bunny With Ads',
- ad: {
- adTagUrl:
- 'https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostoptimizedpodbumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&impl=s&cmsid=496&vid=short_onecue&correlator=',
- },
- uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4',
- },
-];
-
-export const srcIosList: SampleVideoSource[] = [];
-
-export const srcAndroidList: SampleVideoSource[] = [
- {
- description: 'Another live sample',
- uri: 'https://live.forstreet.cl/live/livestream.m3u8',
- },
- {
- description: 'asset file',
- uri: 'asset:///broadchurch.mp4',
- },
- {
- description: '(dash) sintel subtitles',
- uri: 'https://bitmovin-a.akamaihd.net/content/sintel/sintel.mpd',
- },
- {
- description: '(mp4) big buck bunny',
- uri: 'http://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4',
- },
- {
- description: '(mp4|subtitles) demo with sintel Subtitles',
- uri: 'http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&sparams=ip,ipbits,expire,source,id,as&ip=0.0.0.0&ipbits=0&expire=19000000000&signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&key=ik0',
- type: 'mpd',
- },
- {
- description: 'WV: Secure SD & HD (cbcs,MP4,H264)',
- uri: 'https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd',
- drm: {
- type: DRMType.WIDEVINE,
- licenseServer:
- 'https://proxy.uat.widevine.com/proxy?provider=widevine_test',
- },
- },
- {
- description: 'Secure UHD (cenc)',
- uri: 'https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears_uhd.mpd',
- drm: {
- type: DRMType.WIDEVINE,
- licenseServer:
- 'https://proxy.uat.widevine.com/proxy?provider=widevine_test',
- },
- },
- {
- description: 'rtsp big bug bunny',
- uri: 'rtsp://rtspstream:3cfa3c36a9c00f4aa38f3cd35816b287@zephyr.rtsp.stream/movie',
- type: 'rtsp',
- },
-];
-
-const platformSrc: SampleVideoSource[] = isAndroid
- ? srcAndroidList
- : srcIosList;
-
-export const srcList: SampleVideoSource[] =
- platformSrc.concat(srcAllPlatformList);
-
-export const bufferConfig: BufferConfig = {
- minBufferMs: 15000,
- maxBufferMs: 50000,
- bufferForPlaybackMs: 2500,
- bufferForPlaybackAfterRebufferMs: 5000,
- live: {
- targetOffsetMs: 500,
- },
-};
diff --git a/examples/expo/src/constants/index.ts b/examples/expo/src/constants/index.ts
deleted file mode 100644
index 12bc2fe5..00000000
--- a/examples/expo/src/constants/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './general';
diff --git a/examples/expo/src/styles.tsx b/examples/expo/src/styles.tsx
deleted file mode 100644
index 6147016f..00000000
--- a/examples/expo/src/styles.tsx
+++ /dev/null
@@ -1,175 +0,0 @@
-import {Platform, StyleSheet} from 'react-native';
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: 'black',
- },
- halfScreen: {
- position: 'absolute',
- top: 50,
- left: 50,
- bottom: 100,
- right: 100,
- },
- fullScreen: {
- position: 'absolute',
- top: 0,
- left: 0,
- bottom: 0,
- right: 0,
- },
- bottomControls: {
- backgroundColor: 'transparent',
- borderRadius: 5,
- position: 'absolute',
- bottom: 20,
- left: 20,
- right: 20,
- },
- leftControls: {
- backgroundColor: 'transparent',
- borderRadius: 5,
- position: 'absolute',
- top: 20,
- bottom: 20,
- left: 20,
- },
- rightControls: {
- backgroundColor: 'transparent',
- borderRadius: 5,
- position: 'absolute',
- top: 20,
- bottom: 20,
- right: 20,
- },
- topControls: {
- backgroundColor: 'transparent',
- borderRadius: 4,
- position: 'absolute',
- top: 20,
- left: 20,
- right: 20,
- flex: 1,
- flexDirection: 'row',
- overflow: 'hidden',
- paddingBottom: 10,
- },
- generalControls: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 4,
- overflow: 'hidden',
- paddingBottom: 10,
- paddingTop: Platform.OS === 'web' ? 25 : 0,
- },
- rateControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- volumeControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- resizeModeControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
- leftRightControlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- padding: 10,
- paddingTop: 50,
- lineHeight: 12,
- },
- controlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
- pickerContainer: {
- width: 100,
- alignSelf: 'center',
- color: 'white',
- borderWidth: 1,
- borderColor: 'red',
- },
- indicatorContainer: {
- justifyContent: 'center',
- alignItems: 'center',
- gap: 10,
- width: '100%',
- height: '100%',
- },
- indicatorText: {
- color: 'white',
- },
- seekbarContainer: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 4,
- height: 30,
- },
- seekbarTrack: {
- backgroundColor: '#333',
- height: 1,
- position: 'relative',
- top: 14,
- width: '100%',
- },
- seekbarFill: {
- backgroundColor: '#FFF',
- height: 1,
- width: '100%',
- },
- seekbarHandle: {
- position: 'absolute',
- marginLeft: -7,
- height: 28,
- width: 28,
- },
- seekbarCircle: {
- borderRadius: 12,
- position: 'relative',
- top: 8,
- left: 8,
- height: 12,
- width: 12,
- },
- picker: {
- flex: 1,
- color: Platform.OS === 'web' ? 'black' : 'white',
- flexDirection: 'row',
- justifyContent: 'center',
- width: 100,
- height: 40,
- },
- pickerItem: {
- color: 'white',
- width: 100,
- height: 40,
- },
- emptyPickerItem: {
- color: 'white',
- marginTop: 20,
- marginLeft: 20,
- flex: 1,
- width: 100,
- height: 40,
- },
- topControlsContainer: {
- paddingTop: 30,
- },
-});
-
-export default styles;
diff --git a/examples/expo/src/types/index.ts b/examples/expo/src/types/index.ts
deleted file mode 100644
index fcb073fe..00000000
--- a/examples/expo/src/types/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './types';
diff --git a/examples/expo/src/types/types.ts b/examples/expo/src/types/types.ts
deleted file mode 100644
index c9735c02..00000000
--- a/examples/expo/src/types/types.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import {Drm, ReactVideoSource, TextTracks} from 'react-native-video';
-
-export type AdditionalSourceInfo = {
- textTracks?: TextTracks;
- adTagUrl?: string;
- description?: string;
- drm?: Drm;
- noView?: boolean;
-};
-
-export type SampleVideoSource = ReactVideoSource | AdditionalSourceInfo;