From d58f61ae2d62ce19e3b9072bff638cc3db9b526e Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Fri, 7 Oct 2022 22:25:43 +0800 Subject: [PATCH] [android][ios] Upgrade @react-native-community/slider to 4.2.4 (#19424) # Why close ENG-6538 the latest slider version is v4.3.2, but it is incompatible with reanimated layout animation setup. mainly because it uses the [dispatchModern](https://github.com/callstack/react-native-slider/blob/7afcaeb754aad6e362cbf43da2d5ff32a1feb1f3/package/android/src/main/java/com/reactnativecommunity/slider/ReactSliderEvent.java#L50-L53). as we doesn't support fabric on android expo go, it should be fine to not upgrade slider 4.3 which is mainly for fabric support. # How - update to new style vendoring - `et uvm -m @react-native-community/slider -c v4.2.4 -p android` - `et uvm -m @react-native-community/slider -c v4.2.4 -p ios` # Test Plan - android unversioned expo go + NCL slider - ios unversioned expo go + NCL slider --- CHANGELOG.md | 1 + .../host/exp/exponent/ExponentPackage.kt | 2 +- .../slider/android/build.gradle | 40 +++++++++++++++++++ .../android/src/main/AndroidManifest.xml | 3 ++ .../slider/ReactSlider.java | 6 +-- .../slider/ReactSliderEvent.java | 2 +- .../slider/ReactSliderManager.java | 8 ++-- .../slider/ReactSliderPackage.java | 2 +- .../slider/ReactSlidingCompleteEvent.java | 2 +- .../slider/ReactSlidingStartEvent.java | 2 +- apps/bare-expo/package.json | 2 +- apps/native-component-list/package.json | 2 +- ios/Exponent.xcodeproj/project.pbxproj | 24 ----------- ios/Podfile.lock | 6 +++ .../slider/ios}/RNCSlider.h | 2 + .../slider/ios}/RNCSlider.m | 27 +++++++++++++ .../slider/ios}/RNCSliderManager.h | 0 .../slider/ios}/RNCSliderManager.m | 38 +----------------- .../slider/react-native-slider.podspec.json | 19 +++++++++ packages/expo/bundledNativeModules.json | 2 +- tools/src/commands/UpdateVendoredModule.ts | 9 +++-- tools/src/vendoring/config/expoGoConfig.ts | 7 +++- tools/src/vendoring/legacy.ts | 15 ------- tools/src/vendoring/types.ts | 3 ++ yarn.lock | 8 ++-- 25 files changed, 133 insertions(+), 99 deletions(-) create mode 100644 android/vendored/unversioned/@react-native-community/slider/android/build.gradle create mode 100644 android/vendored/unversioned/@react-native-community/slider/android/src/main/AndroidManifest.xml rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSlider.java (98%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSliderEvent.java (95%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSliderManager.java (97%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSliderPackage.java (93%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSlidingCompleteEvent.java (95%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity}/slider/ReactSlidingStartEvent.java (95%) rename ios/{Exponent/Versioned/Core/Api/Components/Slider => vendored/unversioned/@react-native-community/slider/ios}/RNCSlider.h (96%) rename ios/{Exponent/Versioned/Core/Api/Components/Slider => vendored/unversioned/@react-native-community/slider/ios}/RNCSlider.m (82%) rename ios/{Exponent/Versioned/Core/Api/Components/Slider => vendored/unversioned/@react-native-community/slider/ios}/RNCSliderManager.h (100%) rename ios/{Exponent/Versioned/Core/Api/Components/Slider => vendored/unversioned/@react-native-community/slider/ios}/RNCSliderManager.m (78%) create mode 100644 ios/vendored/unversioned/@react-native-community/slider/react-native-slider.podspec.json diff --git a/CHANGELOG.md b/CHANGELOG.md index f1e190c403dd1..31a4d7a19cc6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Package-specific changes not released in any SDK will be added here just before - Updated `@react-native-community/datetimepicker` from `6.2.0` to `6.5.0`. ([#19419](https://github.com/expo/expo/pull/19419) by [@byCedric](https://github.com/byCedric)) - Updated `react-native-maps` from `0.31.1` to `1.3.2`. ([#19414](https://github.com/expo/expo/pull/19414) by [@aleqsio](https://github.com/aleqsio)) - Updated `lottie-react-native` from `5.1.3` to `5.1.4`. ([#19433](https://github.com/expo/expo/pull/19433) by [@kudo](https://github.com/kudo)) +- Updated `@react-native-community/slider` from `4.2.3` to `4.2.4`. ([#19424](https://github.com/expo/expo/pull/19424)) by [@kudo](https://github.com/kudo)) ### 🛠 Breaking changes diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt index 6f5b87a638f12..ef57f5e1fb32a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt @@ -7,6 +7,7 @@ import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager +import com.reactnativecommunity.slider.ReactSliderPackage import com.shopify.reactnative.flash_list.ReactNativeFlashListPackage import com.shopify.reactnative.skia.RNSkiaPackage import com.swmansion.rnscreens.RNScreensPackage @@ -36,7 +37,6 @@ import versioned.host.exp.exponent.modules.api.components.picker.RNCPickerPackag import versioned.host.exp.exponent.modules.api.components.reactnativestripesdk.StripeSdkPackage import versioned.host.exp.exponent.modules.api.components.sharedelement.RNSharedElementModule import versioned.host.exp.exponent.modules.api.components.sharedelement.RNSharedElementPackage -import versioned.host.exp.exponent.modules.api.components.slider.ReactSliderPackage import versioned.host.exp.exponent.modules.api.components.svg.SvgPackage import versioned.host.exp.exponent.modules.api.components.pagerview.PagerViewPackage import versioned.host.exp.exponent.modules.api.components.webview.RNCWebViewModule diff --git a/android/vendored/unversioned/@react-native-community/slider/android/build.gradle b/android/vendored/unversioned/@react-native-community/slider/android/build.gradle new file mode 100644 index 0000000000000..f793dde0e88a4 --- /dev/null +++ b/android/vendored/unversioned/@react-native-community/slider/android/build.gradle @@ -0,0 +1,40 @@ +buildscript { + repositories { + mavenCentral() + google() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + } +} + +def getExtOrDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['ReactNativeSlider_' + name] +} + +def getExtOrIntegerDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['ReactNativeSlider_' + name]).toInteger() +} + +apply plugin: 'com.android.library' + +android { + compileSdkVersion getExtOrIntegerDefault('compileSdkVersion') + buildToolsVersion getExtOrDefault('buildToolsVersion') + + defaultConfig { + minSdkVersion getExtOrIntegerDefault('minSdkVersion') + targetSdkVersion getExtOrIntegerDefault('targetSdkVersion') + } +} + +repositories { + google() + mavenCentral() +} + +dependencies { + //noinspection GradleDynamicVersion + api 'com.facebook.react:react-native:+' +} diff --git a/android/vendored/unversioned/@react-native-community/slider/android/src/main/AndroidManifest.xml b/android/vendored/unversioned/@react-native-community/slider/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000000000..f8c7bb80a423b --- /dev/null +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlider.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlider.java similarity index 98% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlider.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlider.java index a11bd006f1f72..f0c476e39764b 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlider.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlider.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import android.content.Context; import android.graphics.Bitmap; @@ -66,8 +66,8 @@ public class ReactSlider extends AppCompatSeekBar { private List mAccessibilityIncrements; - public ReactSlider(Context context, @Nullable AttributeSet attrs, int style) { - super(context, attrs, style); + public ReactSlider(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance(); super.setLayoutDirection(sharedI18nUtilInstance.isRTL(context) ? LAYOUT_DIRECTION_RTL : LAYOUT_DIRECTION_LTR); disableStateListAnimatorIfNeeded(); diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderEvent.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderEvent.java similarity index 95% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderEvent.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderEvent.java index 55052d6be73ca..de691b0f527b5 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderEvent.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderEvent.java @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableMap; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderManager.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderManager.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java index dd47c658ae91d..65f7849f03d28 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderManager.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import android.graphics.PorterDuffColorFilter; import android.os.Build; @@ -38,8 +38,6 @@ */ public class ReactSliderManager extends SimpleViewManager { - private static final int STYLE = android.R.attr.seekBarStyle; - public static final String REACT_CLASS = "RNCSlider"; static class ReactSliderShadowNode extends LayoutShadowNode implements @@ -65,7 +63,7 @@ public long measure( float height, YogaMeasureMode heightMode) { if (!mMeasured) { - SeekBar reactSlider = new ReactSlider(getThemedContext(), null, STYLE); + SeekBar reactSlider = new ReactSlider(getThemedContext(), null); final int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); reactSlider.measure(spec, spec); mWidth = reactSlider.getMeasuredWidth(); @@ -131,7 +129,7 @@ public Class getShadowNodeClass() { @Override protected ReactSlider createViewInstance(ThemedReactContext context) { - ReactSlider slider = new ReactSlider(context, null, STYLE); + ReactSlider slider = new ReactSlider(context, null); if (Build.VERSION.SDK_INT >= 21) { /** diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderPackage.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderPackage.java similarity index 93% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderPackage.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderPackage.java index fd821664308d4..38a3f1f7f4e5c 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSliderPackage.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSliderPackage.java @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import java.util.Arrays; import java.util.Collections; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingCompleteEvent.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingCompleteEvent.java similarity index 95% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingCompleteEvent.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingCompleteEvent.java index 0e5c5e2c54616..d597156b0923b 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingCompleteEvent.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingCompleteEvent.java @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableMap; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingStartEvent.java b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingStartEvent.java similarity index 95% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingStartEvent.java rename to android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingStartEvent.java index 7e333c65d52b7..03f32aecc2c68 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/slider/ReactSlidingStartEvent.java +++ b/android/vendored/unversioned/@react-native-community/slider/android/src/main/java/com/reactnativecommunity/slider/ReactSlidingStartEvent.java @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -package versioned.host.exp.exponent.modules.api.components.slider; +package com.reactnativecommunity.slider; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableMap; diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index 91b659b84156a..bd7460c604130 100644 --- a/apps/bare-expo/package.json +++ b/apps/bare-expo/package.json @@ -94,7 +94,7 @@ "@react-native-async-storage/async-storage": "~1.17.3", "@react-native-community/datetimepicker": "6.5.0", "@react-native-community/netinfo": "9.3.3", - "@react-native-community/slider": "4.2.3", + "@react-native-community/slider": "4.2.4", "@react-native-community/viewpager": "5.0.11", "@react-native-masked-view/masked-view": "0.2.6", "@react-native-picker/picker": "2.4.6", diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index bda9175e4f0c8..7fbd06a0c9d97 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -44,7 +44,7 @@ "@react-native-async-storage/async-storage": "~1.17.3", "@react-native-community/datetimepicker": "6.5.0", "@react-native-community/netinfo": "9.3.3", - "@react-native-community/slider": "4.2.3", + "@react-native-community/slider": "4.2.4", "@react-native-masked-view/masked-view": "0.2.6", "@react-native-picker/picker": "2.4.6", "@react-native-segmented-control/segmented-control": "2.4.0", diff --git a/ios/Exponent.xcodeproj/project.pbxproj b/ios/Exponent.xcodeproj/project.pbxproj index 562b772311371..75b4e4b048847 100644 --- a/ios/Exponent.xcodeproj/project.pbxproj +++ b/ios/Exponent.xcodeproj/project.pbxproj @@ -196,7 +196,6 @@ A12E8B64266E8E51003ADA8F /* EXManagedAppSplashScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A12E8B63266E8E51003ADA8F /* EXManagedAppSplashScreenViewController.m */; }; A1C33FE42667F6E70091644A /* EXSplashScreenHUDButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A1C33FDB2667F6E70091644A /* EXSplashScreenHUDButton.m */; }; A1C33FE52667F6E70091644A /* EXSplashScreenHUDButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A1C33FDB2667F6E70091644A /* EXSplashScreenHUDButton.m */; }; - ABC18CFCC0224BF0B95B691A /* RNCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = EC7E234A4A564DFE84B2B1D0 /* RNCSlider.m */; settings = {COMPILER_FLAGS = "-w"; }; }; B0D21CC221E6488D8EDA79EA /* RNSharedElementTransitionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E9033E268A74098A882CCEB /* RNSharedElementTransitionManager.m */; settings = {COMPILER_FLAGS = "-w"; }; }; B21115F8246C1B47005BA616 /* EXScopedNotificationBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = B21115F7246C1B47005BA616 /* EXScopedNotificationBuilder.m */; }; B22BB0342366F3F400EE04EC /* EXScopedErrorRecoveryModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B22BB0322366F3F400EE04EC /* EXScopedErrorRecoveryModule.m */; }; @@ -289,7 +288,6 @@ BBD03196200011C9009F0434 /* RNAWSCognito.m in Sources */ = {isa = PBXBuildFile; fileRef = BBD03192200011C9009F0434 /* RNAWSCognito.m */; }; BBE4333C268BE5AE000D016A /* EXManagedAppSplashScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A12E8B63266E8E51003ADA8F /* EXManagedAppSplashScreenViewController.m */; }; BBE8539422B98829001FF9C2 /* EXScopedFontLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = BBE8539322B98828001FF9C2 /* EXScopedFontLoader.m */; }; - BCB61D782B4944E89A1F0371 /* RNCSliderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF7710E4F58478DA6A63F09 /* RNCSliderManager.m */; settings = {COMPILER_FLAGS = "-w"; }; }; BE23D5E5DA574BA3A73C19C3 /* RNSharedElementTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = C97E31ABB8C341358B20C89C /* RNSharedElementTransition.m */; settings = {COMPILER_FLAGS = "-w"; }; }; BE988DDEFEFD40FEA5C44BFE /* RNDateTimePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D86827B3D57944D8A25F37F8 /* RNDateTimePickerManager.m */; settings = {COMPILER_FLAGS = "-w"; }; }; C07CF8B597D24E3D9BAF4D31 /* AIRGoogleMapHeatmap.m in Sources */ = {isa = PBXBuildFile; fileRef = 65028F8B8C154DE59D8AC3E3 /* AIRGoogleMapHeatmap.m */; settings = {COMPILER_FLAGS = "-w"; }; }; @@ -550,8 +548,6 @@ F1421903262CB68600BB97E6 /* RNSVGForeignObject.m in Sources */ = {isa = PBXBuildFile; fileRef = A0DCD2EBCF2B4FDC80E8EBE3 /* RNSVGForeignObject.m */; settings = {COMPILER_FLAGS = "-w"; }; }; F1421904262CB68600BB97E6 /* RNSVGForeignObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8796D576855445C7AE7F4659 /* RNSVGForeignObjectManager.m */; settings = {COMPILER_FLAGS = "-w"; }; }; F1421905262CB68600BB97E6 /* RNSharedElementCornerRadii.m in Sources */ = {isa = PBXBuildFile; fileRef = 780F0BF062134A048B33344C /* RNSharedElementCornerRadii.m */; settings = {COMPILER_FLAGS = "-w"; }; }; - F1421906262CB68600BB97E6 /* RNCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = EC7E234A4A564DFE84B2B1D0 /* RNCSlider.m */; settings = {COMPILER_FLAGS = "-w"; }; }; - F1421908262CB68600BB97E6 /* RNCSliderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF7710E4F58478DA6A63F09 /* RNCSliderManager.m */; settings = {COMPILER_FLAGS = "-w"; }; }; F142190C262CB68600BB97E6 /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F77DDB921E04AC1100624CA2 /* SafariServices.framework */; }; F142190F262CB68600BB97E6 /* Exponent.entitlements in Resources */ = {isa = PBXBuildFile; fileRef = B5E49B551D1346FA00AA6436 /* Exponent.entitlements */; }; F1421910262CB68600BB97E6 /* EXSDKVersions.plist in Resources */ = {isa = PBXBuildFile; fileRef = B5E49B621D1347B800AA6436 /* EXSDKVersions.plist */; }; @@ -670,7 +666,6 @@ 19B2EF731FB25A1A003F2E1B /* EXCachedResourceManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EXCachedResourceManager.h; sourceTree = ""; }; 19B2EF741FB25A1A003F2E1B /* EXCachedResourceManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EXCachedResourceManager.m; sourceTree = ""; }; 1A7952F30F72271C821848D7 /* Pods-ExponentIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExponentIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-ExponentIntegrationTests/Pods-ExponentIntegrationTests.debug.xcconfig"; sourceTree = ""; }; - 1CF1D8E66E5B4C7A9476C145 /* RNCSliderManager.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNCSliderManager.h; sourceTree = ""; }; 1E9033E268A74098A882CCEB /* RNSharedElementTransitionManager.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNSharedElementTransitionManager.m; sourceTree = ""; }; 2168B25A23E3058500A94C0D /* EXScopedFirebaseCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EXScopedFirebaseCore.m; sourceTree = ""; }; 2168B25B23E3058500A94C0D /* EXScopedFirebaseCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXScopedFirebaseCore.h; sourceTree = ""; }; @@ -1203,7 +1198,6 @@ C97E31ABB8C341358B20C89C /* RNSharedElementTransition.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNSharedElementTransition.m; sourceTree = ""; }; CB140B5293CF4E4B9FA74E62 /* RNSVGForeignObjectManager.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNSVGForeignObjectManager.h; sourceTree = ""; }; CC72501D815B491FBC42AACA /* RNSharedElementTypes.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNSharedElementTypes.h; sourceTree = ""; }; - CCF7710E4F58478DA6A63F09 /* RNCSliderManager.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNCSliderManager.m; sourceTree = ""; }; D1919BD72DB8244D157FA9EC /* libPods-Expo Go-Expo Go (unversioned).a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Expo Go-Expo Go (unversioned).a"; sourceTree = BUILT_PRODUCTS_DIR; }; D29BDFCEEA8F4701829ADCD1 /* RNSharedElementNode.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNSharedElementNode.m; sourceTree = ""; }; D47336D662754EDA8EA4BC55 /* RNDateTimePicker.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNDateTimePicker.m; sourceTree = ""; }; @@ -1214,7 +1208,6 @@ E307EED1B62C455182DBF80B /* RNSharedElementTransitionItem.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNSharedElementTransitionItem.h; sourceTree = ""; }; E37EA5BB197945508A6A14F0 /* RNCPickerLabel.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNCPickerLabel.m; sourceTree = ""; }; E3D76D11068A74897B9A37EC /* Pods-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.release.xcconfig"; path = "Target Support Files/Pods-Tests/Pods-Tests.release.xcconfig"; sourceTree = ""; }; - EC7E234A4A564DFE84B2B1D0 /* RNCSlider.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNCSlider.m; sourceTree = ""; }; EE5757442E5343FAAC728C45 /* RNCMaskedView.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNCMaskedView.h; sourceTree = ""; }; F10869892448B11D00B7DC04 /* EXDevMenuMotionInterceptor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EXDevMenuMotionInterceptor.h; sourceTree = ""; }; F108698A2448B11D00B7DC04 /* EXDevMenuMotionInterceptor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EXDevMenuMotionInterceptor.m; sourceTree = ""; }; @@ -1237,7 +1230,6 @@ F1D6AF62244720E100AC1C74 /* EXDevMenuManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EXDevMenuManager.h; sourceTree = ""; }; F1D6AF63244720E100AC1C74 /* EXDevMenuManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EXDevMenuManager.m; sourceTree = ""; }; F1D6AF6524472BA900AC1C74 /* EXDevMenuDelegateProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EXDevMenuDelegateProtocol.h; sourceTree = ""; }; - F1E9894638084CB4956C637C /* RNCSlider.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; path = RNCSlider.h; sourceTree = ""; }; F1F7433C24ABECD400EA5023 /* Exponent-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Exponent-Bridging-Header.h"; sourceTree = ""; }; F1F7433D24ABECD500EA5023 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F4B751B511314328B86D13C6 /* RNSVGTopAlignedLabel.ios.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; path = RNSVGTopAlignedLabel.ios.m; sourceTree = ""; }; @@ -1321,17 +1313,6 @@ name = SegmentedControl; sourceTree = ""; }; - 0E05846EF744409D93CC1ED6 /* Slider */ = { - isa = PBXGroup; - children = ( - F1E9894638084CB4956C637C /* RNCSlider.h */, - EC7E234A4A564DFE84B2B1D0 /* RNCSlider.m */, - 1CF1D8E66E5B4C7A9476C145 /* RNCSliderManager.h */, - CCF7710E4F58478DA6A63F09 /* RNCSliderManager.m */, - ); - path = Slider; - sourceTree = ""; - }; 255747E7222D515400D91513 /* EXScopedFileSystem */ = { isa = PBXGroup; children = ( @@ -2205,7 +2186,6 @@ 65B902B660654403B6731F7E /* SharedElement */, E3BD4F6E1BF543B697AFB794 /* DateTimePicker */, 6999211AF26A46738FB9E106 /* MaskedView */, - 0E05846EF744409D93CC1ED6 /* Slider */, ); path = Components; sourceTree = ""; @@ -3306,8 +3286,6 @@ B75F881E8F9641B785F76CB0 /* RNSVGForeignObject.m in Sources */, C1A9EE2CB1DF4BD8936C3C7F /* RNSVGForeignObjectManager.m in Sources */, F581B81CB601426CB5658AEE /* RNSharedElementCornerRadii.m in Sources */, - ABC18CFCC0224BF0B95B691A /* RNCSlider.m in Sources */, - BCB61D782B4944E89A1F0371 /* RNCSliderManager.m in Sources */, 6782D340A0024AF58B3805D0 /* RNSVGTopAlignedLabel.ios.m in Sources */, 8353B820277A17FC00AFCBDA /* EXStandaloneViewController.m in Sources */, 827A699919CED163689E655D /* ExpoModulesProvider.swift in Sources */, @@ -3608,8 +3586,6 @@ F1421904262CB68600BB97E6 /* RNSVGForeignObjectManager.m in Sources */, F1421905262CB68600BB97E6 /* RNSharedElementCornerRadii.m in Sources */, 837259A9280671D200E204C1 /* AIRMapUrlTileCachedOverlay.m in Sources */, - F1421906262CB68600BB97E6 /* RNCSlider.m in Sources */, - F1421908262CB68600BB97E6 /* RNCSliderManager.m in Sources */, 19762DC50FD4D897EDAF61A5 /* ExpoModulesProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 793ee66dd4841..5c27b50e22ad1 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1947,6 +1947,8 @@ PODS: - React - React-callinvoker - React-Core + - react-native-slider (4.2.4): + - React-Core - react-native-webview (11.23.1): - React-Core - React-perflogger (0.70.2) @@ -2411,6 +2413,7 @@ DEPENDENCIES: - react-native-safe-area-context (from `./vendored/unversioned/react-native-safe-area-context`) - "react-native-segmented-control (from `./vendored/unversioned/@react-native-segmented-control/segmented-control`)" - "react-native-skia (from `./vendored/unversioned/@shopify/react-native-skia`)" + - "react-native-slider (from `./vendored/unversioned/@react-native-community/slider`)" - react-native-webview (from `./vendored/unversioned/react-native-webview`) - React-perflogger (from `../react-native-lab/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../react-native-lab/react-native/Libraries/ActionSheetIOS`) @@ -3104,6 +3107,8 @@ EXTERNAL SOURCES: :path: "./vendored/unversioned/@react-native-segmented-control/segmented-control" react-native-skia: :path: "./vendored/unversioned/@shopify/react-native-skia" + react-native-slider: + :path: "./vendored/unversioned/@react-native-community/slider" react-native-webview: :path: "./vendored/unversioned/react-native-webview" React-perflogger: @@ -3498,6 +3503,7 @@ SPEC CHECKSUMS: react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a react-native-segmented-control: 06607462630512ff8eef652ec560e6235a30cc3e react-native-skia: 78330615997e720dd07db28f4b8dfff22e9dd031 + react-native-slider: cecabb58ecffad671d2ad3ccc58c7f4d2d029e95 react-native-webview: d33e2db8925d090871ffeb232dfa50cb3a727581 React-perflogger: 6009895616a455781293950bbd63d53cfc7ffbc5 React-RCTActionSheet: 5e90aa5712af18bfc86c2c6d97d4dbe0e5451c1d diff --git a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.h b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.h similarity index 96% rename from ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.h rename to ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.h index a62e05075bbde..452b02f1a1e41 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.h +++ b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.h @@ -27,4 +27,6 @@ @property (nonatomic, strong) NSString *accessibilityUnits; @property (nonatomic, strong) NSArray *accessibilityIncrements; +- (float) discreteValue:(float)value; + @end diff --git a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.m b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.m similarity index 82% rename from ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.m rename to ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.m index d83f34fffdec5..4eb8185395e74 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSlider.m +++ b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSlider.m @@ -21,6 +21,7 @@ - (instancetype)initWithFrame:(CGRect)frame - (void)setValue:(float)value { + value = [self discreteValue:value]; _unclippedValue = value; super.value = value; [self setupAccessibility:value]; @@ -28,6 +29,7 @@ - (void)setValue:(float)value - (void)setValue:(float)value animated:(BOOL)animated { + value = [self discreteValue:value]; _unclippedValue = value; [super setValue:value animated:animated]; [self setupAccessibility:value]; @@ -130,4 +132,29 @@ - (void)setInverted:(BOOL)inverted } } +- (float)discreteValue:(float)value +{ + if (self.step > 0 && value >= self.maximumValue) { + return self.maximumValue; + } + + if (self.step > 0 && self.step <= (self.maximumValue - self.minimumValue)) { + double (^_round)(double) = ^(double x) { + if (!UIAccessibilityIsVoiceOverRunning()) { + return round(x); + } else if (self.lastValue > value) { + return floor(x); + } else { + return ceil(x); + } + }; + + return MAX(self.minimumValue, + MIN(self.maximumValue, self.minimumValue + _round((value - self.minimumValue) / self.step) * self.step) + ); + } + + return value; +} + @end diff --git a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSliderManager.h b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSliderManager.h similarity index 100% rename from ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSliderManager.h rename to ios/vendored/unversioned/@react-native-community/slider/ios/RNCSliderManager.h diff --git a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSliderManager.m b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSliderManager.m similarity index 78% rename from ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSliderManager.m rename to ios/vendored/unversioned/@react-native-community/slider/ios/RNCSliderManager.m index a1d5efd648267..d045b2b36c659 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Slider/RNCSliderManager.m +++ b/ios/vendored/unversioned/@react-native-community/slider/ios/RNCSliderManager.m @@ -61,7 +61,7 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture { slider.lastValue = slider.value; float value = slider.minimumValue + (rangeWidth * sliderPercent); - [slider setValue:discreteValue(slider, value) animated: YES]; + [slider setValue:[slider discreteValue:value] animated: YES]; if (slider.onRNCSliderSlidingStart) { slider.onRNCSliderSlidingStart(@{ @@ -83,43 +83,9 @@ - (void)tapHandler:(UITapGestureRecognizer *)gesture { } } -static float discreteValue(RNCSlider *sender, float value) { - // Check if thumb should reach the maximum value and put it on the end of track if yes. - // To avoid affecting the thumb when on maximum, the `step >= (value - maximum)` is not checked. - if (sender.step > 0 && value >= sender.maximumValue) { - return sender.maximumValue; - } - - // If step is set and less than or equal to difference between max and min values, - // pick the closest discrete multiple of step to return. - if (sender.step > 0 && sender.step <= (sender.maximumValue - sender.minimumValue)) { - - // Round up when increase, round down when decrease. - double (^_round)(double) = ^(double x) { - if (!UIAccessibilityIsVoiceOverRunning()) { - return round(x); - } else if (sender.lastValue > value) { - return floor(x); - } else { - return ceil(x); - } - }; - - return - MAX(sender.minimumValue, - MIN(sender.maximumValue, - sender.minimumValue + _round((value - sender.minimumValue) / sender.step) * sender.step - ) - ); - } - - // Otherwise, leave value unchanged. - return value; -} - static void RNCSendSliderEvent(RNCSlider *sender, BOOL continuous, BOOL isSlidingStart) { - float value = discreteValue(sender, sender.value); + float value = [sender discreteValue:sender.value]; if(!sender.isSliding) { [sender setValue:value animated:NO]; diff --git a/ios/vendored/unversioned/@react-native-community/slider/react-native-slider.podspec.json b/ios/vendored/unversioned/@react-native-community/slider/react-native-slider.podspec.json new file mode 100644 index 0000000000000..894b0bf1711f9 --- /dev/null +++ b/ios/vendored/unversioned/@react-native-community/slider/react-native-slider.podspec.json @@ -0,0 +1,19 @@ +{ + "name": "react-native-slider", + "version": "4.2.4", + "summary": "React Native component used to select a single value from a range of values.", + "license": "MIT", + "authors": "react-native-community", + "homepage": "https://github.com/callstack/react-native-slider#readme", + "platforms": { + "ios": "9.0" + }, + "source": { + "git": "https://github.com/react-native-community/react-native-slider.git", + "tag": "v4.2.4" + }, + "source_files": "ios/**/*.{h,m}", + "dependencies": { + "React-Core": [] + } +} diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index 7f064782e1ae0..5c30796395a46 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -4,7 +4,7 @@ "@react-native-community/datetimepicker": "6.5.0", "@react-native-masked-view/masked-view": "0.2.7", "@react-native-community/netinfo": "9.3.3", - "@react-native-community/slider": "4.2.3", + "@react-native-community/slider": "4.2.4", "@react-native-community/viewpager": "5.0.11", "@react-native-firebase/app": "~15.4.0", "@react-native-picker/picker": "2.4.6", diff --git a/tools/src/commands/UpdateVendoredModule.ts b/tools/src/commands/UpdateVendoredModule.ts index cd57890997a07..3a124e9b81593 100644 --- a/tools/src/commands/UpdateVendoredModule.ts +++ b/tools/src/commands/UpdateVendoredModule.ts @@ -85,11 +85,14 @@ async function action(options: ActionOptions) { } const moduleName = await resolveModuleNameAsync(options.module, targetConfig); - const sourceDirectory = path.join(os.tmpdir(), 'ExpoVendoredModules', moduleName); + const downloadSourceDir = path.join(os.tmpdir(), 'ExpoVendoredModules', moduleName); const moduleConfig = targetConfig.modules[moduleName]; try { - await downloadSourceAsync(sourceDirectory, moduleName, moduleConfig, options); + await downloadSourceAsync(downloadSourceDir, moduleName, moduleConfig, options); + const sourceDirectory = moduleConfig.rootDir + ? path.join(downloadSourceDir, moduleConfig.rootDir) + : downloadSourceDir; const platforms = resolvePlatforms(options.platform); @@ -141,7 +144,7 @@ async function action(options: ActionOptions) { } } finally { // Clean cloned repo - await fs.remove(sourceDirectory); + await fs.remove(downloadSourceDir); } logger.success('💪 Successfully updated %s\n', chalk.bold(moduleName)); } diff --git a/tools/src/vendoring/config/expoGoConfig.ts b/tools/src/vendoring/config/expoGoConfig.ts index 8139cb76fd3b4..11fdf4a77e637 100644 --- a/tools/src/vendoring/config/expoGoConfig.ts +++ b/tools/src/vendoring/config/expoGoConfig.ts @@ -272,7 +272,12 @@ const config: VendoringTargetConfig = { }, '@react-native-community/slider': { source: 'https://github.com/callstack/react-native-slider', - packageJsonPath: 'src/package.json', + rootDir: 'src', + ios: {}, + android: { + includeFiles: 'android/**', + excludeFiles: ['android/gradle{/**,**}'], + }, }, '@shopify/react-native-skia': { source: '@shopify/react-native-skia', diff --git a/tools/src/vendoring/legacy.ts b/tools/src/vendoring/legacy.ts index b31bcd7c292ef..125b1e14c37e1 100644 --- a/tools/src/vendoring/legacy.ts +++ b/tools/src/vendoring/legacy.ts @@ -723,21 +723,6 @@ const vendoredModulesConfig: { [key: string]: VendoredModuleConfig } = { }, ], }, - '@react-native-community/slider': { - repoUrl: 'https://github.com/react-native-community/react-native-slider', - installableInManagedApps: true, - packageJsonPath: 'src', - steps: [ - { - sourceIosPath: 'src/ios', - targetIosPath: 'Api/Components/Slider', - sourceAndroidPath: 'src/android/src/main/java/com/reactnativecommunity/slider', - targetAndroidPath: 'modules/api/components/slider', - sourceAndroidPackage: 'com.reactnativecommunity.slider', - targetAndroidPackage: 'versioned.host.exp.exponent.modules.api.components.slider', - }, - ], - }, '@stripe/stripe-react-native': { repoUrl: 'https://github.com/stripe/stripe-react-native', installableInManagedApps: true, diff --git a/tools/src/vendoring/types.ts b/tools/src/vendoring/types.ts index 8b57d497db2ae..e7839b014f1f3 100644 --- a/tools/src/vendoring/types.ts +++ b/tools/src/vendoring/types.ts @@ -10,6 +10,9 @@ export type VendoringModuleConfig = { semverPrefix?: string; packageJsonPath?: string; + // Specify root directory for copying files. This is useful for workspace that the module is in a subfolder. + rootDir?: string; + sourceType?: 'git' | 'npm'; ios?: VendoringModulePlatformConfig<{ diff --git a/yarn.lock b/yarn.lock index 01d3a40ea800e..a651236108766 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3314,10 +3314,10 @@ resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-9.3.3.tgz#ee6a36f7f084d84e90342743026717e7ddad6a90" integrity sha512-/nlrGqItwRnqjis7yWhUq6lpxS8Sm1DMNsjNfABih9wGnh58Tu28z3Box/ifFnu0kD2Fdp0UZXe74QwoZDKA4A== -"@react-native-community/slider@4.2.3": - version "4.2.3" - resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-4.2.3.tgz#7ed4f00ca2c50c666c47a59205b3df031d2588eb" - integrity sha512-qPkrAy883tSPoRWgGZjqL5tYnd4AmNLYNtjvtD9G6JMYtImxK4ITa/W8zOEgR8UOrPde/t+VN0MMxL63HZZK1Q== +"@react-native-community/slider@4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-4.2.4.tgz#8d88adceeb32f7997a122feba48d7186fca80346" + integrity sha512-uY51UoipQW4ELnFWMU6rTHRc4EUYaW+Z1O9Teijej6NYVYdUcUKq+t7WeBGjMAEc1ipyooMeBqRXToWO5zAU2Q== "@react-native-community/viewpager@5.0.11": version "5.0.11"