react-native 0.0.0-16bb2ae4f → 0.0.0-18697adec
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
- package/Libraries/Animated/AnimatedEvent.js +23 -4
- package/Libraries/Animated/NativeAnimatedHelper.js +3 -3
- package/Libraries/BatchedBridge/MessageQueue.js +10 -10
- package/Libraries/Blob/FileReader.js +1 -1
- package/Libraries/Blob/React-RCTBlob.podspec +1 -1
- package/Libraries/Blob/URL.js +1 -1
- package/Libraries/Components/Button.js +3 -0
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
- package/Libraries/Components/ScrollView/ScrollView.js +14 -5
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -0
- package/Libraries/Components/StatusBar/StatusBar.js +6 -14
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.js +27 -1
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/View/ViewAccessibility.js +1 -0
- package/Libraries/Core/ExceptionsManager.js +3 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Core/Timers/JSTimers.js +37 -28
- package/Libraries/Core/Timers/immediateShim.js +67 -0
- package/Libraries/Core/Timers/queueMicrotask.js +41 -0
- package/Libraries/Core/polyfillPromise.js +1 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -1
- package/Libraries/Core/setUpGlobals.js +2 -0
- package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
- package/Libraries/Core/setUpTimers.js +65 -6
- package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +1 -1
- package/Libraries/Image/Image.ios.js +6 -0
- package/Libraries/Image/ImageBackground.js +10 -8
- package/Libraries/Image/ImageProps.js +28 -0
- package/Libraries/Image/ImageSource.js +1 -1
- package/Libraries/Image/React-RCTImage.podspec +1 -1
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
- package/Libraries/Lists/FlatList.js +43 -26
- package/Libraries/Lists/VirtualizedList.js +3 -1
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +4 -4
- package/Libraries/LogBox/Data/LogBoxData.js +18 -18
- package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
- package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
- package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +17 -11
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
- package/Libraries/Network/React-RCTNetwork.podspec +1 -1
- package/Libraries/Network/XMLHttpRequest.js +3 -1
- package/Libraries/NewAppScreen/components/logo.png +0 -0
- package/Libraries/Performance/QuickPerformanceLogger.js +2 -1
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
- package/Libraries/Pressability/Pressability.js +1 -0
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -0
- package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -1
- package/Libraries/ReactNative/PaperUIManager.js +1 -0
- package/Libraries/ReactNative/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
- package/Libraries/Reliability/UserFlow.js +7 -0
- package/Libraries/Renderer/REVISION +1 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +4485 -3842
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2060 -1709
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +2148 -1796
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +4264 -3695
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +1303 -1063
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +1374 -1139
- package/Libraries/Renderer/shims/ReactFabric.js +3 -1
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/Libraries/Settings/React-RCTSettings.podspec +1 -1
- package/Libraries/StyleSheet/normalizeColor.js +2 -2
- package/Libraries/Text/Text.js +11 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
- package/Libraries/Text/TextProps.js +1 -7
- package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
- package/Libraries/UTFSequence.js +1 -1
- package/Libraries/Utilities/Dimensions.js +9 -14
- package/Libraries/Utilities/FeatureDetection.js +31 -0
- package/Libraries/Utilities/HMRClient.js +10 -6
- package/Libraries/Utilities/MatrixMath.js +1 -1
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -1
- package/Libraries/Utilities/deprecatedPropType.js +2 -2
- package/Libraries/Utilities/useWindowDimensions.js +7 -2
- package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
- package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +1 -1
- package/React/Base/RCTBridge+Private.h +8 -0
- package/React/Base/RCTBridge.h +13 -0
- package/React/Base/RCTBridge.m +30 -7
- package/React/Base/RCTBridgeModule.h +3 -12
- package/React/Base/RCTBundleURLProvider.h +26 -1
- package/React/Base/RCTBundleURLProvider.mm +79 -15
- package/React/Base/RCTConstants.h +6 -7
- package/React/Base/RCTConstants.m +12 -12
- package/React/Base/RCTConvert.h +1 -1
- package/React/Base/RCTConvert.m +1 -1
- package/React/Base/RCTCxxConvert.h +1 -1
- package/React/Base/RCTDefines.h +12 -3
- package/React/Base/RCTEventDispatcherProtocol.h +2 -0
- package/React/Base/RCTJSThread.h +29 -0
- package/React/Base/RCTJSThread.m +19 -0
- package/React/Base/RCTMultipartStreamReader.m +0 -2
- package/React/Base/RCTRootView.h +15 -0
- package/React/Base/RCTRootView.m +15 -0
- package/React/Base/RCTTouchHandler.m +4 -9
- package/React/Base/RCTUtils.h +3 -0
- package/React/Base/RCTUtils.m +14 -7
- package/React/Base/RCTVersion.m +1 -1
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
- package/React/CoreModules/BUCK +3 -3
- package/React/CoreModules/RCTAccessibilityManager.mm +1 -1
- package/React/CoreModules/RCTActionSheetManager.mm +14 -5
- package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
- package/React/CoreModules/RCTDevLoadingView.mm +5 -10
- package/React/CoreModules/RCTDevSettings.mm +12 -10
- package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
- package/React/CoreModules/RCTDeviceInfo.mm +4 -4
- package/React/CoreModules/RCTEventDispatcher.mm +5 -0
- package/React/CoreModules/RCTLogBox.mm +14 -10
- package/React/CoreModules/RCTPerfMonitor.mm +9 -4
- package/React/CoreModules/RCTRedBox.mm +1 -5
- package/React/CoreModules/React-CoreModules.podspec +1 -1
- package/React/CxxBridge/RCTCxxBridge.mm +18 -1
- package/React/DevSupport/RCTPackagerConnection.h +3 -0
- package/React/DevSupport/RCTPackagerConnection.mm +19 -8
- package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +12 -4
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +1 -2
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +64 -62
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +31 -11
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +108 -4
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +1 -0
- package/React/Fabric/Mounting/RCTMountingManager.h +3 -0
- package/React/Fabric/Mounting/RCTMountingManager.mm +22 -3
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +2 -0
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +12 -0
- package/React/Fabric/RCTConversions.h +3 -0
- package/React/Fabric/RCTScheduler.mm +12 -5
- package/React/Fabric/RCTSurfacePresenter.mm +6 -7
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +1 -1
- package/React/Fabric/RCTSurfaceRegistry.h +1 -1
- package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
- package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
- package/React/Modules/RCTI18nUtil.h +14 -6
- package/React/Modules/RCTI18nUtil.m +1 -47
- package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
- package/React/React-RCTFabric.podspec +1 -1
- package/React/Views/RCTFont.mm +54 -38
- package/React/Views/RCTModalHostView.h +1 -1
- package/React/Views/RCTModalHostView.m +16 -0
- package/React/Views/RCTModalHostViewManager.m +1 -0
- package/React/Views/RCTView.m +2 -7
- package/React/Views/RCTViewManager.m +4 -2
- package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
- package/React/Views/ScrollView/RCTScrollView.h +1 -0
- package/React/Views/ScrollView/RCTScrollView.m +111 -36
- package/React/Views/ScrollView/RCTScrollViewManager.m +1 -7
- package/React/Views/UIView+React.m +2 -11
- package/React-Core.podspec +1 -1
- package/ReactAndroid/Android-prebuilt.mk +8 -0
- package/ReactAndroid/README.md +1 -1
- package/ReactAndroid/build.gradle +12 -5
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +5 -5
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +5 -5
- package/ReactAndroid/src/androidTest/js/BUCK +26 -0
- package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutorFactory.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/RuntimeConfig.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +89 -44
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +28 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +5 -4
- package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +22 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +3 -6
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/{ReactSoftException.java → ReactSoftExceptionLogger.java} +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +32 -4
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +97 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +9 -58
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +14 -9
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +3 -72
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +64 -31
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +54 -10
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +14 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +40 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +10 -6
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +11 -9
- package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +39 -11
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +162 -66
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +9 -9
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +12 -20
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +14 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +21 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +7 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +24 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +4 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +23 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +31 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +31 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +14 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +114 -62
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +39 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +24 -3
- package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -3
- package/ReactAndroid/src/main/jni/react/jni/BUCK +5 -2
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +61 -0
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +8 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
- package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
- package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
- package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
- package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +0 -1
- package/ReactAndroid/src/main/third-party/android/androidx/BUCK +63 -2
- package/ReactAndroid/src/main/third-party/java/testing-support-lib/BUCK +0 -31
- package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +1 -0
- package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +1 -0
- package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +168 -0
- package/ReactCommon/React-Fabric.podspec +10 -1
- package/ReactCommon/ReactCommon.podspec +2 -1
- package/ReactCommon/callinvoker/BUCK +2 -2
- package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
- package/ReactCommon/cxxreact/Android.mk +2 -1
- package/ReactCommon/cxxreact/BUCK +1 -0
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
- package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
- package/ReactCommon/cxxreact/React-cxxreact.podspec +2 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/React-hermes.podspec +1 -1
- package/ReactCommon/hermes/executor/Android.mk +4 -4
- package/ReactCommon/hermes/inspector/Android.mk +1 -2
- package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
- package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
- package/ReactCommon/jsi/Android.mk +1 -1
- package/ReactCommon/jsi/BUCK +0 -2
- package/ReactCommon/jsi/React-jsi.podspec +1 -1
- package/ReactCommon/jsiexecutor/Android.mk +2 -2
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
- package/ReactCommon/logger/Android.mk +23 -0
- package/ReactCommon/logger/BUCK +43 -0
- package/ReactCommon/logger/React-logger.podspec +40 -0
- package/ReactCommon/logger/react_native_log.cpp +52 -0
- package/ReactCommon/logger/react_native_log.h +33 -0
- package/ReactCommon/react/nativemodule/core/Android.mk +2 -2
- package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp +1 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.h +3 -2
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +46 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +10 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +37 -1
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +24 -22
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -8
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -5
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +51 -29
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +45 -34
- package/ReactCommon/react/nativemodule/samples/BUCK +2 -2
- package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +1 -1
- package/ReactCommon/react/renderer/animations/BUCK +1 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -27
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +920 -1136
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
- package/ReactCommon/react/renderer/animations/conversions.h +212 -0
- package/ReactCommon/react/renderer/animations/primitives.h +104 -0
- package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +9 -6
- package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
- package/ReactCommon/react/renderer/animations/utils.h +80 -0
- package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +3 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +162 -11
- package/ReactCommon/react/renderer/attributedstring/primitives.h +34 -1
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +2 -2
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +10 -4
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
- package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +2 -1
- package/ReactCommon/react/renderer/components/image/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +28 -9
- package/ReactCommon/react/renderer/components/image/ImageProps.h +5 -1
- package/ReactCommon/react/renderer/components/image/conversions.h +9 -2
- package/ReactCommon/react/renderer/components/inputaccessory/BUCK +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +0 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +2 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
- package/ReactCommon/react/renderer/components/root/RootProps.cpp +12 -2
- package/ReactCommon/react/renderer/components/root/RootProps.h +6 -1
- package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -1
- package/ReactCommon/react/renderer/components/root/RootShadowNode.h +2 -0
- package/ReactCommon/react/renderer/components/root/tests/RootShadowNodeTest.cpp +8 -4
- package/ReactCommon/react/renderer/components/safeareaview/BUCK +1 -1
- package/ReactCommon/react/renderer/components/scrollview/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +45 -4
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +5 -1
- package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
- package/ReactCommon/react/renderer/components/text/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +32 -0
- package/ReactCommon/react/renderer/components/text/BaseTextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -16
- package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +10 -4
- package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +0 -6
- package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -3
- package/ReactCommon/react/renderer/components/text/TextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/TextShadowNode.h +0 -6
- package/ReactCommon/react/renderer/components/textinput/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +58 -91
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +10 -6
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +46 -22
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
- package/ReactCommon/react/renderer/components/textinput/iostextinput/conversions.h +15 -3
- package/ReactCommon/react/renderer/components/textinput/iostextinput/primitives.h +6 -0
- package/ReactCommon/react/renderer/components/textinput/iostextinput/propsConversions.h +63 -2
- package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +4 -2
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -2
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +21 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +24 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +3 -0
- package/ReactCommon/react/renderer/components/view/Android.mk +3 -2
- package/ReactCommon/react/renderer/components/view/BUCK +1 -0
- package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
- package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -22
- package/ReactCommon/react/renderer/components/view/ViewProps.cpp +62 -14
- package/ReactCommon/react/renderer/components/view/ViewProps.h +7 -1
- package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -10
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +5 -4
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +58 -33
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +2 -8
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +2 -0
- package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +62 -8
- package/ReactCommon/react/renderer/components/view/conversions.h +57 -14
- package/ReactCommon/react/renderer/components/view/propsConversions.h +163 -28
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +7 -2
- package/ReactCommon/react/renderer/core/Android.mk +1 -1
- package/ReactCommon/react/renderer/core/ComponentDescriptor.h +5 -2
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +19 -21
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +4 -0
- package/ReactCommon/react/renderer/core/EventDispatcher.cpp +12 -31
- package/ReactCommon/react/renderer/core/EventDispatcher.h +1 -4
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +0 -6
- package/ReactCommon/react/renderer/core/Props.cpp +10 -2
- package/ReactCommon/react/renderer/core/Props.h +6 -1
- package/ReactCommon/react/renderer/core/PropsParserContext.h +29 -0
- package/ReactCommon/react/renderer/core/RawProps.cpp +2 -1
- package/ReactCommon/react/renderer/core/RawProps.h +3 -1
- package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
- package/ReactCommon/react/renderer/core/RawPropsParser.h +11 -2
- package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
- package/ReactCommon/react/renderer/core/ShadowNode.h +4 -0
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +11 -1
- package/ReactCommon/react/renderer/core/propsConversions.h +18 -8
- package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +16 -4
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +85 -20
- package/ReactCommon/react/renderer/core/tests/TestComponent.h +6 -2
- package/ReactCommon/react/renderer/graphics/Android.mk +5 -2
- package/ReactCommon/react/renderer/graphics/BUCK +12 -1
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +2 -1
- package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
- package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
- package/ReactCommon/react/renderer/graphics/conversions.h +34 -19
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +67 -0
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +42 -1
- package/ReactCommon/react/renderer/graphics/platform/ios/PlatformColorParser.h +34 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.h +12 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.mm +206 -0
- package/ReactCommon/react/renderer/imagemanager/BUCK +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/mapbuffer/BUCK +2 -2
- package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
- package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +6 -2
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +3 -1
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +12 -1
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +8 -1
- package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +10 -3
- package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
- package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +10 -4
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +9 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +30 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +34 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +11 -5
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +5 -3
- package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +34 -0
- package/ReactCommon/react/renderer/{core/Constants.h → scheduler/InspectorData.h} +9 -8
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +44 -29
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +14 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +49 -29
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +12 -4
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +1 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +22 -0
- package/ReactCommon/react/renderer/timeline/BUCK +6 -6
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +34 -30
- package/ReactCommon/react/renderer/uimanager/UIManager.h +6 -3
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +101 -108
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +4 -7
- package/ReactCommon/react/test_utils/BUCK +3 -0
- package/ReactCommon/react/test_utils/MockSurfaceHandler.h +25 -0
- package/ReactCommon/react/test_utils/shadowTreeGeneration.h +18 -4
- package/ReactCommon/react/utils/Android.mk +3 -1
- package/ReactCommon/react/utils/BUCK +1 -0
- package/ReactCommon/react/utils/ContextContainer.h +0 -27
- package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
- package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +12 -0
- package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar → 0.0.0-18697adec/react-native-0.0.0-18697adec.aar} +0 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module → 0.0.0-18697adec/react-native-0.0.0-18697adec.module} +30 -17
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom → 0.0.0-18697adec/react-native-0.0.0-18697adec.pom} +8 -2
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha512 +1 -0
- package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
- package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
- package/flow/HermesInternalType.js +114 -0
- package/flow/global.js +68 -0
- package/index.js +37 -24
- package/jest/renderer.js +3 -7
- package/jest/setup.js +2 -1
- package/package.json +55 -16
- package/react.gradle +19 -13
- package/scripts/generate-specs-cli.js +20 -2
- package/scripts/ios-configure-glog.sh +4 -0
- package/scripts/react-native-xcode.sh +1 -1
- package/scripts/react_native_pods.rb +195 -38
- package/template/_flowconfig +1 -1
- package/template/android/app/build.gradle +2 -2
- package/template/android/build.gradle +1 -2
- package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/template/android/gradle.properties +1 -1
- package/template/ios/HelloWorld.xcodeproj/project.pbxproj +2 -0
- package/template/ios/Podfile +1 -0
- package/template/package.json +3 -4
- package/third-party-podspecs/RCT-Folly.podspec +6 -3
- package/Libraries/BUCK +0 -26
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
- package/Libraries/Components/StaticContainer.react.js +0 -51
- package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -38
- package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
- package/Libraries/Interaction/InteractionMixin.js +0 -54
- package/Libraries/ReactNative/queryLayoutByID.js +0 -58
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
- package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha512 +0 -1
- package/scripts/generate-specs.sh +0 -100
- package/template/_editorconfig +0 -3
- package/template/_gitattributes +0 -3
package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java
CHANGED
|
@@ -25,7 +25,7 @@ import androidx.annotation.NonNull;
|
|
|
25
25
|
import androidx.annotation.Nullable;
|
|
26
26
|
import com.facebook.common.logging.FLog;
|
|
27
27
|
import com.facebook.react.bridge.ReactNoCrashSoftException;
|
|
28
|
-
import com.facebook.react.bridge.
|
|
28
|
+
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
29
29
|
import com.facebook.react.bridge.WritableArray;
|
|
30
30
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
31
31
|
import com.facebook.react.common.mapbuffer.ReadableMapBuffer;
|
|
@@ -61,6 +61,7 @@ public class TextLayoutManagerMapBuffer {
|
|
|
61
61
|
public static final short PA_KEY_TEXT_BREAK_STRATEGY = 2;
|
|
62
62
|
public static final short PA_KEY_ADJUST_FONT_SIZE_TO_FIT = 3;
|
|
63
63
|
public static final short PA_KEY_INCLUDE_FONT_PADDING = 4;
|
|
64
|
+
public static final short PA_KEY_HYPHENATION_FREQUENCY = 5;
|
|
64
65
|
|
|
65
66
|
private static final boolean ENABLE_MEASURE_LOGGING = ReactBuildConfig.DEBUG && false;
|
|
66
67
|
|
|
@@ -264,7 +265,8 @@ public class TextLayoutManagerMapBuffer {
|
|
|
264
265
|
float width,
|
|
265
266
|
YogaMeasureMode widthYogaMeasureMode,
|
|
266
267
|
boolean includeFontPadding,
|
|
267
|
-
int textBreakStrategy
|
|
268
|
+
int textBreakStrategy,
|
|
269
|
+
int hyphenationFrequency) {
|
|
268
270
|
Layout layout;
|
|
269
271
|
int spanLength = text.length();
|
|
270
272
|
boolean unconstrainedWidth = widthYogaMeasureMode == YogaMeasureMode.UNDEFINED || width < 0;
|
|
@@ -295,14 +297,14 @@ public class TextLayoutManagerMapBuffer {
|
|
|
295
297
|
.setLineSpacing(0.f, 1.f)
|
|
296
298
|
.setIncludePad(includeFontPadding)
|
|
297
299
|
.setBreakStrategy(textBreakStrategy)
|
|
298
|
-
.setHyphenationFrequency(
|
|
300
|
+
.setHyphenationFrequency(hyphenationFrequency)
|
|
299
301
|
.build();
|
|
300
302
|
}
|
|
301
303
|
|
|
302
304
|
} else if (boring != null && (unconstrainedWidth || boring.width <= width)) {
|
|
303
305
|
int boringLayoutWidth = boring.width;
|
|
304
306
|
if (boring.width < 0) {
|
|
305
|
-
|
|
307
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
306
308
|
TAG, new ReactNoCrashSoftException("Text width is invalid: " + boring.width));
|
|
307
309
|
boringLayoutWidth = 0;
|
|
308
310
|
}
|
|
@@ -338,7 +340,7 @@ public class TextLayoutManagerMapBuffer {
|
|
|
338
340
|
.setLineSpacing(0.f, 1.f)
|
|
339
341
|
.setIncludePad(includeFontPadding)
|
|
340
342
|
.setBreakStrategy(textBreakStrategy)
|
|
341
|
-
.setHyphenationFrequency(
|
|
343
|
+
.setHyphenationFrequency(hyphenationFrequency);
|
|
342
344
|
|
|
343
345
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
344
346
|
builder.setUseLineSpacingFromFallbacks(true);
|
|
@@ -391,6 +393,9 @@ public class TextLayoutManagerMapBuffer {
|
|
|
391
393
|
paragraphAttributes.hasKey(PA_KEY_INCLUDE_FONT_PADDING)
|
|
392
394
|
? paragraphAttributes.getBoolean(PA_KEY_INCLUDE_FONT_PADDING)
|
|
393
395
|
: DEFAULT_INCLUDE_FONT_PADDING;
|
|
396
|
+
int hyphenationFrequency =
|
|
397
|
+
TextAttributeProps.getTextBreakStrategy(
|
|
398
|
+
paragraphAttributes.getString(PA_KEY_HYPHENATION_FREQUENCY));
|
|
394
399
|
|
|
395
400
|
if (text == null) {
|
|
396
401
|
throw new IllegalStateException("Spannable element has not been prepared in onBeforeLayout");
|
|
@@ -404,7 +409,13 @@ public class TextLayoutManagerMapBuffer {
|
|
|
404
409
|
|
|
405
410
|
Layout layout =
|
|
406
411
|
createLayout(
|
|
407
|
-
text,
|
|
412
|
+
text,
|
|
413
|
+
boring,
|
|
414
|
+
width,
|
|
415
|
+
widthYogaMeasureMode,
|
|
416
|
+
includeFontPadding,
|
|
417
|
+
textBreakStrategy,
|
|
418
|
+
hyphenationFrequency);
|
|
408
419
|
|
|
409
420
|
int maximumNumberOfLines =
|
|
410
421
|
paragraphAttributes.hasKey(PA_KEY_MAX_NUMBER_OF_LINES)
|
|
@@ -514,16 +525,16 @@ public class TextLayoutManagerMapBuffer {
|
|
|
514
525
|
|
|
515
526
|
// The attachment array returns the positions of each of the attachments as
|
|
516
527
|
attachmentsPositions[attachmentPosition] =
|
|
517
|
-
PixelUtil.
|
|
528
|
+
PixelUtil.toDIPFromPixel(placeholderTopPosition);
|
|
518
529
|
attachmentsPositions[attachmentPosition + 1] =
|
|
519
|
-
PixelUtil.
|
|
530
|
+
PixelUtil.toDIPFromPixel(placeholderLeftPosition);
|
|
520
531
|
attachmentIndex++;
|
|
521
532
|
}
|
|
522
533
|
}
|
|
523
534
|
}
|
|
524
535
|
|
|
525
|
-
float widthInSP = PixelUtil.
|
|
526
|
-
float heightInSP = PixelUtil.
|
|
536
|
+
float widthInSP = PixelUtil.toDIPFromPixel(calculatedWidth);
|
|
537
|
+
float heightInSP = PixelUtil.toDIPFromPixel(calculatedHeight);
|
|
527
538
|
|
|
528
539
|
if (ENABLE_MEASURE_LOGGING) {
|
|
529
540
|
FLog.e(
|
|
@@ -561,10 +572,19 @@ public class TextLayoutManagerMapBuffer {
|
|
|
561
572
|
paragraphAttributes.hasKey(PA_KEY_INCLUDE_FONT_PADDING)
|
|
562
573
|
? paragraphAttributes.getBoolean(PA_KEY_INCLUDE_FONT_PADDING)
|
|
563
574
|
: DEFAULT_INCLUDE_FONT_PADDING;
|
|
575
|
+
int hyphenationFrequency =
|
|
576
|
+
TextAttributeProps.getTextBreakStrategy(
|
|
577
|
+
paragraphAttributes.getString(PA_KEY_HYPHENATION_FREQUENCY));
|
|
564
578
|
|
|
565
579
|
Layout layout =
|
|
566
580
|
createLayout(
|
|
567
|
-
text,
|
|
581
|
+
text,
|
|
582
|
+
boring,
|
|
583
|
+
width,
|
|
584
|
+
YogaMeasureMode.EXACTLY,
|
|
585
|
+
includeFontPadding,
|
|
586
|
+
textBreakStrategy,
|
|
587
|
+
hyphenationFrequency);
|
|
568
588
|
return FontMetricsUtil.getFontMetrics(text, layout, sTextPaintInstance, context);
|
|
569
589
|
}
|
|
570
590
|
|
|
@@ -15,6 +15,7 @@ rn_android_library(
|
|
|
15
15
|
react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"),
|
|
16
16
|
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
|
|
17
17
|
react_native_dep("third-party/java/jsr-305:jsr-305"),
|
|
18
|
+
react_native_dep("third-party/android/androidx:autofill"),
|
|
18
19
|
react_native_target("java/com/facebook/react/bridge:bridge"),
|
|
19
20
|
react_native_target("java/com/facebook/react/common:common"),
|
|
20
21
|
react_native_target("java/com/facebook/react/module/annotations:annotations"),
|
|
@@ -36,14 +36,14 @@ import android.view.inputmethod.InputConnection;
|
|
|
36
36
|
import android.view.inputmethod.InputMethodManager;
|
|
37
37
|
import androidx.annotation.Nullable;
|
|
38
38
|
import androidx.appcompat.widget.AppCompatEditText;
|
|
39
|
-
import androidx.core.view.AccessibilityDelegateCompat;
|
|
40
39
|
import androidx.core.view.ViewCompat;
|
|
41
40
|
import com.facebook.common.logging.FLog;
|
|
42
41
|
import com.facebook.infer.annotation.Assertions;
|
|
43
42
|
import com.facebook.react.bridge.ReactContext;
|
|
44
|
-
import com.facebook.react.bridge.
|
|
43
|
+
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
45
44
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
46
45
|
import com.facebook.react.uimanager.FabricViewStateManager;
|
|
46
|
+
import com.facebook.react.uimanager.ReactAccessibilityDelegate;
|
|
47
47
|
import com.facebook.react.uimanager.UIManagerModule;
|
|
48
48
|
import com.facebook.react.uimanager.events.EventDispatcher;
|
|
49
49
|
import com.facebook.react.views.text.CustomLetterSpacingSpan;
|
|
@@ -155,7 +155,7 @@ public class ReactEditText extends AppCompatEditText
|
|
|
155
155
|
|
|
156
156
|
ViewCompat.setAccessibilityDelegate(
|
|
157
157
|
this,
|
|
158
|
-
new
|
|
158
|
+
new ReactAccessibilityDelegate() {
|
|
159
159
|
@Override
|
|
160
160
|
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
|
161
161
|
if (action == AccessibilityNodeInfo.ACTION_CLICK) {
|
|
@@ -331,10 +331,20 @@ public class ReactEditText extends AppCompatEditText
|
|
|
331
331
|
}
|
|
332
332
|
|
|
333
333
|
if (start != UNSET && end != UNSET) {
|
|
334
|
+
// clamp selection values for safety
|
|
335
|
+
start = clampToTextLength(start);
|
|
336
|
+
end = clampToTextLength(end);
|
|
337
|
+
|
|
334
338
|
setSelection(start, end);
|
|
335
339
|
}
|
|
336
340
|
}
|
|
337
341
|
|
|
342
|
+
private int clampToTextLength(int value) {
|
|
343
|
+
int textLength = getText() == null ? 0 : getText().length();
|
|
344
|
+
|
|
345
|
+
return Math.max(0, Math.min(value, textLength));
|
|
346
|
+
}
|
|
347
|
+
|
|
338
348
|
@Override
|
|
339
349
|
public void setSelection(int start, int end) {
|
|
340
350
|
if (DEBUG_MODE) {
|
|
@@ -1025,7 +1035,7 @@ public class ReactEditText extends AppCompatEditText
|
|
|
1025
1035
|
try {
|
|
1026
1036
|
sb.append(currentText.subSequence(0, currentText.length()));
|
|
1027
1037
|
} catch (IndexOutOfBoundsException e) {
|
|
1028
|
-
|
|
1038
|
+
ReactSoftExceptionLogger.logSoftException(TAG, e);
|
|
1029
1039
|
}
|
|
1030
1040
|
}
|
|
1031
1041
|
|
|
@@ -131,10 +131,13 @@ class ReactEditTextInputConnectionWrapper extends InputConnectionWrapper {
|
|
|
131
131
|
@Override
|
|
132
132
|
public boolean sendKeyEvent(KeyEvent event) {
|
|
133
133
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
|
134
|
+
boolean isNumberKey = event.getUnicodeChar() < 58 && event.getUnicodeChar() > 47;
|
|
134
135
|
if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
|
|
135
136
|
dispatchKeyEvent(BACKSPACE_KEY_VALUE);
|
|
136
137
|
} else if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
|
|
137
138
|
dispatchKeyEvent(ENTER_KEY_VALUE);
|
|
139
|
+
} else if (isNumberKey) {
|
|
140
|
+
dispatchKeyEvent(String.valueOf(event.getNumber()));
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
return super.sendKeyEvent(event);
|
package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
CHANGED
|
@@ -30,13 +30,14 @@ import android.view.inputmethod.EditorInfo;
|
|
|
30
30
|
import android.widget.EditText;
|
|
31
31
|
import android.widget.TextView;
|
|
32
32
|
import androidx.annotation.Nullable;
|
|
33
|
+
import androidx.autofill.HintConstants;
|
|
33
34
|
import androidx.core.content.ContextCompat;
|
|
34
35
|
import com.facebook.common.logging.FLog;
|
|
35
36
|
import com.facebook.infer.annotation.Assertions;
|
|
36
37
|
import com.facebook.react.bridge.Dynamic;
|
|
37
38
|
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
|
38
39
|
import com.facebook.react.bridge.ReactContext;
|
|
39
|
-
import com.facebook.react.bridge.
|
|
40
|
+
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
40
41
|
import com.facebook.react.bridge.ReadableArray;
|
|
41
42
|
import com.facebook.react.bridge.ReadableMap;
|
|
42
43
|
import com.facebook.react.bridge.ReadableNativeMap;
|
|
@@ -72,6 +73,7 @@ import com.facebook.react.views.text.TextLayoutManager;
|
|
|
72
73
|
import com.facebook.react.views.text.TextTransform;
|
|
73
74
|
import com.facebook.yoga.YogaConstants;
|
|
74
75
|
import java.lang.reflect.Field;
|
|
76
|
+
import java.util.HashMap;
|
|
75
77
|
import java.util.LinkedList;
|
|
76
78
|
import java.util.Map;
|
|
77
79
|
|
|
@@ -84,6 +86,51 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
84
86
|
private static final int[] SPACING_TYPES = {
|
|
85
87
|
Spacing.ALL, Spacing.LEFT, Spacing.RIGHT, Spacing.TOP, Spacing.BOTTOM,
|
|
86
88
|
};
|
|
89
|
+
private static final Map<String, String> REACT_PROPS_AUTOFILL_HINTS_MAP =
|
|
90
|
+
new HashMap<String, String>() {
|
|
91
|
+
{
|
|
92
|
+
put("birthdate-day", HintConstants.AUTOFILL_HINT_BIRTH_DATE_DAY);
|
|
93
|
+
put("birthdate-full", HintConstants.AUTOFILL_HINT_BIRTH_DATE_FULL);
|
|
94
|
+
put("birthdate-month", HintConstants.AUTOFILL_HINT_BIRTH_DATE_MONTH);
|
|
95
|
+
put("birthdate-year", HintConstants.AUTOFILL_HINT_BIRTH_DATE_YEAR);
|
|
96
|
+
put("cc-csc", HintConstants.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE);
|
|
97
|
+
put("cc-exp", HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE);
|
|
98
|
+
put("cc-exp-day", HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY);
|
|
99
|
+
put("cc-exp-month", HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH);
|
|
100
|
+
put("cc-exp-year", HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR);
|
|
101
|
+
put("cc-number", HintConstants.AUTOFILL_HINT_CREDIT_CARD_NUMBER);
|
|
102
|
+
put("email", HintConstants.AUTOFILL_HINT_EMAIL_ADDRESS);
|
|
103
|
+
put("gender", HintConstants.AUTOFILL_HINT_GENDER);
|
|
104
|
+
put("name", HintConstants.AUTOFILL_HINT_PERSON_NAME);
|
|
105
|
+
put("name-family", HintConstants.AUTOFILL_HINT_PERSON_NAME_FAMILY);
|
|
106
|
+
put("name-given", HintConstants.AUTOFILL_HINT_PERSON_NAME_GIVEN);
|
|
107
|
+
put("name-middle", HintConstants.AUTOFILL_HINT_PERSON_NAME_MIDDLE);
|
|
108
|
+
put("name-middle-initial", HintConstants.AUTOFILL_HINT_PERSON_NAME_MIDDLE_INITIAL);
|
|
109
|
+
put("name-prefix", HintConstants.AUTOFILL_HINT_PERSON_NAME_PREFIX);
|
|
110
|
+
put("name-suffix", HintConstants.AUTOFILL_HINT_PERSON_NAME_SUFFIX);
|
|
111
|
+
put("password", HintConstants.AUTOFILL_HINT_PASSWORD);
|
|
112
|
+
put("password-new", HintConstants.AUTOFILL_HINT_NEW_PASSWORD);
|
|
113
|
+
put("postal-address", HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS);
|
|
114
|
+
put("postal-address-country", HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_COUNTRY);
|
|
115
|
+
put(
|
|
116
|
+
"postal-address-extended",
|
|
117
|
+
HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_ADDRESS);
|
|
118
|
+
put(
|
|
119
|
+
"postal-address-extended-postal-code",
|
|
120
|
+
HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_POSTAL_CODE);
|
|
121
|
+
put("postal-address-locality", HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_LOCALITY);
|
|
122
|
+
put("postal-address-region", HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_REGION);
|
|
123
|
+
put("postal-code", HintConstants.AUTOFILL_HINT_POSTAL_CODE);
|
|
124
|
+
put("street-address", HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_STREET_ADDRESS);
|
|
125
|
+
put("sms-otp", HintConstants.AUTOFILL_HINT_SMS_OTP);
|
|
126
|
+
put("tel", HintConstants.AUTOFILL_HINT_PHONE_NUMBER);
|
|
127
|
+
put("tel-country-code", HintConstants.AUTOFILL_HINT_PHONE_COUNTRY_CODE);
|
|
128
|
+
put("tel-national", HintConstants.AUTOFILL_HINT_PHONE_NATIONAL);
|
|
129
|
+
put("tel-device", HintConstants.AUTOFILL_HINT_PHONE_NUMBER_DEVICE);
|
|
130
|
+
put("username", HintConstants.AUTOFILL_HINT_USERNAME);
|
|
131
|
+
put("username-new", HintConstants.AUTOFILL_HINT_NEW_USERNAME);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
87
134
|
|
|
88
135
|
private static final int FOCUS_TEXT_INPUT = 1;
|
|
89
136
|
private static final int BLUR_TEXT_INPUT = 2;
|
|
@@ -111,6 +158,15 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
111
158
|
private static final String KEYBOARD_TYPE_URI = "url";
|
|
112
159
|
private static final InputFilter[] EMPTY_FILTERS = new InputFilter[0];
|
|
113
160
|
private static final int UNSET = -1;
|
|
161
|
+
private static final String[] DRAWABLE_FIELDS = {
|
|
162
|
+
"mCursorDrawable", "mSelectHandleLeft", "mSelectHandleRight", "mSelectHandleCenter"
|
|
163
|
+
};
|
|
164
|
+
private static final String[] DRAWABLE_RESOURCES = {
|
|
165
|
+
"mCursorDrawableRes",
|
|
166
|
+
"mTextSelectHandleLeftRes",
|
|
167
|
+
"mTextSelectHandleRightRes",
|
|
168
|
+
"mTextSelectHandleRes"
|
|
169
|
+
};
|
|
114
170
|
|
|
115
171
|
protected @Nullable ReactTextViewManagerCallback mReactTextViewManagerCallback;
|
|
116
172
|
|
|
@@ -281,9 +337,22 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
281
337
|
Spannable spannable = update.getText();
|
|
282
338
|
TextInlineImageSpan.possiblyUpdateInlineImageSpans(spannable, view);
|
|
283
339
|
}
|
|
340
|
+
|
|
341
|
+
// Ensure that selection is handled correctly on text update
|
|
342
|
+
boolean isCurrentSelectionEmpty = view.getSelectionStart() == view.getSelectionEnd();
|
|
343
|
+
int selectionStart = update.getSelectionStart();
|
|
344
|
+
int selectionEnd = update.getSelectionEnd();
|
|
345
|
+
if ((selectionStart == UNSET || selectionEnd == UNSET) && isCurrentSelectionEmpty) {
|
|
346
|
+
// if selection is not set by state, shift current selection to ensure constant gap to
|
|
347
|
+
// text end
|
|
348
|
+
int textLength = view.getText() == null ? 0 : view.getText().length();
|
|
349
|
+
int selectionOffset = textLength - view.getSelectionStart();
|
|
350
|
+
selectionStart = update.getText().length() - selectionOffset;
|
|
351
|
+
selectionEnd = selectionStart;
|
|
352
|
+
}
|
|
353
|
+
|
|
284
354
|
view.maybeSetTextFromState(update);
|
|
285
|
-
view.maybeSetSelection(
|
|
286
|
-
update.getJsEventCounter(), update.getSelectionStart(), update.getSelectionEnd());
|
|
355
|
+
view.maybeSetSelection(update.getJsEventCounter(), selectionStart, selectionEnd);
|
|
287
356
|
}
|
|
288
357
|
}
|
|
289
358
|
|
|
@@ -399,7 +468,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
399
468
|
}
|
|
400
469
|
|
|
401
470
|
@ReactProp(name = "placeholder")
|
|
402
|
-
public void setPlaceholder(ReactEditText view,
|
|
471
|
+
public void setPlaceholder(ReactEditText view, String placeholder) {
|
|
403
472
|
view.setHint(placeholder);
|
|
404
473
|
}
|
|
405
474
|
|
|
@@ -447,34 +516,40 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
447
516
|
}
|
|
448
517
|
|
|
449
518
|
// The evil code that follows uses reflection to achieve this on Android 8.1 and below.
|
|
450
|
-
// Based on
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
int drawableResId = cursorDrawableResField.getInt(view);
|
|
457
|
-
|
|
458
|
-
// The view has no cursor drawable.
|
|
459
|
-
if (drawableResId == 0) {
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
519
|
+
// Based on https://tinyurl.com/3vff8lyu https://tinyurl.com/vehggzs9
|
|
520
|
+
for (int i = 0; i < DRAWABLE_RESOURCES.length; i++) {
|
|
521
|
+
try {
|
|
522
|
+
Field drawableResourceField = TextView.class.getDeclaredField(DRAWABLE_RESOURCES[i]);
|
|
523
|
+
drawableResourceField.setAccessible(true);
|
|
524
|
+
int resourceId = drawableResourceField.getInt(view);
|
|
462
525
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
526
|
+
// The view has no cursor drawable.
|
|
527
|
+
if (resourceId == 0) {
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
Drawable drawable = ContextCompat.getDrawable(view.getContext(), resourceId);
|
|
532
|
+
|
|
533
|
+
Drawable drawableCopy = drawable.mutate();
|
|
534
|
+
drawableCopy.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
|
535
|
+
|
|
536
|
+
Field editorField = TextView.class.getDeclaredField("mEditor");
|
|
537
|
+
editorField.setAccessible(true);
|
|
538
|
+
Object editor = editorField.get(view);
|
|
539
|
+
|
|
540
|
+
Field cursorDrawableField = editor.getClass().getDeclaredField(DRAWABLE_FIELDS[i]);
|
|
541
|
+
cursorDrawableField.setAccessible(true);
|
|
542
|
+
if (DRAWABLE_RESOURCES[i] == "mCursorDrawableRes") {
|
|
543
|
+
Drawable[] drawables = {drawableCopy, drawableCopy};
|
|
544
|
+
cursorDrawableField.set(editor, drawables);
|
|
545
|
+
} else {
|
|
546
|
+
cursorDrawableField.set(editor, drawableCopy);
|
|
547
|
+
}
|
|
548
|
+
} catch (NoSuchFieldException ex) {
|
|
549
|
+
// Ignore errors to avoid crashing if these private fields don't exist on modified
|
|
550
|
+
// or future android versions.
|
|
551
|
+
} catch (IllegalAccessException ex) {
|
|
552
|
+
}
|
|
478
553
|
}
|
|
479
554
|
}
|
|
480
555
|
|
|
@@ -518,7 +593,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
518
593
|
view.setTextColor(defaultContextTextColor);
|
|
519
594
|
} else {
|
|
520
595
|
Context c = view.getContext();
|
|
521
|
-
|
|
596
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
522
597
|
TAG,
|
|
523
598
|
new IllegalStateException(
|
|
524
599
|
"Could not get default text color from View Context: "
|
|
@@ -655,39 +730,16 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|
|
655
730
|
view.setFilters(newFilters);
|
|
656
731
|
}
|
|
657
732
|
|
|
658
|
-
@ReactProp(name = "
|
|
659
|
-
public void setTextContentType(ReactEditText view, @Nullable String
|
|
660
|
-
if (
|
|
733
|
+
@ReactProp(name = "autoComplete")
|
|
734
|
+
public void setTextContentType(ReactEditText view, @Nullable String autoComplete) {
|
|
735
|
+
if (autoComplete == null) {
|
|
661
736
|
setImportantForAutofill(view, View.IMPORTANT_FOR_AUTOFILL_NO);
|
|
662
|
-
} else if ("
|
|
663
|
-
setAutofillHints(view, View.AUTOFILL_HINT_USERNAME);
|
|
664
|
-
} else if ("password".equals(autoCompleteType)) {
|
|
665
|
-
setAutofillHints(view, View.AUTOFILL_HINT_PASSWORD);
|
|
666
|
-
} else if ("email".equals(autoCompleteType)) {
|
|
667
|
-
setAutofillHints(view, View.AUTOFILL_HINT_EMAIL_ADDRESS);
|
|
668
|
-
} else if ("name".equals(autoCompleteType)) {
|
|
669
|
-
setAutofillHints(view, View.AUTOFILL_HINT_NAME);
|
|
670
|
-
} else if ("tel".equals(autoCompleteType)) {
|
|
671
|
-
setAutofillHints(view, View.AUTOFILL_HINT_PHONE);
|
|
672
|
-
} else if ("street-address".equals(autoCompleteType)) {
|
|
673
|
-
setAutofillHints(view, View.AUTOFILL_HINT_POSTAL_ADDRESS);
|
|
674
|
-
} else if ("postal-code".equals(autoCompleteType)) {
|
|
675
|
-
setAutofillHints(view, View.AUTOFILL_HINT_POSTAL_CODE);
|
|
676
|
-
} else if ("cc-number".equals(autoCompleteType)) {
|
|
677
|
-
setAutofillHints(view, View.AUTOFILL_HINT_CREDIT_CARD_NUMBER);
|
|
678
|
-
} else if ("cc-csc".equals(autoCompleteType)) {
|
|
679
|
-
setAutofillHints(view, View.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE);
|
|
680
|
-
} else if ("cc-exp".equals(autoCompleteType)) {
|
|
681
|
-
setAutofillHints(view, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE);
|
|
682
|
-
} else if ("cc-exp-month".equals(autoCompleteType)) {
|
|
683
|
-
setAutofillHints(view, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH);
|
|
684
|
-
} else if ("cc-exp-year".equals(autoCompleteType)) {
|
|
685
|
-
setAutofillHints(view, View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR);
|
|
686
|
-
} else if ("off".equals(autoCompleteType)) {
|
|
737
|
+
} else if ("off".equals(autoComplete)) {
|
|
687
738
|
setImportantForAutofill(view, View.IMPORTANT_FOR_AUTOFILL_NO);
|
|
739
|
+
} else if (REACT_PROPS_AUTOFILL_HINTS_MAP.containsKey(autoComplete)) {
|
|
740
|
+
setAutofillHints(view, REACT_PROPS_AUTOFILL_HINTS_MAP.get(autoComplete));
|
|
688
741
|
} else {
|
|
689
|
-
throw new JSApplicationIllegalArgumentException(
|
|
690
|
-
"Invalid autoCompleteType: " + autoCompleteType);
|
|
742
|
+
throw new JSApplicationIllegalArgumentException("Invalid autoComplete: " + autoComplete);
|
|
691
743
|
}
|
|
692
744
|
}
|
|
693
745
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
package com.facebook.react.views.view;
|
|
9
|
+
|
|
10
|
+
import android.annotation.SuppressLint;
|
|
11
|
+
import android.graphics.Canvas;
|
|
12
|
+
import android.os.Build;
|
|
13
|
+
import java.lang.reflect.InvocationTargetException;
|
|
14
|
+
import java.lang.reflect.Method;
|
|
15
|
+
import javax.annotation.Nullable;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Copied from <a
|
|
19
|
+
* href="https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/CanvasUtils.android.kt;drc=3b2dde134afab8d58b9c39ad4820eaf9a6e014a9">
|
|
20
|
+
* Compose canvas utils </a>
|
|
21
|
+
*/
|
|
22
|
+
public class CanvasUtil {
|
|
23
|
+
private CanvasUtil() {}
|
|
24
|
+
|
|
25
|
+
private @Nullable static Method mReorderBarrierMethod = null;
|
|
26
|
+
private @Nullable static Method mInorderBarrierMethod = null;
|
|
27
|
+
private static boolean mOrderMethodsFetched = false;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Enables Z support for the Canvas. The method is publicly available starting from API 29 and was
|
|
31
|
+
* hidden before, so we have to resort to reflection tricks to ensure we can use this API.
|
|
32
|
+
*/
|
|
33
|
+
@SuppressLint({"SoonBlockedPrivateApi", "PrivateApi"})
|
|
34
|
+
public static void enableZ(Canvas canvas, boolean enable) {
|
|
35
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (Build.VERSION.SDK_INT >= 29) {
|
|
40
|
+
if (enable) {
|
|
41
|
+
canvas.enableZ();
|
|
42
|
+
} else {
|
|
43
|
+
canvas.disableZ();
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
fetchOrderMethods();
|
|
47
|
+
try {
|
|
48
|
+
if (enable && mReorderBarrierMethod != null) {
|
|
49
|
+
mReorderBarrierMethod.invoke(canvas);
|
|
50
|
+
}
|
|
51
|
+
if (!enable && mInorderBarrierMethod != null) {
|
|
52
|
+
mInorderBarrierMethod.invoke(canvas);
|
|
53
|
+
}
|
|
54
|
+
} catch (IllegalAccessException | InvocationTargetException ignore) {
|
|
55
|
+
// Do nothing
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private static void fetchOrderMethods() {
|
|
61
|
+
if (!mOrderMethodsFetched) {
|
|
62
|
+
try {
|
|
63
|
+
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) {
|
|
64
|
+
// use double reflection to avoid grey list on P
|
|
65
|
+
Method getDeclaredMethod =
|
|
66
|
+
Class.class.getDeclaredMethod("getDeclaredMethod", String.class, Class[].class);
|
|
67
|
+
mReorderBarrierMethod =
|
|
68
|
+
(Method) getDeclaredMethod.invoke(Canvas.class, "insertReorderBarrier", new Class[0]);
|
|
69
|
+
mInorderBarrierMethod =
|
|
70
|
+
(Method) getDeclaredMethod.invoke(Canvas.class, "insertInorderBarrier", new Class[0]);
|
|
71
|
+
} else {
|
|
72
|
+
mReorderBarrierMethod = Canvas.class.getDeclaredMethod("insertReorderBarrier");
|
|
73
|
+
mInorderBarrierMethod = Canvas.class.getDeclaredMethod("insertInorderBarrier");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (mReorderBarrierMethod == null || mInorderBarrierMethod == null) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
mReorderBarrierMethod.setAccessible(true);
|
|
81
|
+
mInorderBarrierMethod.setAccessible(true);
|
|
82
|
+
} catch (IllegalAccessException ignore) {
|
|
83
|
+
// Do nothing
|
|
84
|
+
} catch (InvocationTargetException ignore) {
|
|
85
|
+
// Do nothing
|
|
86
|
+
} catch (NoSuchMethodException ignore) {
|
|
87
|
+
// Do nothing
|
|
88
|
+
}
|
|
89
|
+
mOrderMethodsFetched = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java
CHANGED
|
@@ -89,6 +89,7 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
|
|
89
89
|
private @Nullable Path mOuterClipPathForBorderRadius;
|
|
90
90
|
private @Nullable Path mPathForBorderRadiusOutline;
|
|
91
91
|
private @Nullable Path mPathForBorder;
|
|
92
|
+
private Path mPathForSingleBorder = new Path();
|
|
92
93
|
private @Nullable Path mCenterDrawPath;
|
|
93
94
|
private @Nullable RectF mInnerClipTempRectForBorderRadius;
|
|
94
95
|
private @Nullable RectF mOuterClipTempRectForBorderRadius;
|
|
@@ -968,6 +969,14 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
|
|
968
969
|
mPaint.setPathEffect(mPathEffectForBorderStyle);
|
|
969
970
|
}
|
|
970
971
|
|
|
972
|
+
private void updatePathEffect(int borderWidth) {
|
|
973
|
+
PathEffect pathEffectForBorderStyle = null;
|
|
974
|
+
if (mBorderStyle != null) {
|
|
975
|
+
pathEffectForBorderStyle = BorderStyle.getPathEffect(mBorderStyle, borderWidth);
|
|
976
|
+
}
|
|
977
|
+
mPaint.setPathEffect(pathEffectForBorderStyle);
|
|
978
|
+
}
|
|
979
|
+
|
|
971
980
|
/** For rounded borders we use default "borderWidth" property. */
|
|
972
981
|
public float getFullBorderWidth() {
|
|
973
982
|
return (mBorderWidth != null && !YogaConstants.isUndefined(mBorderWidth.getRaw(Spacing.ALL)))
|
|
@@ -1083,6 +1092,7 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
|
|
1083
1092
|
colorTop,
|
|
1084
1093
|
colorRight,
|
|
1085
1094
|
colorBottom);
|
|
1095
|
+
|
|
1086
1096
|
if (fastBorderColor != 0) {
|
|
1087
1097
|
if (Color.alpha(fastBorderColor) != 0) {
|
|
1088
1098
|
// Border color is not transparent.
|
|
@@ -1090,21 +1100,42 @@ public class ReactViewBackgroundDrawable extends Drawable {
|
|
|
1090
1100
|
int bottom = bounds.bottom;
|
|
1091
1101
|
|
|
1092
1102
|
mPaint.setColor(fastBorderColor);
|
|
1103
|
+
mPaint.setStyle(Paint.Style.STROKE);
|
|
1093
1104
|
if (borderLeft > 0) {
|
|
1094
|
-
|
|
1095
|
-
|
|
1105
|
+
mPathForSingleBorder.reset();
|
|
1106
|
+
int width = Math.round(borderWidth.left);
|
|
1107
|
+
updatePathEffect(width);
|
|
1108
|
+
mPaint.setStrokeWidth(width);
|
|
1109
|
+
mPathForSingleBorder.moveTo(left, top - borderWidth.top / 2);
|
|
1110
|
+
mPathForSingleBorder.lineTo(left, bottom + borderWidth.bottom / 2);
|
|
1111
|
+
canvas.drawPath(mPathForSingleBorder, mPaint);
|
|
1096
1112
|
}
|
|
1097
1113
|
if (borderTop > 0) {
|
|
1098
|
-
|
|
1099
|
-
|
|
1114
|
+
mPathForSingleBorder.reset();
|
|
1115
|
+
int width = Math.round(borderWidth.top);
|
|
1116
|
+
updatePathEffect(width);
|
|
1117
|
+
mPaint.setStrokeWidth(width);
|
|
1118
|
+
mPathForSingleBorder.moveTo(left, top);
|
|
1119
|
+
mPathForSingleBorder.lineTo(right, top);
|
|
1120
|
+
canvas.drawPath(mPathForSingleBorder, mPaint);
|
|
1100
1121
|
}
|
|
1101
1122
|
if (borderRight > 0) {
|
|
1102
|
-
|
|
1103
|
-
|
|
1123
|
+
mPathForSingleBorder.reset();
|
|
1124
|
+
int width = Math.round(borderWidth.right);
|
|
1125
|
+
updatePathEffect(width);
|
|
1126
|
+
mPaint.setStrokeWidth(width);
|
|
1127
|
+
mPathForSingleBorder.moveTo(right, top - borderWidth.top / 2);
|
|
1128
|
+
mPathForSingleBorder.lineTo(right, bottom + borderWidth.bottom / 2);
|
|
1129
|
+
canvas.drawPath(mPathForSingleBorder, mPaint);
|
|
1104
1130
|
}
|
|
1105
1131
|
if (borderBottom > 0) {
|
|
1106
|
-
|
|
1107
|
-
|
|
1132
|
+
mPathForSingleBorder.reset();
|
|
1133
|
+
int width = Math.round(borderWidth.bottom);
|
|
1134
|
+
updatePathEffect(width);
|
|
1135
|
+
mPaint.setStrokeWidth(width);
|
|
1136
|
+
mPathForSingleBorder.moveTo(left, bottom);
|
|
1137
|
+
mPathForSingleBorder.lineTo(right, bottom);
|
|
1138
|
+
canvas.drawPath(mPathForSingleBorder, mPaint);
|
|
1108
1139
|
}
|
|
1109
1140
|
}
|
|
1110
1141
|
} else {
|