feat: Add React Native 0.66 support (#490)

* feat: Add React Native 0.66 support

* Generate lockfiles

* Update Podfile.lock

* chore: Migrate from react-native-navigation to react-navigation (#491)

* Migrate RNN -> RN

* Migrate all screens

* Fix get permission status

* fix app name

* Update AppDelegate.m

* Fix Info.plist

* Set `UIViewControllerBasedStatusBarAppearance` to `YES`

* Only enable `audio` if user granted microphone permission

* Update App.tsx

* Fix RNGH for Android

* Use `navigate` instead of `push`

* Fix animation

* Upgrade @types/react-native

* "Splash" -> "PermissionsPage"
This commit is contained in:
Marc Rousavy 2021-10-05 12:22:14 +02:00 committed by GitHub
parent a78bff61f9
commit 916278d3ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 714 additions and 599 deletions

1
.gitignore vendored
View File

@ -34,6 +34,7 @@ project.xcworkspace
.gradle
local.properties
android.iml
*.hprof
# Cocoapods
#

View File

@ -15,6 +15,6 @@ VisionCamera_buildToolsVersion=30.0.0
VisionCamera_compileSdkVersion=30
VisionCamera_kotlinVersion=1.5.30
VisionCamera_targetSdkVersion=30
VisionCamera_ndkVersion=20.1.5948944
VisionCamera_ndkVersion=21.4.7075529
android.enableJetifier=true
android.useAndroidX=true

View File

@ -10,7 +10,7 @@ module.exports = {
ecmaVersion: 2018,
sourceType: 'module',
},
ignorePatterns: ['babel.config.js', 'metro.config.js', '.eslintrc.js', 'index.js'],
ignorePatterns: ['babel.config.js', 'metro.config.js', '.eslintrc.js'],
plugins: ['@typescript-eslint'],
extends: ['plugin:@typescript-eslint/recommended', '@react-native-community', '../.eslintrc.js'],
};

View File

@ -122,6 +122,11 @@ def jscFlavor = 'org.webkit:android-jsc:+'
*/
def enableHermes = project.ext.react.get("enableHermes", false)
/**
* Architectures to build native code for in debug.
*/
def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures")
android {
ndkVersion rootProject.ext.ndkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
@ -156,6 +161,11 @@ android {
buildTypes {
debug {
signingConfig signingConfigs.debug
if (nativeArchitectures) {
ndk {
abiFilters nativeArchitectures.split(',')
}
}
}
release {
// Caution! In production, you need to generate your own keystore file.

View File

@ -1,8 +1,34 @@
package com.mrousavy.camera.example;
import com.reactnativenavigation.NavigationActivity;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
import android.os.Bundle;
public class MainActivity extends NavigationActivity {
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "VisionCameraExample";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
}
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
return new ReactActivityDelegate(this, getMainComponentName()) {
@Override
protected ReactRootView createRootView() {
return new RNGestureHandlerEnabledRootView(MainActivity.this);
}
};
}
}

View File

@ -1,22 +1,25 @@
package com.mrousavy.camera.example;
import android.app.Application;
import android.content.Context;
import com.facebook.react.PackageList;
import com.mrousavy.camera.frameprocessor.FrameProcessorPlugin;
import com.reactnativenavigation.NavigationApplication;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.reactnativenavigation.react.NavigationReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.soloader.SoLoader;
import java.util.List;
import com.mrousavy.camera.CameraPackage;
import com.mrousavy.camera.CameraPackage;
import com.mrousavy.camera.frameprocessor.FrameProcessorPlugin;
import com.facebook.react.bridge.JSIModulePackage;
import com.swmansion.reanimated.ReanimatedJSIModulePackage;
public class MainApplication extends NavigationApplication {
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
new NavigationReactNativeHost(this) {
new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
@ -27,7 +30,6 @@ public class MainApplication extends NavigationApplication {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for VisionCameraExample:
// packages.add(new MyReactNativePackage());
packages.add(new CameraPackage());
return packages;
}
@ -51,7 +53,7 @@ public class MainApplication extends NavigationApplication {
@Override
public void onCreate() {
super.onCreate();
// register VisionCamera Frame Processor Plugins here.
SoLoader.init(this, /* native exopackage */ false);
FrameProcessorPlugin.register(new ExampleFrameProcessorPlugin());
}
}

View File

@ -7,7 +7,7 @@ buildscript {
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
ndkVersion = "20.1.5948944"
ndkVersion = "21.4.7075529"
}
repositories {
google()

View File

@ -1,79 +1,5 @@
import 'react-native-gesture-handler';
import { Navigation } from 'react-native-navigation';
import { gestureHandlerRootHOC } from 'react-native-gesture-handler';
import { CameraPage } from './src/CameraPage';
import { Splash } from './src/Splash';
import { MediaPage } from './src/MediaPage';
import { Camera } from 'react-native-vision-camera';
import { AppRegistry } from 'react-native';
import { App } from './src/App';
Navigation.setDefaultOptions({
topBar: {
visible: false,
},
window: {
backgroundColor: 'black',
},
layout: {
backgroundColor: 'black',
componentBackgroundColor: 'black',
},
statusBar: {
animated: true,
drawBehind: true,
translucent: true,
visible: true,
style: 'dark',
},
animations: {
setRoot: {
alpha: {
duration: 500,
from: 0,
to: 1,
},
},
},
});
Navigation.registerComponent(
'Splash',
() => gestureHandlerRootHOC(Splash),
() => Splash,
);
Navigation.registerComponent(
'CameraPage',
() => gestureHandlerRootHOC(CameraPage),
() => CameraPage,
);
Navigation.registerComponent(
'MediaPage',
() => gestureHandlerRootHOC(MediaPage),
() => MediaPage,
);
Navigation.events().registerNavigationButtonPressedListener((event) => {
if (event.buttonId === 'back') Navigation.pop(event.componentId);
});
Navigation.events().registerAppLaunchedListener(async () => {
const [cameraPermission, microphonePermission] = await Promise.all([
Camera.getCameraPermissionStatus(),
Camera.getMicrophonePermissionStatus(),
]);
let rootName = 'Splash';
if (cameraPermission === 'authorized' && microphonePermission === 'authorized') rootName = 'CameraPage';
Navigation.setRoot({
root: {
stack: {
children: [
{
component: {
name: rootName,
},
},
],
},
},
});
});
AppRegistry.registerComponent('VisionCameraExample', () => App);

View File

@ -15,5 +15,6 @@ target 'VisionCameraExample' do
post_install do |installer|
react_native_post_install(installer)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
end
end

View File

@ -1,215 +1,220 @@
PODS:
- boost-for-react-native (1.63.0)
- boost (1.76.0)
- DoubleConversion (1.1.6)
- FBLazyVector (0.65.1)
- FBReactNativeSpec (0.65.1):
- RCT-Folly (= 2021.04.26.00)
- RCTRequired (= 0.65.1)
- RCTTypeSafety (= 0.65.1)
- React-Core (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- FBLazyVector (0.66.0)
- FBReactNativeSpec (0.66.0):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.66.0)
- RCTTypeSafety (= 0.66.0)
- React-Core (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- fmt (6.2.1)
- glog (0.3.5)
- RCT-Folly (2021.04.26.00):
- boost-for-react-native
- RCT-Folly (2021.06.28.00-v2):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCT-Folly/Default (= 2021.04.26.00)
- RCT-Folly/Default (2021.04.26.00):
- boost-for-react-native
- RCT-Folly/Default (= 2021.06.28.00-v2)
- RCT-Folly/Default (2021.06.28.00-v2):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.65.1)
- RCTTypeSafety (0.65.1):
- FBLazyVector (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTRequired (= 0.65.1)
- React-Core (= 0.65.1)
- React (0.65.1):
- React-Core (= 0.65.1)
- React-Core/DevSupport (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-RCTActionSheet (= 0.65.1)
- React-RCTAnimation (= 0.65.1)
- React-RCTBlob (= 0.65.1)
- React-RCTImage (= 0.65.1)
- React-RCTLinking (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- React-RCTSettings (= 0.65.1)
- React-RCTText (= 0.65.1)
- React-RCTVibration (= 0.65.1)
- React-callinvoker (0.65.1)
- React-Core (0.65.1):
- RCTRequired (0.66.0)
- RCTTypeSafety (0.66.0):
- FBLazyVector (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.66.0)
- React-Core (= 0.66.0)
- React (0.66.0):
- React-Core (= 0.66.0)
- React-Core/DevSupport (= 0.66.0)
- React-Core/RCTWebSocket (= 0.66.0)
- React-RCTActionSheet (= 0.66.0)
- React-RCTAnimation (= 0.66.0)
- React-RCTBlob (= 0.66.0)
- React-RCTImage (= 0.66.0)
- React-RCTLinking (= 0.66.0)
- React-RCTNetwork (= 0.66.0)
- React-RCTSettings (= 0.66.0)
- React-RCTText (= 0.66.0)
- React-RCTVibration (= 0.66.0)
- React-callinvoker (0.66.0)
- React-Core (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.0)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/CoreModulesHeaders (0.65.1):
- React-Core/CoreModulesHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/Default (0.65.1):
- React-Core/Default (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/DevSupport (0.65.1):
- React-Core/DevSupport (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-jsinspector (= 0.65.1)
- React-perflogger (= 0.65.1)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.0)
- React-Core/RCTWebSocket (= 0.66.0)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-jsinspector (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTActionSheetHeaders (0.65.1):
- React-Core/RCTActionSheetHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTAnimationHeaders (0.65.1):
- React-Core/RCTAnimationHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTBlobHeaders (0.65.1):
- React-Core/RCTBlobHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTImageHeaders (0.65.1):
- React-Core/RCTImageHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTLinkingHeaders (0.65.1):
- React-Core/RCTLinkingHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTNetworkHeaders (0.65.1):
- React-Core/RCTNetworkHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTSettingsHeaders (0.65.1):
- React-Core/RCTSettingsHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTTextHeaders (0.65.1):
- React-Core/RCTTextHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTVibrationHeaders (0.65.1):
- React-Core/RCTVibrationHeaders (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-Core/RCTWebSocket (0.65.1):
- React-Core/RCTWebSocket (0.66.0):
- glog
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.0)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsiexecutor (= 0.66.0)
- React-perflogger (= 0.66.0)
- Yoga
- React-CoreModules (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/CoreModulesHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTImage (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-cxxreact (0.65.1):
- boost-for-react-native (= 1.63.0)
- React-CoreModules (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.0)
- React-Core/CoreModulesHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- React-RCTImage (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-cxxreact (0.66.0):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.04.26.00)
- React-callinvoker (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsinspector (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-runtimeexecutor (= 0.65.1)
- React-jsi (0.65.1):
- boost-for-react-native (= 1.63.0)
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.66.0)
- React-jsi (= 0.66.0)
- React-jsinspector (= 0.66.0)
- React-logger (= 0.66.0)
- React-perflogger (= 0.66.0)
- React-runtimeexecutor (= 0.66.0)
- React-jsi (0.66.0):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.04.26.00)
- React-jsi/Default (= 0.65.1)
- React-jsi/Default (0.65.1):
- boost-for-react-native (= 1.63.0)
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsi/Default (= 0.66.0)
- React-jsi/Default (0.66.0):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.04.26.00)
- React-jsiexecutor (0.65.1):
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsiexecutor (0.66.0):
- DoubleConversion
- glog
- RCT-Folly (= 2021.04.26.00)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-jsinspector (0.65.1)
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-perflogger (= 0.66.0)
- React-jsinspector (0.66.0)
- React-logger (0.66.0):
- glog
- react-native-blur (0.8.0):
- React
- react-native-cameraroll (4.0.4):
- React-Core
- react-native-safe-area-context (3.3.2):
- React-Core
- react-native-slider (4.1.7):
- React-Core
- react-native-video (5.1.1):
@ -217,82 +222,74 @@ PODS:
- react-native-video/Video (= 5.1.1)
- react-native-video/Video (5.1.1):
- React-Core
- React-perflogger (0.65.1)
- React-RCTActionSheet (0.65.1):
- React-Core/RCTActionSheetHeaders (= 0.65.1)
- React-RCTAnimation (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTAnimationHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTBlob (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- React-Core/RCTBlobHeaders (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTImage (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTImageHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTLinking (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- React-Core/RCTLinkingHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTNetwork (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTNetworkHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTSettings (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTSettingsHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTText (0.65.1):
- React-Core/RCTTextHeaders (= 0.65.1)
- React-RCTVibration (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- React-Core/RCTVibrationHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-runtimeexecutor (0.65.1):
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (0.65.1):
- React-perflogger (0.66.0)
- React-RCTActionSheet (0.66.0):
- React-Core/RCTActionSheetHeaders (= 0.66.0)
- React-RCTAnimation (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.0)
- React-Core/RCTAnimationHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTBlob (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTBlobHeaders (= 0.66.0)
- React-Core/RCTWebSocket (= 0.66.0)
- React-jsi (= 0.66.0)
- React-RCTNetwork (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTImage (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.0)
- React-Core/RCTImageHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- React-RCTNetwork (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTLinking (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- React-Core/RCTLinkingHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTNetwork (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.0)
- React-Core/RCTNetworkHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTSettings (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.0)
- React-Core/RCTSettingsHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-RCTText (0.66.0):
- React-Core/RCTTextHeaders (= 0.66.0)
- React-RCTVibration (0.66.0):
- FBReactNativeSpec (= 0.66.0)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTVibrationHeaders (= 0.66.0)
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (= 0.66.0)
- React-runtimeexecutor (0.66.0):
- React-jsi (= 0.66.0)
- ReactCommon/turbomodule/core (0.66.0):
- DoubleConversion
- glog
- RCT-Folly (= 2021.04.26.00)
- React-callinvoker (= 0.65.1)
- React-Core (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-perflogger (= 0.65.1)
- ReactNativeNavigation (7.21.0):
- React-Core
- React-RCTImage
- React-RCTText
- ReactNativeNavigation/Core (= 7.21.0)
- ReactNativeNavigation/Core (7.21.0):
- React-Core
- React-RCTImage
- React-RCTText
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.66.0)
- React-Core (= 0.66.0)
- React-cxxreact (= 0.66.0)
- React-jsi (= 0.66.0)
- React-logger (= 0.66.0)
- React-perflogger (= 0.66.0)
- RNGestureHandler (1.10.3):
- React-Core
- RNReanimated (2.3.0-beta.1):
- RNReanimated (2.3.0-beta.2):
- DoubleConversion
- FBLazyVector
- FBReactNativeSpec
@ -321,20 +318,21 @@ PODS:
- React-RCTVibration
- ReactCommon/turbomodule/core
- Yoga
- RNScreens (3.7.2):
- RNScreens (3.8.0):
- React-Core
- React-RCTImage
- RNStaticSafeAreaInsets (2.1.1):
- React
- RNVectorIcons (8.1.0):
- React-Core
- VisionCamera (2.8.1):
- VisionCamera (2.8.3):
- React
- React-callinvoker
- React-Core
- Yoga (1.14.0)
DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
@ -352,8 +350,10 @@ DEPENDENCIES:
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- "react-native-slider (from `../node_modules/@react-native-community/slider`)"
- react-native-video (from `../node_modules/react-native-video`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
@ -368,7 +368,6 @@ DEPENDENCIES:
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- ReactNativeNavigation (from `../node_modules/react-native-navigation`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
- RNScreens (from `../node_modules/react-native-screens`)
@ -379,10 +378,11 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- boost-for-react-native
- fmt
EXTERNAL SOURCES:
boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
@ -413,10 +413,14 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
React-logger:
:path: "../node_modules/react-native/ReactCommon/logger"
react-native-blur:
:path: "../node_modules/@react-native-community/blur"
react-native-cameraroll:
:path: "../node_modules/@react-native-community/cameraroll"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-slider:
:path: "../node_modules/@react-native-community/slider"
react-native-video:
@ -445,8 +449,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
ReactNativeNavigation:
:path: "../node_modules/react-native-navigation"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
RNReanimated:
@ -463,48 +465,49 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
boost: a7c83b31436843459a1961bfd74b96033dc77234
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 33c82491102f20ecddb6c6a2c273696ace3191e0
FBReactNativeSpec: df8f81d2a7541ee6755a047b398a5cb5a72acd0e
FBLazyVector: 6816ca39e1cc8beffd2a96783f518296789d1c48
FBReactNativeSpec: 3b1e86618e902743fde35b40cf9ebd100fd655b7
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 5337263514dd6f09803962437687240c5dc39aa4
RCT-Folly: 0dd9e1eb86348ecab5ba76f910b56f4b5fef3c46
RCTRequired: 6cf071ab2adfd769014b3d94373744ee6e789530
RCTTypeSafety: b829c59453478bb5b02487b8de3336386ab93ab1
React: 29d8a785041b96a2754c25cc16ddea57b7a618ce
React-callinvoker: 2857b61132bd7878b736e282581f4b42fd93002b
React-Core: 001e21bad5ca41e59e9d90df5c0b53da04c3ce8e
React-CoreModules: 0a0410ab296a62ab38e2f8d321e822d1fcc2fe49
React-cxxreact: 8d904967134ae8ff0119c5357c42eaae976806f8
React-jsi: 12913c841713a15f64eabf5c9ad98592c0ec5940
React-jsiexecutor: 43f2542aed3c26e42175b339f8d37fe3dd683765
React-jsinspector: 41e58e5b8e3e0bf061fdf725b03f2144014a8fb0
RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9
RCTRequired: e4a18a90004e0ed97bba9081099104fd0f658dc9
RCTTypeSafety: 8a3c31d38de58e1a6a7df6e4e643644a60b00e22
React: 2b1d0dc3c23e01b754588a74a5b265282d9eb61e
React-callinvoker: 57c195e780695285fa56e61efdbc0ca0e9204484
React-Core: 45e4b3c57b0b5fdbb24bc6a63a964870c0405955
React-CoreModules: d7bb1ae3436eddd85a7eb6d5e928f8c1655d87db
React-cxxreact: 60c850e9997b21ee302757c36a460efc944183e7
React-jsi: 38d68cb1b53843703100830d530342b32f8e0878
React-jsiexecutor: 6a05173dc0142abc582bd4edd2d23146b8cc218a
React-jsinspector: be95ad424ba9f7b817aff22732eb9b1b810a000a
React-logger: 9a9cd87d4ea681ae929b32ef580638ff1b50fb24
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
react-native-slider: 269d81247e2a87358ee03241da55b00c919e4d7a
react-native-video: 0bb76b6d6b77da3009611586c7dbf817b947f30e
React-perflogger: fd28ee1f2b5b150b00043f0301d96bd417fdc339
React-RCTActionSheet: 7f3fa0855c346aa5d7c60f9ced16e067db6d29fa
React-RCTAnimation: 2119a18ee26159004b001bc56404ca5dbaae6077
React-RCTBlob: a493cc306deeaba0c0efa8ecec2da154afd3a798
React-RCTImage: 54999ddc896b7db6650af5760607aaebdf30425c
React-RCTLinking: 7fb3fa6397d3700c69c3d361870a299f04f1a2e6
React-RCTNetwork: 329ee4f75bd2deb8cf6c4b14231b5bb272cbd9af
React-RCTSettings: 1a659d58e45719bc77c280dbebce6a5a5a2733f5
React-RCTText: e12d7aae2a038be9ae72815436677a7c6549dd26
React-RCTVibration: 92d41c2442e5328cc4d342cd7f78e5876b68bae5
React-runtimeexecutor: 85187f19dd9c47a7c102f9994f9d14e4dc2110de
ReactCommon: eafed38eec7b591c31751bfa7494801618460459
ReactNativeNavigation: d6f27d4ba71887a161534a13e8ef3873b26c68b5
React-perflogger: 1f554c2b684e2f484f9edcdfdaeedab039fbaca8
React-RCTActionSheet: 610d5a5d71ab4808734782c8bca6a12ec3563672
React-RCTAnimation: ec6ed97370ace32724c253f29f0586cafcab8126
React-RCTBlob: b3270d498ff240f49c50e1bc950b6e5fd48886ba
React-RCTImage: 23d5e26669b31230bea3fd99eb703af699e5d61a
React-RCTLinking: edaaee9dee82b79e90e7b903d8913fa72284fbba
React-RCTNetwork: e8825053dd1b5c2a0e1aa3cf1127750b624f90c0
React-RCTSettings: 40d7ae987031c5dc561d11cd3a15cc1245a11d42
React-RCTText: 6e104479d4f0bb593b4cf90b6fc6e5390c12ccde
React-RCTVibration: 53b92d54b923283638cb0186da7a5c2d2b70a49b
React-runtimeexecutor: 4bb657a97aa74568d9ed634c8bd478299bb8a3a6
ReactCommon: eb059748e842a1a86025ebbd4ac9d99e74492f88
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
RNReanimated: 13f91e6ffd60b3f50c579804958c7610de6ba9c9
RNScreens: 0591543e343c7444ea1756b6265d81a4295922c9
RNReanimated: 0a220d11e97e5de1c552e943a9a3f89b06c2cbf2
RNScreens: 6e1ea5787989f92b0671049b808aef64fa1ef98c
RNStaticSafeAreaInsets: 6103cf09647fa427186d30f67b0f5163c1ae8252
RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4
VisionCamera: 1e4184f85ec6ac7b441b0266639baae7918b1396
Yoga: aa0cb45287ebe1004c02a13f279c55a95f1572f4
VisionCamera: 41b059e8993e263efbac83eebb953ba6121c8e85
Yoga: c11abbf5809216c91fcd62f5571078b83d9b6720
PODFILE CHECKSUM: 4b093c1d474775c2eac3268011e4b0b80929d3a2
PODFILE CHECKSUM: 29b1752e05601e9867644e58ce0ed8b9106be6cb
COCOAPODS: 1.10.2

View File

@ -6,22 +6,32 @@
*/
#import "AppDelegate.h"
#import <ReactNativeNavigation/ReactNativeNavigation.h>
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTBridge* bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
[ReactNativeNavigation bootstrapWithBridge:bridge];
return YES;
}
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"VisionCameraExample"
initialProperties:nil];
- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge {
return [ReactNativeNavigation extraModulesForBridge:bridge];
if (@available(iOS 13.0, *)) {
rootView.backgroundColor = [UIColor systemBackgroundColor];
} else {
rootView.backgroundColor = [UIColor whiteColor];
}
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge

View File

@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Vision Camera</string>
<string>VisionCameraExample</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@ -35,10 +35,22 @@
</dict>
</dict>
</dict>
<key>NSCameraUsageDescription</key>
<string>VisionCamera needs access to your Camera for very obvious reasons.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>VisionCamera needs access to your Camera for very obvious reasons.</string>
<key>NSMicrophoneUsageDescription</key>
<string>VisionCamera needs access to your Microphone to record videos with audio.</string>
<key>NSPhotoLibraryUsageDescription</key>
@ -48,22 +60,5 @@
<string>Ionicons.ttf</string>
<string>MaterialCommunityIcons.ttf</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDarkContent</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
</dict>
</plist>

View File

@ -17,13 +17,14 @@
"@react-native-community/blur": "^3.6.0",
"@react-native-community/cameraroll": "^4.0.4",
"@react-native-community/slider": "^4.1.7",
"@react-navigation/native": "^6.0.4",
"@react-navigation/native-stack": "^6.2.2",
"react": "^17.0.2",
"react-native": "^0.65.1",
"react-native-codegen": "^0.0.7",
"react-native": "^0.66.0",
"react-native-gesture-handler": "^1.10.3",
"react-native-navigation": "^7.21.0",
"react-native-pressable-opacity": "^1.0.4",
"react-native-reanimated": "^2.3.0-beta.1",
"react-native-reanimated": "^2.3.0-beta.2",
"react-native-safe-area-context": "^3.3.2",
"react-native-screens": "^3.8.0",
"react-native-static-safe-area-insets": "^2.1.1",
"react-native-vector-icons": "^8.1.0",
@ -35,7 +36,7 @@
"@react-native-community/eslint-config": "^3.0.1",
"@react-native-community/eslint-plugin": "^1.1.0",
"@types/react": "^17.0.27",
"@types/react-native": "^0.65.1",
"@types/react-native": "^0.65.5",
"@types/react-native-vector-icons": "^6.4.9",
"@types/react-native-video": "^5.0.9",
"babel-plugin-module-resolver": "^4.1.0",

51
example/src/App.tsx Normal file
View File

@ -0,0 +1,51 @@
import { NavigationContainer } from '@react-navigation/native';
import React, { useEffect, useState } from 'react';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { PermissionsPage } from './PermissionsPage';
import { MediaPage } from './MediaPage';
import { CameraPage } from './CameraPage';
import type { Routes } from './Routes';
import { Camera, CameraPermissionStatus } from 'react-native-vision-camera';
const Stack = createNativeStackNavigator<Routes>();
export function App(): React.ReactElement | null {
const [cameraPermission, setCameraPermission] = useState<CameraPermissionStatus>();
const [microphonePermission, setMicrophonePermission] = useState<CameraPermissionStatus>();
useEffect(() => {
Camera.getCameraPermissionStatus().then(setCameraPermission);
Camera.getMicrophonePermissionStatus().then(setMicrophonePermission);
}, []);
console.log(`Re-rendering Navigator. Camera: ${cameraPermission} | Microphone: ${microphonePermission}`);
if (cameraPermission == null || microphonePermission == null) {
// still loading
return null;
}
const showPermissionsPage = cameraPermission !== 'authorized' || microphonePermission === 'not-determined';
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false,
statusBarStyle: 'dark',
animationTypeForReplace: 'push',
}}
initialRouteName={showPermissionsPage ? 'PermissionsPage' : 'CameraPage'}>
<Stack.Screen name="PermissionsPage" component={PermissionsPage} />
<Stack.Screen name="CameraPage" component={CameraPage} />
<Stack.Screen
name="MediaPage"
component={MediaPage}
options={{
animation: 'none',
presentation: 'transparentModal',
}}
/>
</Stack.Navigator>
</NavigationContainer>
);
}

View File

@ -2,7 +2,6 @@ import * as React from 'react';
import { useRef, useState, useMemo, useCallback } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { PinchGestureHandler, PinchGestureHandlerGestureEvent, TapGestureHandler } from 'react-native-gesture-handler';
import { Navigation, NavigationFunctionComponent } from 'react-native-navigation';
import {
CameraDeviceFormat,
CameraRuntimeError,
@ -14,7 +13,6 @@ import {
VideoFile,
} from 'react-native-vision-camera';
import { Camera, frameRateIncluded } from 'react-native-vision-camera';
import { useIsScreenFocussed } from './hooks/useIsScreenFocused';
import { CONTENT_SPACING, MAX_ZOOM_FACTOR, SAFE_AREA_PADDING } from './Constants';
import Reanimated, { Extrapolate, interpolate, useAnimatedGestureHandler, useAnimatedProps, useSharedValue } from 'react-native-reanimated';
import { useEffect } from 'react';
@ -25,6 +23,9 @@ import { PressableOpacity } from 'react-native-pressable-opacity';
import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
import IonIcon from 'react-native-vector-icons/Ionicons';
import { examplePlugin } from './frame-processors/ExamplePlugin';
import type { Routes } from './Routes';
import type { NativeStackScreenProps } from '@react-navigation/native-stack';
import { useIsFocused } from '@react-navigation/core';
const ReanimatedCamera = Reanimated.createAnimatedComponent(Camera);
Reanimated.addWhitelistedNativeProps({
@ -34,14 +35,16 @@ Reanimated.addWhitelistedNativeProps({
const SCALE_FULL_ZOOM = 3;
const BUTTON_SIZE = 40;
export const CameraPage: NavigationFunctionComponent = ({ componentId }) => {
type Props = NativeStackScreenProps<Routes, 'CameraPage'>;
export function CameraPage({ navigation }: Props): React.ReactElement {
const camera = useRef<Camera>(null);
const [isCameraInitialized, setIsCameraInitialized] = useState(false);
const [hasMicrophonePermission, setHasMicrophonePermission] = useState(false);
const zoom = useSharedValue(0);
const isPressingButton = useSharedValue(false);
// check if camera page is active
const isFocussed = useIsScreenFocussed(componentId);
const isFocussed = useIsFocused();
const isForeground = useIsForeground();
const isActive = isFocussed && isForeground;
@ -133,18 +136,16 @@ export const CameraPage: NavigationFunctionComponent = ({ componentId }) => {
console.log('Camera initialized!');
setIsCameraInitialized(true);
}, []);
const onMediaCaptured = useCallback(async (media: PhotoFile | VideoFile, type: 'photo' | 'video') => {
const onMediaCaptured = useCallback(
(media: PhotoFile | VideoFile, type: 'photo' | 'video') => {
console.log(`Media captured! ${JSON.stringify(media)}`);
await Navigation.showModal({
component: {
name: 'MediaPage',
passProps: {
type: type,
navigation.navigate('MediaPage', {
path: media.path,
},
},
type: type,
});
}, []);
},
[navigation],
);
const onFlipCameraPressed = useCallback(() => {
setCameraPosition((p) => (p === 'back' ? 'front' : 'back'));
}, []);
@ -165,6 +166,10 @@ export const CameraPage: NavigationFunctionComponent = ({ componentId }) => {
// Run everytime the neutralZoomScaled value changes. (reset zoom when device changes)
zoom.value = neutralZoom;
}, [neutralZoom, zoom]);
useEffect(() => {
Camera.getMicrophonePermissionStatus().then((status) => setHasMicrophonePermission(status === 'authorized'));
}, []);
//#endregion
//#region Pinch to Zoom Gesture
@ -223,7 +228,7 @@ export const CameraPage: NavigationFunctionComponent = ({ componentId }) => {
animatedProps={cameraAnimatedProps}
photo={true}
video={true}
audio={true}
audio={hasMicrophonePermission}
frameProcessor={device.supportsParallelVideoProcessing ? frameProcessor : undefined}
frameProcessorFps={1}
onFrameProcessorPerformanceSuggestionAvailable={onFrameProcessorSuggestionAvailable}
@ -279,7 +284,7 @@ export const CameraPage: NavigationFunctionComponent = ({ componentId }) => {
</View>
</View>
);
};
}
const styles = StyleSheet.create({
container: {

View File

@ -1,10 +1,8 @@
import React, { useCallback, useMemo, useState } from 'react';
import { StyleSheet, View, Image, ActivityIndicator, PermissionsAndroid, Platform } from 'react-native';
import { Navigation, NavigationFunctionComponent, OptionsModalPresentationStyle } from 'react-native-navigation';
import Video, { LoadError, OnLoadData } from 'react-native-video';
import { SAFE_AREA_PADDING } from './Constants';
import { useIsForeground } from './hooks/useIsForeground';
import { useIsScreenFocussed } from './hooks/useIsScreenFocused';
import { PressableOpacity } from 'react-native-pressable-opacity';
import IonIcon from 'react-native-vector-icons/Ionicons';
import { Alert } from 'react-native';
@ -12,11 +10,9 @@ import CameraRoll from '@react-native-community/cameraroll';
import { StatusBarBlurBackground } from './views/StatusBarBlurBackground';
import type { NativeSyntheticEvent } from 'react-native';
import type { ImageLoadEventData } from 'react-native';
interface MediaProps {
path: string;
type: 'video' | 'photo';
}
import type { NativeStackScreenProps } from '@react-navigation/native-stack';
import type { Routes } from './Routes';
import { useIsFocused } from '@react-navigation/core';
const requestSavePermission = async (): Promise<boolean> => {
if (Platform.OS !== 'android') return true;
@ -34,16 +30,18 @@ const requestSavePermission = async (): Promise<boolean> => {
const isVideoOnLoadEvent = (event: OnLoadData | NativeSyntheticEvent<ImageLoadEventData>): event is OnLoadData =>
'duration' in event && 'naturalSize' in event;
export const MediaPage: NavigationFunctionComponent<MediaProps> = ({ componentId, type, path }) => {
type Props = NativeStackScreenProps<Routes, 'MediaPage'>;
export function MediaPage({ navigation, route }: Props): React.ReactElement {
const { path, type } = route.params;
const [hasMediaLoaded, setHasMediaLoaded] = useState(false);
const isForeground = useIsForeground();
const isScreenFocused = useIsScreenFocussed(componentId);
const isScreenFocused = useIsFocused();
const isVideoPaused = !isForeground || !isScreenFocused;
const [savingState, setSavingState] = useState<'none' | 'saving' | 'saved'>('none');
const onClosePressed = useCallback(() => {
Navigation.dismissModal(componentId);
}, [componentId]);
navigation.goBack();
}, [navigation]);
const onMediaLoad = useCallback((event: OnLoadData | NativeSyntheticEvent<ImageLoadEventData>) => {
if (isVideoOnLoadEvent(event)) {
@ -125,24 +123,7 @@ export const MediaPage: NavigationFunctionComponent<MediaProps> = ({ componentId
<StatusBarBlurBackground />
</View>
);
};
MediaPage.options = {
modalPresentationStyle: OptionsModalPresentationStyle.overCurrentContext,
animations: {
showModal: {
waitForRender: true,
enabled: false,
},
dismissModal: {
enabled: false,
},
},
layout: {
backgroundColor: 'transparent',
componentBackgroundColor: 'transparent',
},
};
}
const styles = StyleSheet.create({
container: {

View File

@ -1,15 +1,17 @@
import type { NativeStackScreenProps } from '@react-navigation/native-stack';
import React, { useCallback, useEffect, useState } from 'react';
import { ImageRequireSource, Linking } from 'react-native';
import { StyleSheet, View, Text, Image } from 'react-native';
import { Navigation, NavigationFunctionComponent } from 'react-native-navigation';
import { Camera, CameraPermissionStatus } from 'react-native-vision-camera';
import { CONTENT_SPACING, SAFE_AREA_PADDING } from './Constants';
import type { Routes } from './Routes';
// eslint-disable-next-line @typescript-eslint/no-var-requires
const BANNER_IMAGE = require('../../docs/static/img/11.png') as ImageRequireSource;
export const Splash: NavigationFunctionComponent = ({ componentId }) => {
type Props = NativeStackScreenProps<Routes, 'PermissionsPage'>;
export function PermissionsPage({ navigation }: Props): React.ReactElement {
const [cameraPermissionStatus, setCameraPermissionStatus] = useState<CameraPermissionStatus>('not-determined');
const [microphonePermissionStatus, setMicrophonePermissionStatus] = useState<CameraPermissionStatus>('not-determined');
@ -18,7 +20,7 @@ export const Splash: NavigationFunctionComponent = ({ componentId }) => {
const permission = await Camera.requestMicrophonePermission();
console.log(`Microphone permission status: ${permission}`);
if (permission === 'denied') Linking.openSettings();
if (permission === 'denied') await Linking.openSettings();
setMicrophonePermissionStatus(permission);
}, []);
@ -27,42 +29,13 @@ export const Splash: NavigationFunctionComponent = ({ componentId }) => {
const permission = await Camera.requestCameraPermission();
console.log(`Camera permission status: ${permission}`);
if (permission === 'denied') Linking.openSettings();
if (permission === 'denied') await Linking.openSettings();
setCameraPermissionStatus(permission);
}, []);
useEffect(() => {
const checkPermissions = async (): Promise<void> => {
console.log('Checking Permission status...');
const [cameraPermission, microphonePermission] = await Promise.all([
Camera.getCameraPermissionStatus(),
Camera.getMicrophonePermissionStatus(),
]);
console.log(`Check: CameraPermission: ${cameraPermission} | MicrophonePermission: ${microphonePermission}`);
setCameraPermissionStatus(cameraPermission);
setMicrophonePermissionStatus(microphonePermission);
};
checkPermissions();
}, []);
useEffect(() => {
if (cameraPermissionStatus === 'authorized' && microphonePermissionStatus === 'authorized') {
Navigation.setRoot({
root: {
stack: {
children: [
{
component: {
name: 'CameraPage',
},
},
],
},
},
});
}
}, [cameraPermissionStatus, microphonePermissionStatus, componentId]);
if (cameraPermissionStatus === 'authorized' && microphonePermissionStatus === 'authorized') navigation.replace('CameraPage');
}, [cameraPermissionStatus, microphonePermissionStatus, navigation]);
return (
<View style={styles.container}>
@ -88,7 +61,7 @@ export const Splash: NavigationFunctionComponent = ({ componentId }) => {
</View>
</View>
);
};
}
const styles = StyleSheet.create({
welcome: {

8
example/src/Routes.ts Normal file
View File

@ -0,0 +1,8 @@
export type Routes = {
PermissionsPage: undefined;
CameraPage: undefined;
MediaPage: {
path: string;
type: 'video' | 'photo';
};
};

View File

@ -1,39 +0,0 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import { Navigation } from 'react-native-navigation';
export const useIsScreenFocussed = (componentId: string): boolean => {
const componentStack = useRef<string[]>(['componentId']);
const [isFocussed, setIsFocussed] = useState(true);
const invalidate = useCallback(() => {
const last = componentStack.current[componentStack.current.length - 1];
setIsFocussed(last === componentId);
}, [componentId, setIsFocussed]);
useEffect(() => {
const listener = Navigation.events().registerComponentDidAppearListener((event) => {
if (event.componentType !== 'Component') return;
componentStack.current.push(event.componentId);
invalidate();
});
return () => listener.remove();
}, [invalidate]);
useEffect(() => {
const listener = Navigation.events().registerComponentDidDisappearListener((event) => {
if (event.componentType !== 'Component') return;
// we can't simply use .pop() here because the component might be popped deeper down in the hierarchy.
for (let i = componentStack.current.length - 1; i >= 0; i--) {
if (componentStack.current[i] === event.componentId) {
componentStack.current.splice(i, 1);
break;
}
}
invalidate();
});
return () => listener.remove();
}, [invalidate]);
return isFocussed;
};

View File

@ -7,7 +7,8 @@
},
},
"include": [
"src"
"src",
"index.js"
],
"exclude": [
"node_modules"

View File

@ -974,10 +974,50 @@
resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-1.0.0.tgz#c52a99d4fe01049102d47dc45d40cbde4f720ab6"
integrity sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg==
"@react-native/polyfills@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-1.0.0.tgz#05bb0031533598f9458cf65a502b8df0eecae780"
integrity sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w==
"@react-native/polyfills@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa"
integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==
"@react-navigation/core@^6.0.2":
version "6.0.2"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.0.2.tgz#301be6c28211ae2571f3e9e3f74c8f077619ccdd"
integrity sha512-Omsb670qmNfO0KGiRrOE+KXpCYQ6jXxE5uCPnj5srW31s6YDGiFl/M5sRcMyBdDXLXp5HjkQTJpU9ilmjKtL5g==
dependencies:
"@react-navigation/routers" "^6.0.1"
escape-string-regexp "^4.0.0"
nanoid "^3.1.23"
query-string "^7.0.0"
react-is "^16.13.0"
"@react-navigation/elements@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.1.2.tgz#82d8978489e47e7c54f67c453ba4a124046fe253"
integrity sha512-PbPCleC1HpUlXtuP0DFNCNTEhRLd6lmB0KxY0SGRGqCemS3HpG/PajEQ1LDe7S51M03a1tDby1MfKTkNanUXAg==
"@react-navigation/native-stack@^6.2.2":
version "6.2.2"
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.2.2.tgz#1687cff9502aa8c91091c9f2a783026f90823cd3"
integrity sha512-OhWW1R0ZgAnWAvuhPZaBiEuMF13j7+BaNB8KmxQTTjG41EdzUi5yvz5MbHvzLjhF3yJ3qHxr6HjxFRMbugWvjw==
dependencies:
"@react-navigation/elements" "^1.1.2"
warn-once "^0.1.0"
"@react-navigation/native@^6.0.4":
version "6.0.4"
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.0.4.tgz#8a9710ce4e9b903ea12c4a4fce8709f5a37e15fe"
integrity sha512-497dGGDIZ8hDCPGj6GXZvLGHk6NvZk5k4r1cjwgqcXwutK5fS7sgD0dZP52NTQC3GvLe8PZNv6AEdMIqFrZK6A==
dependencies:
"@react-navigation/core" "^6.0.2"
escape-string-regexp "^4.0.0"
nanoid "^3.1.23"
"@react-navigation/routers@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.0.1.tgz#ae50f07c776c18bd9fdc87f17e9f3afc3fd59d19"
integrity sha512-5ctB49rmtTRQuTSBVgqMsEzBUjPP2ByUzBjNivA7jmvk+PDCl4oZsiR8KAm/twhxe215GYThfi2vUWXKAg6EEQ==
dependencies:
nanoid "^3.1.23"
"@sideway/address@^4.1.0":
version "4.1.2"
@ -1058,13 +1098,20 @@
"@types/react" "*"
"@types/react-native" "*"
"@types/react-native@*", "@types/react-native@^0.65.1":
"@types/react-native@*":
version "0.65.1"
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.65.1.tgz#7342158e10ea5088c225bb669dd4ef15aad0a2f7"
integrity sha512-pyRmTnvjYORIXuL8+ZhoI8gqamTE/8Lo9bU/1Ife3VOTgeFzY9rHnx3Tna7OOixBW5Exh2PcHSkJXma4FENC0g==
dependencies:
"@types/react" "*"
"@types/react-native@^0.65.5":
version "0.65.5"
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.65.5.tgz#e5e473be8c7ed784419554f25cc8850b9c3ce68d"
integrity sha512-lc2JVmqVIkFmEtUHX8jCkuepqRSzlhRPBIlVFVc0hgfoUxvntrORhmK7LCnAbHfmpUqVVGhMjax27CCTACQ2Kw==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^17.0.27":
version "17.0.27"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.27.tgz#6498ed9b3ad117e818deb5525fa1946c09f2e0e6"
@ -2492,6 +2539,11 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
filter-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
finalhandler@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
@ -2777,10 +2829,10 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
hermes-engine@~0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.8.1.tgz#b6d0d70508ac5add2d198304502fb968cdecb8b2"
integrity sha512-as9Iccj/qrqqtDmfYUHbOIjt5xsQbUB6pjNIW3i1+RVr+pCAdz5S8/Jry778mz3rJWplYzHWdR1u1xQSYfBRYw==
hermes-engine@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.9.0.tgz#84d9cfe84e8f6b1b2020d6e71b350cec84ed982f"
integrity sha512-r7U+Y4P2Qg/igFVZN+DpT7JFfXUn1MM4dFne8aW+cCrF6RRymof+VqrUHs1kl07j8h8V2CNesU19RKgWbr3qPw==
hermes-parser@0.4.7:
version "0.4.7"
@ -2794,7 +2846,7 @@ hermes-profile-transformer@^0.0.6:
dependencies:
source-map "^0.7.3"
hoist-non-react-statics@3.x.x, hoist-non-react-statics@^3.3.0:
hoist-non-react-statics@^3.3.0:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@ -3447,7 +3499,7 @@ lodash.truncate@^4.4.2:
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
lodash@4.17.x, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15:
lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@ -3891,6 +3943,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
nanoid@^3.1.23:
version "3.1.28"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.28.tgz#3c01bac14cb6c5680569014cc65a2f26424c6bd4"
integrity sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@ -4336,7 +4393,7 @@ prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
prop-types@15.x.x, prop-types@^15.5.10, prop-types@^15.7.2:
prop-types@^15.5.10, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@ -4358,6 +4415,16 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
query-string@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.0.1.tgz#45bd149cf586aaa582dffc7ec7a8ad97dd02f75d"
integrity sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==
dependencies:
decode-uri-component "^0.2.0"
filter-obj "^1.1.0"
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@ -4368,15 +4435,15 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
react-devtools-core@^4.6.0:
version "4.18.0"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.18.0.tgz#06b2375dcea7858c957d1779cc2339d2a0af200a"
integrity sha512-Kg/LhDkdt9J0ned1D1RfeuSdX4cKW83/valJLYswGdsYc0g2msmD0kfYozsaRacjDoZwcKlxGOES1wrkET5O6Q==
react-devtools-core@^4.13.0:
version "4.19.1"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.19.1.tgz#bc37c2ef2f48f28c6af4c7292be9dca1b63deace"
integrity sha512-2wJiGffPWK0KggBjVwnTaAk+Z3MSxKInHmdzPTrBh1mAarexsa93Kw+WMX88+XjN+TtYgAiLe9xeTqcO5FfJTw==
dependencies:
shell-quote "^1.6.1"
ws "^7"
react-is@^16.7.0, react-is@^16.8.1:
react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@ -4386,11 +4453,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-lifecycles-compat@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-2.0.0.tgz#71d9c4cde47114c4102454f76da055c2bc48c948"
integrity sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==
react-native-codegen@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.7.tgz#86651c5c5fec67a8077ef7f4e36f7ed459043e14"
@ -4411,26 +4473,15 @@ react-native-gesture-handler@^1.10.3:
invariant "^2.2.4"
prop-types "^15.7.2"
react-native-navigation@^7.21.0:
version "7.21.0"
resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-7.21.0.tgz#dfa3f68c5867b296016713a7c5652fc49f399efa"
integrity sha512-z7TjD8l+fa3Pk7S55rGnifTSM4VUDhCsBa61kP7dqmkiRf9oTEBVWe8E9IUGTc9PFD7Y6a6Me9r+TdlXNsnuvQ==
dependencies:
hoist-non-react-statics "3.x.x"
lodash "4.17.x"
prop-types "15.x.x"
react-lifecycles-compat "2.0.0"
tslib "1.9.3"
react-native-pressable-opacity@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/react-native-pressable-opacity/-/react-native-pressable-opacity-1.0.4.tgz#391f33fdc25cb84551f2743a25eced892b9f30f7"
integrity sha512-DBIg7UoRiuBYiFEvx+XNMqH0OEx64WrSksXhT6Kq9XuyyKsThMNDqZ9G5QV7vfu7dU2/IctwIz5c0Xwkp4K3tA==
react-native-reanimated@^2.3.0-beta.1:
version "2.3.0-beta.1"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.3.0-beta.1.tgz#29deb1fe66db02b431f85b4afd5ba77d689554e6"
integrity sha512-scO945EqhQxbNox4GxY+NX0fsPNG7YheYnJTVs/u7XJ0+NuMeuSlUt9Yi89Q161hs2RpY7xAvYpQSU7PQXCeow==
react-native-reanimated@^2.3.0-beta.2:
version "2.3.0-beta.2"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.3.0-beta.2.tgz#6c62422fe25d76336464b990ea2e648f2241494c"
integrity sha512-J0cBgOh0O05fNtGgHgrWfKtsYtzcAIhdNju6GVbRo6mVPp1jnuNmNQ2Dd7yXAF54+waj4w4h4pfP9D5J6EixkQ==
dependencies:
"@babel/plugin-transform-object-assign" "^7.10.4"
invariant "^2.2.4"
@ -4439,6 +4490,11 @@ react-native-reanimated@^2.3.0-beta.1:
react-native-screens "^3.4.0"
string-hash-64 "^1.0.3"
react-native-safe-area-context@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-3.3.2.tgz#9549a2ce580f2374edb05e49d661258d1b8bcaed"
integrity sha512-yOwiiPJ1rk+/nfK13eafbpW6sKW0jOnsRem2C1LPJjM3tfTof6hlvV5eWHATye3XOpu2cJ7N+HdkUvUDGwFD2Q==
react-native-screens@^3.4.0, react-native-screens@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.8.0.tgz#4ec84c55a7b4a4aa9405c812978ca2ba5c0242a4"
@ -4474,10 +4530,10 @@ react-native-video@^5.1.1:
prop-types "^15.7.2"
shaka-player "^2.5.9"
react-native@^0.65.1:
version "0.65.1"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.65.1.tgz#bd8cd313e0eb8ddcf08e61e3f8b54b7fc31a418c"
integrity sha512-0UOVSnlssweQZjuaUtzViCifE/4tXm8oRbxwakopc8GavPu9vLulde145GOw6QVYiOy4iL50f+2XXRdX9NmMeQ==
react-native@^0.66.0:
version "0.66.0"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.66.0.tgz#99bdd83a9a612a71b94242767989d666d445b007"
integrity sha512-m26TKwzsfHVdZ1hDG+7mZ4M4ftxFFZrhtiT0OXuwfBzmNtB3xhsJtYszPeizw33c9YNp8rvehKT3c4ldDCW6kA==
dependencies:
"@jest/create-cache-key-function" "^27.0.1"
"@react-native-community/cli" "^6.0.0"
@ -4485,12 +4541,12 @@ react-native@^0.65.1:
"@react-native-community/cli-platform-ios" "^6.0.0"
"@react-native/assets" "1.0.0"
"@react-native/normalize-color" "1.0.0"
"@react-native/polyfills" "1.0.0"
"@react-native/polyfills" "2.0.0"
abort-controller "^3.0.0"
anser "^1.4.9"
base64-js "^1.1.2"
event-target-shim "^5.0.1"
hermes-engine "~0.8.1"
hermes-engine "~0.9.0"
invariant "^2.2.4"
jsc-android "^250230.2.1"
metro-babel-register "0.66.2"
@ -4501,7 +4557,8 @@ react-native@^0.65.1:
pretty-format "^26.5.2"
promise "^8.0.3"
prop-types "^15.7.2"
react-devtools-core "^4.6.0"
react-devtools-core "^4.13.0"
react-native-codegen "^0.0.7"
react-refresh "^0.4.0"
regenerator-runtime "^0.13.2"
scheduler "^0.20.2"
@ -5031,6 +5088,11 @@ source-map@^0.7.3:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
split-on-first@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
@ -5073,6 +5135,11 @@ stream-buffers@~2.2.0:
resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4"
integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=
strict-uri-encode@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
string-hash-64@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string-hash-64/-/string-hash-64-1.0.3.tgz#0deb56df58678640db5c479ccbbb597aaa0de322"
@ -5259,11 +5326,6 @@ toidentifier@1.0.0:
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
tslib@1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"

View File

@ -76,14 +76,14 @@
"@react-native-community/eslint-plugin": "^1.1.0",
"@release-it/conventional-changelog": "^3.3.0",
"@types/react": "^17.0.21",
"@types/react-native": "^0.65.0",
"@types/react-native": "^0.65.5",
"eslint": "^7.32.0",
"pod-install": "^0.1.27",
"prettier": "^2.4.1",
"react": "^17.0.2",
"react-native": "^0.65.1",
"react-native": "^0.66.0",
"react-native-builder-bob": "^0.18.1",
"react-native-reanimated": "^2.3.0-beta.1",
"react-native-reanimated": "^2.3.0-beta.2",
"release-it": "^14.11.5",
"typescript": "^4.4.3"
},

176
yarn.lock
View File

@ -33,7 +33,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
"@babel/core@^7.12.10", "@babel/core@^7.14.0":
"@babel/core@^7.1.6", "@babel/core@^7.12.10", "@babel/core@^7.14.0":
version "7.15.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
@ -270,7 +270,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.14.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.0":
"@babel/parser@^7.1.6", "@babel/parser@^7.14.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.0":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
@ -293,7 +293,7 @@
"@babel/helper-remap-async-to-generator" "^7.15.4"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.14.5":
"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e"
integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==
@ -350,7 +350,7 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
@ -385,7 +385,7 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.14.5":
"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.1.0", "@babel/plugin-proposal-optional-chaining@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
@ -672,7 +672,7 @@
"@babel/helper-plugin-utils" "^7.14.5"
babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.15.4":
"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1"
integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==
@ -956,7 +956,7 @@
core-js-compat "^3.16.0"
semver "^6.3.0"
"@babel/preset-flow@^7.12.1":
"@babel/preset-flow@^7.0.0", "@babel/preset-flow@^7.12.1":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.14.5.tgz#a1810b0780c8b48ab0bece8e7ab8d0d37712751c"
integrity sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg==
@ -988,7 +988,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.14.5"
"@babel/plugin-transform-react-pure-annotations" "^7.14.5"
"@babel/preset-typescript@^7.12.7":
"@babel/preset-typescript@^7.1.0", "@babel/preset-typescript@^7.12.7":
version "7.15.0"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945"
integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==
@ -1471,10 +1471,10 @@
resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567"
integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==
"@react-native/polyfills@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-1.0.0.tgz#05bb0031533598f9458cf65a502b8df0eecae780"
integrity sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w==
"@react-native/polyfills@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa"
integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==
"@release-it/conventional-changelog@^3.3.0":
version "3.3.0"
@ -1605,10 +1605,10 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
"@types/react-native@^0.65.0":
version "0.65.1"
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.65.1.tgz#7342158e10ea5088c225bb669dd4ef15aad0a2f7"
integrity sha512-pyRmTnvjYORIXuL8+ZhoI8gqamTE/8Lo9bU/1Ife3VOTgeFzY9rHnx3Tna7OOixBW5Exh2PcHSkJXma4FENC0g==
"@types/react-native@^0.65.5":
version "0.65.5"
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.65.5.tgz#e5e473be8c7ed784419554f25cc8850b9c3ce68d"
integrity sha512-lc2JVmqVIkFmEtUHX8jCkuepqRSzlhRPBIlVFVc0hgfoUxvntrORhmK7LCnAbHfmpUqVVGhMjax27CCTACQ2Kw==
dependencies:
"@types/react" "*"
@ -1963,6 +1963,13 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
ast-types@0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd"
integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==
dependencies:
tslib "^2.0.1"
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
@ -2007,6 +2014,11 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
babel-core@^7.0.0-bridge.0:
version "7.0.0-bridge.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
babel-eslint@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
@ -2494,6 +2506,11 @@ colorette@^1.0.7:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
colors@^1.1.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@ -3315,7 +3332,7 @@ espree@^7.3.0, espree@^7.3.1:
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
esprima@^4.0.0:
esprima@^4.0.0, esprima@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@ -3609,6 +3626,16 @@ flatted@^3.1.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
flow-parser@0.*:
version "0.161.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.161.0.tgz#9b8d892deaca8c180ffaf332c1d1eef44902397c"
integrity sha512-QRGREwIVspAeffxidkelrU6yPnEF/US4iYoGuf73+y4ZEXgCJUFje4jYfgE4g59TbSLHntdWfM69wiN9Y9swKw==
flow-parser@^0.121.0:
version "0.121.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f"
integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@ -4001,10 +4028,10 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
hermes-engine@~0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.8.1.tgz#b6d0d70508ac5add2d198304502fb968cdecb8b2"
integrity sha512-as9Iccj/qrqqtDmfYUHbOIjt5xsQbUB6pjNIW3i1+RVr+pCAdz5S8/Jry778mz3rJWplYzHWdR1u1xQSYfBRYw==
hermes-engine@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.9.0.tgz#84d9cfe84e8f6b1b2020d6e71b350cec84ed982f"
integrity sha512-r7U+Y4P2Qg/igFVZN+DpT7JFfXUn1MM4dFne8aW+cCrF6RRymof+VqrUHs1kl07j8h8V2CNesU19RKgWbr3qPw==
hermes-parser@0.4.7:
version "0.4.7"
@ -4671,6 +4698,31 @@ jsc-android@^250230.2.1:
resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83"
integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==
jscodeshift@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.11.0.tgz#4f95039408f3f06b0e39bb4d53bc3139f5330e2f"
integrity sha512-SdRK2C7jjs4k/kT2mwtO07KJN9RnjxtKn03d9JVj6c3j9WwaLcFYsICYDnLAzY0hp+wG2nxl+Cm2jWLiNVYb8g==
dependencies:
"@babel/core" "^7.1.6"
"@babel/parser" "^7.1.6"
"@babel/plugin-proposal-class-properties" "^7.1.0"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.1.0"
"@babel/plugin-proposal-optional-chaining" "^7.1.0"
"@babel/plugin-transform-modules-commonjs" "^7.1.0"
"@babel/preset-flow" "^7.0.0"
"@babel/preset-typescript" "^7.1.0"
"@babel/register" "^7.0.0"
babel-core "^7.0.0-bridge.0"
colors "^1.1.2"
flow-parser "0.*"
graceful-fs "^4.2.4"
micromatch "^3.1.10"
neo-async "^2.5.0"
node-dir "^0.1.17"
recast "^0.20.3"
temp "^0.8.1"
write-file-atomic "^2.3.0"
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@ -5321,7 +5373,7 @@ metro@0.66.2, metro@^0.66.1:
ws "^1.1.5"
yargs "^15.3.1"
micromatch@^3.1.4:
micromatch@^3.1.10, micromatch@^3.1.4:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@ -5400,7 +5452,7 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
minimatch@^3.0.4:
minimatch@^3.0.2, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@ -5498,7 +5550,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
neo-async@^2.6.0:
neo-async@^2.5.0, neo-async@^2.6.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@ -5520,6 +5572,13 @@ nocache@^2.1.0:
resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f"
integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==
node-dir@^0.1.17:
version "0.1.17"
resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=
dependencies:
minimatch "^3.0.2"
node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.4"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.4.tgz#7f1d13b8f9ff0c1a994dc6f73c69f7d652c7ace2"
@ -6193,10 +6252,10 @@ rc@^1.2.8:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-devtools-core@^4.6.0:
version "4.18.0"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.18.0.tgz#06b2375dcea7858c957d1779cc2339d2a0af200a"
integrity sha512-Kg/LhDkdt9J0ned1D1RfeuSdX4cKW83/valJLYswGdsYc0g2msmD0kfYozsaRacjDoZwcKlxGOES1wrkET5O6Q==
react-devtools-core@^4.13.0:
version "4.19.1"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.19.1.tgz#bc37c2ef2f48f28c6af4c7292be9dca1b63deace"
integrity sha512-2wJiGffPWK0KggBjVwnTaAk+Z3MSxKInHmdzPTrBh1mAarexsa93Kw+WMX88+XjN+TtYgAiLe9xeTqcO5FfJTw==
dependencies:
shell-quote "^1.6.1"
ws "^7"
@ -6238,10 +6297,19 @@ react-native-builder-bob@^0.18.1:
optionalDependencies:
jetifier "^1.6.6"
react-native-reanimated@^2.3.0-beta.1:
version "2.3.0-beta.1"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.3.0-beta.1.tgz#29deb1fe66db02b431f85b4afd5ba77d689554e6"
integrity sha512-scO945EqhQxbNox4GxY+NX0fsPNG7YheYnJTVs/u7XJ0+NuMeuSlUt9Yi89Q161hs2RpY7xAvYpQSU7PQXCeow==
react-native-codegen@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.7.tgz#86651c5c5fec67a8077ef7f4e36f7ed459043e14"
integrity sha512-dwNgR8zJ3ALr480QnAmpTiqvFo+rDtq6V5oCggKhYFlRjzOmVSFn3YD41u8ltvKS5G2nQ8gCs2vReFFnRGLYng==
dependencies:
flow-parser "^0.121.0"
jscodeshift "^0.11.0"
nullthrows "^1.1.1"
react-native-reanimated@^2.3.0-beta.2:
version "2.3.0-beta.2"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.3.0-beta.2.tgz#6c62422fe25d76336464b990ea2e648f2241494c"
integrity sha512-J0cBgOh0O05fNtGgHgrWfKtsYtzcAIhdNju6GVbRo6mVPp1jnuNmNQ2Dd7yXAF54+waj4w4h4pfP9D5J6EixkQ==
dependencies:
"@babel/plugin-transform-object-assign" "^7.10.4"
invariant "^2.2.4"
@ -6257,10 +6325,10 @@ react-native-screens@^3.4.0:
dependencies:
warn-once "^0.1.0"
react-native@^0.65.1:
version "0.65.1"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.65.1.tgz#bd8cd313e0eb8ddcf08e61e3f8b54b7fc31a418c"
integrity sha512-0UOVSnlssweQZjuaUtzViCifE/4tXm8oRbxwakopc8GavPu9vLulde145GOw6QVYiOy4iL50f+2XXRdX9NmMeQ==
react-native@^0.66.0:
version "0.66.0"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.66.0.tgz#99bdd83a9a612a71b94242767989d666d445b007"
integrity sha512-m26TKwzsfHVdZ1hDG+7mZ4M4ftxFFZrhtiT0OXuwfBzmNtB3xhsJtYszPeizw33c9YNp8rvehKT3c4ldDCW6kA==
dependencies:
"@jest/create-cache-key-function" "^27.0.1"
"@react-native-community/cli" "^6.0.0"
@ -6268,12 +6336,12 @@ react-native@^0.65.1:
"@react-native-community/cli-platform-ios" "^6.0.0"
"@react-native/assets" "1.0.0"
"@react-native/normalize-color" "1.0.0"
"@react-native/polyfills" "1.0.0"
"@react-native/polyfills" "2.0.0"
abort-controller "^3.0.0"
anser "^1.4.9"
base64-js "^1.1.2"
event-target-shim "^5.0.1"
hermes-engine "~0.8.1"
hermes-engine "~0.9.0"
invariant "^2.2.4"
jsc-android "^250230.2.1"
metro-babel-register "0.66.2"
@ -6284,7 +6352,8 @@ react-native@^0.65.1:
pretty-format "^26.5.2"
promise "^8.0.3"
prop-types "^15.7.2"
react-devtools-core "^4.6.0"
react-devtools-core "^4.13.0"
react-native-codegen "^0.0.7"
react-refresh "^0.4.0"
regenerator-runtime "^0.13.2"
scheduler "^0.20.2"
@ -6364,6 +6433,16 @@ readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
recast@^0.20.3:
version "0.20.5"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae"
integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==
dependencies:
ast-types "0.14.2"
esprima "~4.0.0"
source-map "~0.6.1"
tslib "^2.0.1"
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@ -6632,6 +6711,13 @@ rimraf@~2.2.6:
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
dependencies:
glob "^7.1.3"
rsvp@^4.8.4:
version "4.8.5"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
@ -7224,6 +7310,13 @@ temp@0.8.3:
os-tmpdir "^1.0.0"
rimraf "~2.2.6"
temp@^0.8.1:
version "0.8.4"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2"
integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==
dependencies:
rimraf "~2.6.2"
text-extensions@^1.0.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
@ -7333,6 +7426,11 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tslib@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"