From 916278d3ea4b86f7d48f76fb2369514adf87807b Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Tue, 5 Oct 2021 12:22:14 +0200 Subject: [PATCH] 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" --- .gitignore | 1 + android/gradle.properties | 2 +- example/.eslintrc.js | 2 +- example/android/app/build.gradle | 10 + .../mrousavy/camera/example/MainActivity.java | 30 +- .../camera/example/MainApplication.java | 20 +- example/android/build.gradle | 2 +- example/index.js | 80 +-- example/ios/Podfile | 1 + example/ios/Podfile.lock | 527 +++++++++--------- example/ios/VisionCameraExample/AppDelegate.m | 24 +- example/ios/VisionCameraExample/Info.plist | 35 +- example/package.json | 11 +- example/src/App.tsx | 51 ++ example/src/CameraPage.tsx | 41 +- example/src/MediaPage.tsx | 39 +- .../src/{Splash.tsx => PermissionsPage.tsx} | 45 +- example/src/Routes.ts | 8 + example/src/hooks/useIsScreenFocused.ts | 39 -- example/tsconfig.json | 3 +- example/yarn.lock | 160 ++++-- package.json | 6 +- yarn.lock | 176 ++++-- 23 files changed, 714 insertions(+), 599 deletions(-) create mode 100644 example/src/App.tsx rename example/src/{Splash.tsx => PermissionsPage.tsx} (70%) create mode 100644 example/src/Routes.ts delete mode 100644 example/src/hooks/useIsScreenFocused.ts diff --git a/.gitignore b/.gitignore index f53c94d..86e5443 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ project.xcworkspace .gradle local.properties android.iml +*.hprof # Cocoapods # diff --git a/android/gradle.properties b/android/gradle.properties index 767aa6c..676eb00 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -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 diff --git a/example/.eslintrc.js b/example/.eslintrc.js index d2b02b6..3a5e263 100644 --- a/example/.eslintrc.js +++ b/example/.eslintrc.js @@ -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'], }; diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index f1e2c69..0c019d5 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -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. diff --git a/example/android/app/src/main/java/com/mrousavy/camera/example/MainActivity.java b/example/android/app/src/main/java/com/mrousavy/camera/example/MainActivity.java index 3260bf7..eec627c 100644 --- a/example/android/app/src/main/java/com/mrousavy/camera/example/MainActivity.java +++ b/example/android/app/src/main/java/com/mrousavy/camera/example/MainActivity.java @@ -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); + } + }; + } } diff --git a/example/android/app/src/main/java/com/mrousavy/camera/example/MainApplication.java b/example/android/app/src/main/java/com/mrousavy/camera/example/MainApplication.java index 409a3e5..d6da8ab 100644 --- a/example/android/app/src/main/java/com/mrousavy/camera/example/MainApplication.java +++ b/example/android/app/src/main/java/com/mrousavy/camera/example/MainApplication.java @@ -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 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()); } } diff --git a/example/android/build.gradle b/example/android/build.gradle index e50b265..deeb67d 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -7,7 +7,7 @@ buildscript { minSdkVersion = 21 compileSdkVersion = 30 targetSdkVersion = 30 - ndkVersion = "20.1.5948944" + ndkVersion = "21.4.7075529" } repositories { google() diff --git a/example/index.js b/example/index.js index eb6dfce..93ce409 100644 --- a/example/index.js +++ b/example/index.js @@ -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); diff --git a/example/ios/Podfile b/example/ios/Podfile index d09e605..9e8e1f1 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -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 diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index c451bf7..7d70676 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -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 diff --git a/example/ios/VisionCameraExample/AppDelegate.m b/example/ios/VisionCameraExample/AppDelegate.m index ef029e8..6b36eaf 100644 --- a/example/ios/VisionCameraExample/AppDelegate.m +++ b/example/ios/VisionCameraExample/AppDelegate.m @@ -6,22 +6,32 @@ */ #import "AppDelegate.h" -#import #import #import +#import @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> *)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 diff --git a/example/ios/VisionCameraExample/Info.plist b/example/ios/VisionCameraExample/Info.plist index c891d75..3f2b2ea 100644 --- a/example/ios/VisionCameraExample/Info.plist +++ b/example/ios/VisionCameraExample/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - Vision Camera + VisionCameraExample CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -35,10 +35,22 @@ - NSCameraUsageDescription - VisionCamera needs access to your Camera for very obvious reasons. NSLocationWhenInUseUsageDescription + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UIViewControllerBasedStatusBarAppearance + + NSCameraUsageDescription + VisionCamera needs access to your Camera for very obvious reasons. NSMicrophoneUsageDescription VisionCamera needs access to your Microphone to record videos with audio. NSPhotoLibraryUsageDescription @@ -48,22 +60,5 @@ Ionicons.ttf MaterialCommunityIcons.ttf - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UIStatusBarStyle - UIStatusBarStyleDarkContent - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - diff --git a/example/package.json b/example/package.json index 9a67b5e..5ac3e24 100644 --- a/example/package.json +++ b/example/package.json @@ -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", diff --git a/example/src/App.tsx b/example/src/App.tsx new file mode 100644 index 0000000..7c09ca5 --- /dev/null +++ b/example/src/App.tsx @@ -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(); + +export function App(): React.ReactElement | null { + const [cameraPermission, setCameraPermission] = useState(); + const [microphonePermission, setMicrophonePermission] = useState(); + + 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 ( + + + + + + + + ); +} diff --git a/example/src/CameraPage.tsx b/example/src/CameraPage.tsx index 5f3196a..532c404 100644 --- a/example/src/CameraPage.tsx +++ b/example/src/CameraPage.tsx @@ -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; +export function CameraPage({ navigation }: Props): React.ReactElement { const camera = useRef(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') => { - console.log(`Media captured! ${JSON.stringify(media)}`); - await Navigation.showModal({ - component: { - name: 'MediaPage', - passProps: { - type: type, - path: media.path, - }, - }, - }); - }, []); + const onMediaCaptured = useCallback( + (media: PhotoFile | VideoFile, type: 'photo' | 'video') => { + console.log(`Media captured! ${JSON.stringify(media)}`); + 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 }) => { ); -}; +} const styles = StyleSheet.create({ container: { diff --git a/example/src/MediaPage.tsx b/example/src/MediaPage.tsx index 6cb7fb0..7a7a6ed 100644 --- a/example/src/MediaPage.tsx +++ b/example/src/MediaPage.tsx @@ -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 => { if (Platform.OS !== 'android') return true; @@ -34,16 +30,18 @@ const requestSavePermission = async (): Promise => { const isVideoOnLoadEvent = (event: OnLoadData | NativeSyntheticEvent): event is OnLoadData => 'duration' in event && 'naturalSize' in event; -export const MediaPage: NavigationFunctionComponent = ({ componentId, type, path }) => { +type Props = NativeStackScreenProps; +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) => { if (isVideoOnLoadEvent(event)) { @@ -125,24 +123,7 @@ export const MediaPage: NavigationFunctionComponent = ({ componentId ); -}; - -MediaPage.options = { - modalPresentationStyle: OptionsModalPresentationStyle.overCurrentContext, - animations: { - showModal: { - waitForRender: true, - enabled: false, - }, - dismissModal: { - enabled: false, - }, - }, - layout: { - backgroundColor: 'transparent', - componentBackgroundColor: 'transparent', - }, -}; +} const styles = StyleSheet.create({ container: { diff --git a/example/src/Splash.tsx b/example/src/PermissionsPage.tsx similarity index 70% rename from example/src/Splash.tsx rename to example/src/PermissionsPage.tsx index 604e5c9..78ee320 100644 --- a/example/src/Splash.tsx +++ b/example/src/PermissionsPage.tsx @@ -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; +export function PermissionsPage({ navigation }: Props): React.ReactElement { const [cameraPermissionStatus, setCameraPermissionStatus] = useState('not-determined'); const [microphonePermissionStatus, setMicrophonePermissionStatus] = useState('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 => { - 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 ( @@ -88,7 +61,7 @@ export const Splash: NavigationFunctionComponent = ({ componentId }) => { ); -}; +} const styles = StyleSheet.create({ welcome: { diff --git a/example/src/Routes.ts b/example/src/Routes.ts new file mode 100644 index 0000000..da1346c --- /dev/null +++ b/example/src/Routes.ts @@ -0,0 +1,8 @@ +export type Routes = { + PermissionsPage: undefined; + CameraPage: undefined; + MediaPage: { + path: string; + type: 'video' | 'photo'; + }; +}; diff --git a/example/src/hooks/useIsScreenFocused.ts b/example/src/hooks/useIsScreenFocused.ts deleted file mode 100644 index dff72b7..0000000 --- a/example/src/hooks/useIsScreenFocused.ts +++ /dev/null @@ -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(['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; -}; diff --git a/example/tsconfig.json b/example/tsconfig.json index 2a6716c..30ffd15 100644 --- a/example/tsconfig.json +++ b/example/tsconfig.json @@ -7,7 +7,8 @@ }, }, "include": [ - "src" + "src", + "index.js" ], "exclude": [ "node_modules" diff --git a/example/yarn.lock b/example/yarn.lock index 7719cf8..c068908 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -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" diff --git a/package.json b/package.json index f5927a8..7350aee 100644 --- a/package.json +++ b/package.json @@ -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" }, diff --git a/yarn.lock b/yarn.lock index e4f6c5a..716d71a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"