From faac5ad45689a605045dae57061d6648244c7dad Mon Sep 17 00:00:00 2001
From: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
Date: Sat, 15 Feb 2025 17:05:59 +0100
Subject: [PATCH] fix(sample): remove duplicate code in sample (#4391)
* fix: remove duplicated code in sample
---
examples/README.md | 6 -
examples/bare/android/gradle.properties | 17 +-
examples/bare/index.js | 4 +-
examples/bare/ios/Podfile.lock | 16 +-
examples/bare/metro.config.js | 7 +
.../{bare/src => common}/BasicExample.tsx | 0
.../src => common}/BasicExample.windows.tsx | 0
examples/{bare/src => common}/DRMExample.tsx | 0
examples/{bare/src => common}/assets/index.ts | 0
.../assets/videos/broadchurch.mp4 | Bin
.../src => common}/assets/videos/index.ts | 0
.../src => common}/assets/videos/portrait.mp4 | Bin
.../components/AudioTracksSelector.tsx | 0
.../src => common}/components/Indicator.tsx | 0
.../components/MultiValueControl.tsx | 0
.../src => common}/components/Overlay.tsx | 0
.../src => common}/components/Seeker.tsx | 0
.../components/TextTracksSelector.tsx | 0
.../{bare/src => common}/components/Toast.ts | 0
.../components/ToggleControl.tsx | 0
.../src => common}/components/TopControl.tsx | 0
.../src => common}/components/VideoLoader.tsx | 0
.../components/VideoTracksSelector.tsx | 0
.../{bare/src => common}/components/index.ts | 0
.../{bare/src => common}/constants/general.ts | 0
.../{bare/src => common}/constants/index.ts | 0
examples/{bare/src => common}/styles.tsx | 0
examples/{bare/src => common}/types/index.ts | 0
examples/{bare/src => common}/types/types.ts | 0
examples/expo/App.tsx | 2 +-
examples/expo/ios/Podfile.lock | 535 +++++++++---------
examples/expo/metro.config.js | 4 +-
examples/expo/package.json | 2 -
examples/expo/src/BasicExample.tsx | 342 -----------
examples/expo/src/BasicExample.windows.tsx | 240 --------
examples/expo/src/DRMExample.tsx | 231 --------
examples/expo/src/assets/index.ts | 1 -
.../expo/src/assets/videos/broadchurch.mp4 | Bin 3446053 -> 0 bytes
examples/expo/src/assets/videos/index.ts | 4 -
examples/expo/src/assets/videos/portrait.mp4 | Bin 9812941 -> 0 bytes
.../src/components/AudioTracksSelector.tsx | 65 ---
examples/expo/src/components/Indicator.tsx | 8 -
.../expo/src/components/MultiValueControl.tsx | 74 ---
examples/expo/src/components/Overlay.tsx | 350 ------------
examples/expo/src/components/Seeker.tsx | 152 -----
.../src/components/TextTracksSelector.tsx | 58 --
examples/expo/src/components/Toast.ts | 18 -
.../expo/src/components/ToggleControl.tsx | 73 ---
examples/expo/src/components/TopControl.tsx | 37 --
examples/expo/src/components/VideoLoader.tsx | 15 -
.../src/components/VideoTracksSelector.tsx | 62 --
examples/expo/src/components/index.ts | 11 -
examples/expo/src/constants/general.ts | 192 -------
examples/expo/src/constants/index.ts | 1 -
examples/expo/src/styles.tsx | 175 ------
examples/expo/src/types/index.ts | 1 -
examples/expo/src/types/types.ts | 11 -
57 files changed, 299 insertions(+), 2415 deletions(-)
rename examples/{bare/src => common}/BasicExample.tsx (100%)
rename examples/{bare/src => common}/BasicExample.windows.tsx (100%)
rename examples/{bare/src => common}/DRMExample.tsx (100%)
rename examples/{bare/src => common}/assets/index.ts (100%)
rename examples/{bare/src => common}/assets/videos/broadchurch.mp4 (100%)
rename examples/{bare/src => common}/assets/videos/index.ts (100%)
rename examples/{bare/src => common}/assets/videos/portrait.mp4 (100%)
rename examples/{bare/src => common}/components/AudioTracksSelector.tsx (100%)
rename examples/{bare/src => common}/components/Indicator.tsx (100%)
rename examples/{bare/src => common}/components/MultiValueControl.tsx (100%)
rename examples/{bare/src => common}/components/Overlay.tsx (100%)
rename examples/{bare/src => common}/components/Seeker.tsx (100%)
rename examples/{bare/src => common}/components/TextTracksSelector.tsx (100%)
rename examples/{bare/src => common}/components/Toast.ts (100%)
rename examples/{bare/src => common}/components/ToggleControl.tsx (100%)
rename examples/{bare/src => common}/components/TopControl.tsx (100%)
rename examples/{bare/src => common}/components/VideoLoader.tsx (100%)
rename examples/{bare/src => common}/components/VideoTracksSelector.tsx (100%)
rename examples/{bare/src => common}/components/index.ts (100%)
rename examples/{bare/src => common}/constants/general.ts (100%)
rename examples/{bare/src => common}/constants/index.ts (100%)
rename examples/{bare/src => common}/styles.tsx (100%)
rename examples/{bare/src => common}/types/index.ts (100%)
rename examples/{bare/src => common}/types/types.ts (100%)
delete mode 100644 examples/expo/src/BasicExample.tsx
delete mode 100644 examples/expo/src/BasicExample.windows.tsx
delete mode 100644 examples/expo/src/DRMExample.tsx
delete mode 100644 examples/expo/src/assets/index.ts
delete mode 100644 examples/expo/src/assets/videos/broadchurch.mp4
delete mode 100644 examples/expo/src/assets/videos/index.ts
delete mode 100644 examples/expo/src/assets/videos/portrait.mp4
delete mode 100644 examples/expo/src/components/AudioTracksSelector.tsx
delete mode 100644 examples/expo/src/components/Indicator.tsx
delete mode 100644 examples/expo/src/components/MultiValueControl.tsx
delete mode 100644 examples/expo/src/components/Overlay.tsx
delete mode 100644 examples/expo/src/components/Seeker.tsx
delete mode 100644 examples/expo/src/components/TextTracksSelector.tsx
delete mode 100644 examples/expo/src/components/Toast.ts
delete mode 100644 examples/expo/src/components/ToggleControl.tsx
delete mode 100644 examples/expo/src/components/TopControl.tsx
delete mode 100644 examples/expo/src/components/VideoLoader.tsx
delete mode 100644 examples/expo/src/components/VideoTracksSelector.tsx
delete mode 100644 examples/expo/src/components/index.ts
delete mode 100644 examples/expo/src/constants/general.ts
delete mode 100644 examples/expo/src/constants/index.ts
delete mode 100644 examples/expo/src/styles.tsx
delete mode 100644 examples/expo/src/types/index.ts
delete mode 100644 examples/expo/src/types/types.ts
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 7a7a49495d6943d1ff18a8453690a49311f715e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3446053
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