react-native-tvos 0.79.3-0 → 0.80.0-0
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/Alert/Alert.d.ts +4 -1
- package/Libraries/Alert/Alert.js +3 -0
- package/Libraries/Alert/RCTAlertManager.js +17 -0
- package/Libraries/Animated/Animated.js.flow +1 -3
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js +2 -2
- package/Libraries/Animated/AnimatedExports.js.flow +140 -0
- package/Libraries/Animated/AnimatedImplementation.js +2 -123
- package/Libraries/Animated/Easing.js +13 -15
- package/Libraries/Animated/animations/Animation.js +8 -4
- package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
- package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
- package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
- package/Libraries/Animated/createAnimatedComponent.js +105 -57
- package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
- package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
- package/Libraries/AppDelegate/RCTAppSetupUtils.h +2 -0
- package/Libraries/AppDelegate/RCTAppSetupUtils.mm +6 -0
- package/Libraries/AppDelegate/RCTArchConfiguratorProtocol.h +4 -4
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +6 -5
- package/Libraries/AppDelegate/RCTDependencyProvider.h +2 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +4 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +54 -40
- package/Libraries/AppDelegate/RCTRootViewFactory.h +9 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +14 -6
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +2 -11
- package/Libraries/AppState/AppState.js +7 -2
- package/Libraries/BatchedBridge/MessageQueue.js +2 -2
- package/Libraries/BatchedBridge/NativeModules.js +2 -0
- package/Libraries/Blob/BlobManager.js +1 -0
- package/Libraries/Blob/FileReader.js +219 -8
- package/Libraries/Blob/RCTBlobCollector.mm +1 -1
- package/Libraries/Blob/RCTBlobManager.h +0 -4
- package/Libraries/Blob/RCTBlobManager.mm +4 -21
- package/Libraries/Blob/RCTFileReaderModule.mm +2 -2
- package/Libraries/Blob/React-RCTBlob.podspec +4 -14
- package/Libraries/Blob/URL.js +24 -11
- package/Libraries/Blob/URLSearchParams.js +106 -31
- package/Libraries/Blob/URLSearchParams.js.flow +12 -7
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
- package/Libraries/Components/Button.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
- package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
- package/Libraries/Components/Keyboard/Keyboard.js +5 -3
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
- package/Libraries/Components/Pressable/Pressable.js +23 -7
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
- package/Libraries/Components/ScrollView/ScrollView.js +132 -122
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/Switch/Switch.d.ts +3 -0
- package/Libraries/Components/Switch/Switch.js +8 -4
- package/Libraries/Components/TV/TVEventControl.js +3 -1
- package/Libraries/Components/TV/TVEventHandler.js +21 -13
- package/Libraries/Components/TV/TVFocusEventHandler.js +1 -1
- package/Libraries/Components/TV/TVFocusGuideView.js +3 -8
- package/Libraries/Components/TV/tagForComponentOrHandle.js +2 -2
- package/Libraries/Components/TV/useTVEventHandler.js +1 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -13
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
- package/Libraries/Components/TextInput/TextInput.d.ts +76 -33
- package/Libraries/Components/TextInput/TextInput.flow.js +106 -55
- package/Libraries/Components/TextInput/TextInput.js +94 -1029
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
- package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
- package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
- package/Libraries/Components/Touchable/Touchable.js +5 -5
- package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
- package/Libraries/Components/Touchable/TouchableHighlight.js +14 -10
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
- package/Libraries/Components/Touchable/TouchableOpacity.js +14 -7
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
- package/Libraries/Components/View/View.js +21 -23
- package/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
- package/Libraries/Components/View/ViewAccessibility.js +25 -1
- package/Libraries/Components/View/ViewNativeComponent.js +2 -2
- package/Libraries/Components/View/ViewPropTypes.d.ts +16 -0
- package/Libraries/Components/View/ViewPropTypes.js +49 -3
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/setUpReactDevTools.js +5 -5
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
- package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
- package/Libraries/Image/AssetSourceResolver.js +17 -4
- package/Libraries/Image/Image.d.ts +26 -10
- package/Libraries/Image/Image.js +17 -0
- package/Libraries/Image/Image.js.flow +5 -5
- package/Libraries/Image/ImageBackground.js +2 -0
- package/Libraries/Image/ImageInjection.js +1 -1
- package/Libraries/Image/ImageProps.js +22 -17
- package/Libraries/Image/ImageSource.js +3 -1
- package/Libraries/Image/ImageSourceUtils.js +4 -2
- package/Libraries/Image/ImageTypes.flow.js +1 -1
- package/Libraries/Image/RCTImageLoader.mm +63 -19
- package/Libraries/Image/RCTImageStoreManager.mm +10 -32
- package/Libraries/Image/RCTImageURLLoader.h +19 -1
- package/Libraries/Image/RCTUIImageViewAnimated.mm +6 -23
- package/Libraries/Image/React-RCTImage.podspec +2 -7
- package/Libraries/Interaction/InteractionManager.d.ts +13 -0
- package/Libraries/Interaction/InteractionManager.js +1 -1
- package/Libraries/Interaction/PanResponder.js +3 -3
- package/Libraries/Interaction/TaskQueue.js +1 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -6
- package/Libraries/Lists/FlatList.d.ts +2 -2
- package/Libraries/Lists/FlatList.js +8 -11
- package/Libraries/Lists/SectionList.js +39 -42
- package/Libraries/Lists/SectionListModern.js +25 -34
- package/Libraries/Lists/VirtualizedList.js +1 -0
- package/Libraries/Lists/VirtualizedSectionList.js +1 -0
- package/Libraries/LogBox/Data/LogBoxData.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
- package/Libraries/Modal/Modal.js +33 -7
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +118 -124
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +4 -7
- package/Libraries/NativeComponent/BaseViewConfig.android.js +8 -6
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
- package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
- package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
- package/Libraries/Network/RCTDataRequestHandler.mm +10 -6
- package/Libraries/Network/RCTFileRequestHandler.mm +11 -7
- package/Libraries/Network/RCTHTTPRequestHandler.mm +1 -2
- package/Libraries/Network/RCTInspectorNetworkReporter.h +32 -0
- package/Libraries/Network/RCTInspectorNetworkReporter.mm +88 -0
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.h +0 -4
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js +17 -0
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.mm +32 -33
- package/Libraries/Network/React-RCTNetwork.podspec +6 -7
- package/Libraries/Network/XMLHttpRequest.js +781 -10
- package/Libraries/Performance/Systrace.js +7 -7
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -6
- package/Libraries/ReactNative/AppContainer-dev.js +10 -9
- package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
- package/Libraries/ReactNative/AppRegistry.js +2 -322
- package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
- package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
- package/Libraries/ReactNative/FabricUIManager.js +10 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
- package/Libraries/ReactNative/RendererImplementation.js +10 -5
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
- package/Libraries/ReactNative/renderApplication.js +9 -0
- package/Libraries/ReactNativeDependencies/Package.swift +2 -2
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
- package/Libraries/Settings/React-RCTSettings.podspec +3 -7
- package/Libraries/Settings/Settings.ios.js +1 -0
- package/Libraries/Settings/Settings.js +13 -19
- package/Libraries/Settings/SettingsFallback.js +33 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
- package/Libraries/StyleSheet/Rect.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.js +31 -200
- package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
- package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
- package/Libraries/StyleSheet/flattenStyle.js +14 -4
- package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
- package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
- package/Libraries/Text/Text/RCTDynamicTypeRamp.mm +1 -1
- package/Libraries/Text/Text.d.ts +2 -5
- package/Libraries/Text/Text.js +3 -3
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +11 -0
- package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +96 -0
- package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +1 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +4 -4
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +11 -0
- package/Libraries/Text/TextNativeComponent.js +0 -4
- package/Libraries/Text/TextProps.js +5 -33
- package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
- package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
- package/Libraries/Types/CoreEventTypes.d.ts +10 -1
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Utilities/Appearance.js +2 -0
- package/Libraries/Utilities/BackHandler.ios.js +9 -4
- package/Libraries/Utilities/BackHandler.js +17 -0
- package/Libraries/Utilities/DeviceInfo.js +2 -0
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/Platform.js +17 -0
- package/Libraries/Utilities/PlatformTypes.js +11 -3
- package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
- package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
- package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
- package/Libraries/Utilities/setAndForwardRef.js +6 -6
- package/Libraries/Vibration/React-RCTVibration.podspec +3 -7
- package/Libraries/WebSocket/WebSocket.js +313 -8
- package/Libraries/vendor/core/ErrorUtils.js +28 -2
- package/Libraries/vendor/emitter/EventEmitter.js +6 -2
- package/README-core.md +0 -3
- package/React/Base/RCTBridge.h +5 -3
- package/React/Base/RCTBridge.mm +95 -13
- package/React/Base/RCTBridgeProxy.mm +1 -1
- package/React/Base/RCTUtils.h +8 -5
- package/React/Base/{RCTUtils.m → RCTUtils.mm} +55 -28
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +3 -8
- package/React/CoreModules/RCTAccessibilityManager.mm +9 -11
- package/React/CoreModules/RCTAppState.mm +11 -9
- package/React/CoreModules/RCTAppearance.mm +2 -14
- package/React/CoreModules/RCTDevSettings.mm +0 -1
- package/React/CoreModules/RCTDeviceInfo.mm +50 -19
- package/React/CoreModules/RCTLogBox.mm +1 -1
- package/React/CoreModules/RCTPerfMonitor.mm +1 -1
- package/React/CoreModules/RCTPlatform.mm +25 -20
- package/React/CoreModules/RCTStatusBarManager.mm +18 -13
- package/React/CoreModules/RCTTVNavigationEventEmitter.mm +0 -2
- package/React/CoreModules/React-CoreModules.podspec +4 -18
- package/React/CxxBridge/RCTCxxBridge.mm +6 -18
- package/React/CxxModule/RCTNativeModule.mm +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +173 -133
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +600 -425
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +3 -4
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.h +1 -1
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +2 -4
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +31 -0
- package/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm +12 -0
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.h +1 -1
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm +13 -8
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +62 -15
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +47 -4
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewAccessibilityElement.h +28 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewAccessibilityElement.mm +83 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +11 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +127 -29
- package/React/Fabric/Mounting/RCTComponentViewFactory.h +0 -6
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +36 -31
- package/React/Fabric/RCTScheduler.mm +6 -0
- package/React/Fabric/Utils/RCTBoxShadow.h +2 -4
- package/React/Fabric/Utils/RCTBoxShadow.mm +92 -224
- package/React/Fabric/Utils/RCTGradientUtils.h +21 -0
- package/React/Fabric/Utils/RCTGradientUtils.mm +204 -0
- package/React/Fabric/Utils/RCTLinearGradient.mm +3 -192
- package/React/Fabric/Utils/{RCTViewFinder.h → RCTRadialGradient.h} +3 -2
- package/React/Fabric/Utils/RCTRadialGradient.mm +229 -0
- package/React/Profiler/RCTProfile.m +1 -1
- package/React/React-RCTFBReactNativeSpec.podspec +3 -13
- package/React/React-RCTFabric.podspec +6 -14
- package/React/Runtime/React-RCTRuntime.podspec +4 -18
- package/React/Views/RCTBorderDrawing.h +5 -2
- package/React/Views/RCTBorderDrawing.m +29 -12
- package/React/Views/RCTFont.mm +0 -4
- package/React/Views/RCTView.m +4 -4
- package/React/Views/ScrollView/RCTScrollView.m +1 -1
- package/React-Core.podspec +4 -20
- package/ReactAndroid/api/ReactAndroid.api +617 -1147
- package/ReactAndroid/build.gradle.kts +4 -2
- package/ReactAndroid/cmake-utils/ReactNative-application.cmake +9 -15
- package/ReactAndroid/external-artifacts/build.gradle.kts +6 -4
- package/ReactAndroid/gradle.properties +4 -2
- package/ReactAndroid/hermes-engine/build.gradle.kts +7 -4
- package/ReactAndroid/proguard-rules.pro +0 -6
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutor.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/BaseReactPackage.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +11 -2
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.kt +56 -0
- package/ReactAndroid/src/main/java/com/facebook/react/HeadlessJsTaskService.kt +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/JSEngineResolutionAlgorithm.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +14 -3
- package/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.kt +54 -0
- package/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.kt +15 -4
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +20 -8
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +4 -12
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +88 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +20 -56
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +41 -42
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +9 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackage.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageHelper.kt +0 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageLogger.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +12 -12
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNodeValueListener.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ColorAnimatedNode.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +1072 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +774 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ActivityEventListener.kt +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +9 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseActivityEventListener.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +14 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeSoLoader.kt +36 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +17 -13
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.kt +214 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +56 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.kt +61 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.kt +80 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromObject.kt +80 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicNative.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedAsyncTask.kt +42 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedRunnable.kt +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt +78 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.kt +99 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSInstance.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSONArguments.kt +118 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java +13 -5
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +142 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptContextHolder.kt +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptModuleRegistry.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriterHelper.kt +129 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/LifecycleEventListener.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +8 -5
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeArgumentsParseException.kt +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeArray.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeMap.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +18 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/PromiseImpl.java +9 -8
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactApplicationContext.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +5 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +48 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactIgnorableMountingException.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.java +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMethod.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactModuleWithSpec.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashBridgeNotAllowedSoftException.kt +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableArrayBuilder.kt +61 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableMapBuilder.kt +61 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Systrace.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.kt +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManagerProvider.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.kt +69 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt +13 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadHandler.kt +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClassFinder.kt +3 -4
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/LegacyArchitectureShadowNodeWithCxxImpl.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/internal/InteropLegacyArchitecture.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/internal/LegacyArchitecture.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/internal/LegacyArchitectureLogger.kt +66 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/WritableMapBuffer.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +10 -12
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +98 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.kt +81 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.kt +323 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ChangeBundleLocationDialog.kt +118 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +159 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugOverlayController.kt +87 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +413 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +903 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +57 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DoubleTapReloadRecognizer.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/MultipartStreamReader.kt +167 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReactInstanceDevHelper.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.kt +10 -16
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.kt +251 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevBundleDownloadListener.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +11 -13
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/RedBoxHandler.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/StackFrame.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +176 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricSoLoader.kt +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +177 -86
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.kt +6 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.kt +103 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.kt +13 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.kt +8 -12
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +5 -9
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +7 -15
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/interop/UIBlock.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/interop/UIBlockViewResolver.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/LayoutMetricsConversions.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +16 -39
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +24 -25
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +12 -5
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/BatchMountItem.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchCommandMountItem.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.kt +335 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItemFactory.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEventMountItem.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/TaskInterface.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +16 -16
- package/ReactAndroid/src/main/java/com/facebook/react/internal/SystraceSection.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +75 -60
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +120 -100
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +25 -21
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +27 -23
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +135 -113
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +25 -21
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlags.kt +84 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEvent.kt +14 -4
- package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +12 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleInteropUtils.kt +293 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +405 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +63 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModulePerfLogger.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutor.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutorFactory.kt +7 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskEventListener.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt +13 -12
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +336 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +113 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/FileReaderModule.kt +99 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/HeadlessJsTaskSupportModule.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JSTimers.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/PermissionAwareActivity.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/PermissionListener.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevMenuModule.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.kt +14 -8
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/SourceCodeModule.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +12 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.kt +209 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.kt +205 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/SystraceRequestListener.kt +18 -18
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.kt +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +11 -22
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.kt +35 -29
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +846 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpCompat.java +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressResponseBody.kt +57 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/share/ShareModule.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/SoundManagerModule.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +13 -12
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.kt +14 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.kt +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +20 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/ToastModule.kt +7 -11
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/FileIoHandler.kt +161 -0
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.kt +130 -0
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +10 -2
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.kt +156 -0
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/RequestOnlyHandler.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessAtomicRef.kt +112 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +10 -4
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +159 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactStateTracker.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +113 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +97 -75
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +11 -10
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +599 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactLifecycleStateManager.kt +91 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceImpl.kt +217 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +12 -11
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/cxxreactpackage/CxxReactPackage.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Continuation.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Task.kt +418 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/TaskCompletionSource.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +31 -25
- package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/touch/JSResponderHandler.kt +9 -9
- package/ReactAndroid/src/main/java/com/facebook/react/touch/OnInterceptTouchEventListener.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactHitSlopView.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactInterceptingViewGroup.kt +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/CallInvokerHolderImpl.kt +2 -11
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/NativeMethodCallInvokerHolderImpl.kt +3 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +7 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +64 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +7 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolver.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +59 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutDirectionUtil.kt +7 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt +1 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +13 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +11 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NoSuchNativeViewException.kt +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/OnLayoutEvent.kt +93 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +16 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +146 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroup.kt +11 -9
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroupHelper.kt +63 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactCompoundView.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactStylesDiffMap.kt +68 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactYogaConfigProvider.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReferenceStateWrapper.kt +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.kt +103 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/Spacing.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java +8 -11
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +435 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +223 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +19 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +14 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +31 -15
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.kt +92 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +17 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleListener.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +27 -22
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupDrawingOrderHelper.kt +109 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.kt +87 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +22 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt +7 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java +9 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/YogaNodePool.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactProp.kt +97 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactPropGroup.kt +86 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactPropertyHolder.kt +15 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/UIManagerType.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/debug/NotThreadSafeViewHierarchyUpdateDebugListener.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +8 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutlineDrawable.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlackHoleEventDispatcher.kt +3 -17
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlurEvent.kt +16 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.kt +206 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +1 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +16 -43
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{ReactEventEmitter.kt → EventEmitterImpl.kt} +39 -47
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +33 -43
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FocusEvent.kt +16 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +27 -31
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +11 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +12 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/internal/LegacyArchitectureShadowNodeLogger.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AbstractLayoutAnimation.kt +128 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/BaseLayoutAnimation.kt +85 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +225 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationListener.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.kt +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutCreateAnimation.kt +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutDeleteAnimation.kt +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutHandlingAnimation.kt +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutUpdateAnimation.kt +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/OpacityAnimation.kt +69 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/PositionAndSizeAnimation.kt +87 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/SimpleSpringInterpolator.kt +10 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundImageLayer.kt +30 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +36 -22
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt +206 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/CornerRadii.kt +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/Gradient.kt +2 -38
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/LinearGradient.kt +72 -246
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/RadialGradient.kt +375 -0
- package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/react/util/JSStackTrace.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlay.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.kt +7 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ImageSource.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/MultiSourceHelper.kt +7 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.kt +20 -17
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +20 -28
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +43 -41
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/RequestCloseEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarShadowNode.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +14 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaViewManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaViewShadowNode.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +172 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +27 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +366 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +36 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +74 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +390 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.kt +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/RefreshEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayout.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextView.kt +418 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextViewManager.kt +212 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +25 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextShadowNode.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.kt +207 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +40 -54
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt +4 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +9 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextShadowNode.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextViewManager.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +30 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributes.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +237 -121
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextTransform.kt +8 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.kt +140 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageSpan.kt +174 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLetterSpacingSpan.kt +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactAbsoluteSizeSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactBackgroundColorSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactClickableSpan.kt +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactForegroundColorSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactOpacitySpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTagSpan.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTextPaintHolderSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineImageSpan.kt +11 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineViewPlaceholderSpan.kt +4 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +1331 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.kt +151 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextContentSizeWatcher.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.kt +43 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.kt +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputLocalData.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +1139 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.kt +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.kt +210 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.kt +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputTextWatcher.kt +66 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextScrollWatcher.kt +49 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextSelectionWatcher.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/ReactUnimplementedView.kt +12 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/ReactUnimplementedViewManager.kt +6 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/MeasureUtil.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +37 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +51 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ViewGroupClickEvent.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt +19 -23
- package/ReactAndroid/src/main/java/com/facebook/systrace/SystraceMessage.kt +10 -11
- package/ReactAndroid/src/main/java/com/facebook/systrace/TraceListener.kt +3 -3
- package/ReactAndroid/src/main/jni/CMakeLists.txt +22 -9
- package/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt +3 -0
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/jni_lib_merge.h +1 -2
- package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +4 -7
- package/ReactAndroid/src/main/jni/react/devsupport/CMakeLists.txt +3 -2
- package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +2 -9
- package/ReactAndroid/src/main/jni/react/fabric/EventBeatManager.cpp +3 -8
- package/ReactAndroid/src/main/jni/react/fabric/EventBeatManager.h +1 -9
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +12 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +4 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +130 -13
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +9 -0
- package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +186 -0
- package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.h +38 -0
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +10 -0
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
- package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +5 -2
- package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.h +2 -1
- package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +2 -10
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +166 -138
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +34 -28
- package/ReactAndroid/src/main/jni/react/hermes/instrumentation/CMakeLists.txt +2 -5
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +3 -7
- package/ReactAndroid/src/main/jni/react/hermes/tooling/CMakeLists.txt +2 -0
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +54 -6
- package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +14 -18
- package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +10 -17
- package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.cpp +9 -14
- package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +33 -0
- package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +0 -15
- package/ReactAndroid/src/main/jni/react/jni/SafeReleaseJniRef.cpp +30 -0
- package/ReactAndroid/src/main/jni/react/jni/SafeReleaseJniRef.h +12 -1
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +3 -3
- package/ReactAndroid/src/main/jni/react/jscexecutor/CMakeLists.txt +2 -0
- package/ReactAndroid/src/main/jni/react/jsctooling/CMakeLists.txt +2 -0
- package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +3 -2
- package/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt +3 -6
- package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +10 -0
- package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h +4 -0
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +4 -1
- package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/react/runtime/cxxreactpackage/CMakeLists.txt +4 -7
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +4 -8
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +5 -7
- package/ReactAndroid/src/main/jni/react/runtime/jni/JBindingsInstaller.h +2 -4
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +0 -4
- package/ReactAndroid/src/main/jni/react/runtime/jsc/jni/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +4 -7
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CallInvokerHolder.cpp +1 -7
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CallInvokerHolder.h +4 -3
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/NativeMethodCallInvokerHolder.cpp +1 -8
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/NativeMethodCallInvokerHolder.h +4 -3
- package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +3 -2
- package/ReactAndroid/src/main/jni/third-party/boost/CMakeLists.txt +1 -0
- package/ReactAndroid/src/main/jni/third-party/double-conversion/CMakeLists.txt +4 -1
- package/ReactAndroid/src/main/jni/third-party/fast_float/CMakeLists.txt +2 -1
- package/ReactAndroid/src/main/jni/third-party/fmt/CMakeLists.txt +2 -1
- package/ReactAndroid/src/main/jni/third-party/glog/CMakeLists.txt +14 -9
- package/ReactAndroid/src/main/res/devsupport/values/strings.xml +5 -0
- package/ReactAndroid/src/main/res/devsupport/values-am/strings.xml +6 -0
- package/ReactAndroid/src/main/res/shell/values/styles.xml +4 -4
- package/ReactAndroid/src/main/res/systeminfo/values/strings.xml +4 -0
- package/ReactAndroid/src/main/res/systeminfo/values-af/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ar/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-az/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-be/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-bg/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-bn/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ca/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-cs/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-da/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-de/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-el/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-en-rGB/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-es/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-es-rES/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-et/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-fa/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-fi/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-fr/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-fr-rCA/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-gu/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-hi/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-hr/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-hu/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-hy/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-is/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-it/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-iw/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ja/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ka/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-kk/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-km/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-kn/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ko/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ky/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-lo/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-lt/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-lv/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-mk/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ml/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-mn/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-mr/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ms/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-my/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ne/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-nl/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-pa/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-pl/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-pt/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-pt-rPT/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ro/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ru/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-si/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sk/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sl/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sq/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sr/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sv/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-sw/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ta/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-te/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-th/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-tr/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-uk/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-ur/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-vi/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-zh-rCN/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-zh-rHK/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-zh-rTW/strings.xml +6 -0
- package/ReactAndroid/src/main/res/systeminfo/values-zu/strings.xml +6 -0
- package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +15 -0
- package/ReactAndroid/src/main/res/views/uimanager/values-am/strings.xml +6 -0
- package/ReactCommon/React-Fabric.podspec +4 -59
- package/ReactCommon/React-FabricComponents.podspec +4 -40
- package/ReactCommon/React-FabricImage.podspec +2 -19
- package/ReactCommon/React-Mapbuffer.podspec +2 -2
- package/ReactCommon/ReactCommon.podspec +4 -13
- package/ReactCommon/callinvoker/CMakeLists.txt +3 -6
- package/ReactCommon/cmake-utils/react-native-flags.cmake +39 -0
- package/ReactCommon/cxxreact/CMakeLists.txt +4 -6
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +23 -33
- package/ReactCommon/cxxreact/JSExecutor.cpp +5 -2
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +12 -10
- package/ReactCommon/cxxreact/JSModulesUnbundle.h +2 -4
- package/ReactCommon/cxxreact/JsArgumentHelpers-inl.h +28 -21
- package/ReactCommon/cxxreact/JsArgumentHelpers.h +1 -2
- package/ReactCommon/cxxreact/MethodCall.cpp +17 -17
- package/ReactCommon/cxxreact/ModuleRegistry.cpp +15 -12
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +4 -8
- package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +2 -1
- package/ReactCommon/cxxreact/React-cxxreact.podspec +4 -13
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/TraceSection.h +1 -1
- package/ReactCommon/cxxreact/tests/jsarg_helpers.cpp +2 -2
- package/ReactCommon/devtoolsruntimesettings/CMakeLists.txt +4 -9
- package/ReactCommon/hermes/React-hermes.podspec +4 -13
- package/ReactCommon/hermes/executor/CMakeLists.txt +2 -1
- package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +3 -6
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +2 -8
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +2 -8
- package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeSamplingProfileSerializer.cpp +100 -106
- package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.cpp +1 -1
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +2 -8
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +2 -8
- package/ReactCommon/jsc/CMakeLists.txt +4 -7
- package/ReactCommon/jserrorhandler/CMakeLists.txt +2 -1
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +12 -5
- package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +2 -11
- package/ReactCommon/jsi/CMakeLists.txt +5 -6
- package/ReactCommon/jsi/React-jsi.podspec +2 -15
- package/ReactCommon/jsiexecutor/CMakeLists.txt +4 -5
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +4 -14
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +7 -8
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +1 -2
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +7 -6
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +304 -208
- package/ReactCommon/jsinspector-modern/HostAgent.h +8 -48
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +1 -1
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +1 -0
- package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +4 -3
- package/ReactCommon/jsinspector-modern/InstanceAgent.h +1 -1
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +22 -0
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.h +2 -4
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +4 -14
- package/ReactCommon/jsinspector-modern/RuntimeAgent.h +1 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgentDelegate.h +1 -1
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +27 -12
- package/ReactCommon/jsinspector-modern/TracingAgent.h +2 -1
- package/ReactCommon/jsinspector-modern/cdp/CMakeLists.txt +26 -0
- package/ReactCommon/jsinspector-modern/cdp/React-jsinspectorcdp.podspec +50 -0
- package/ReactCommon/jsinspector-modern/network/CMakeLists.txt +27 -0
- package/ReactCommon/jsinspector-modern/network/CdpNetwork.cpp +143 -0
- package/ReactCommon/jsinspector-modern/network/CdpNetwork.h +110 -0
- package/ReactCommon/jsinspector-modern/network/HttpUtils.cpp +157 -0
- package/ReactCommon/jsinspector-modern/network/HttpUtils.h +27 -0
- package/ReactCommon/jsinspector-modern/network/NetworkReporter.cpp +195 -0
- package/ReactCommon/jsinspector-modern/network/NetworkReporter.h +139 -0
- package/ReactCommon/jsinspector-modern/network/NetworkTypes.h +42 -0
- package/ReactCommon/jsinspector-modern/network/React-jsinspectornetwork.podspec +52 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorPackagerConnectionTest.cpp +1 -2
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +12 -0
- package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +3 -6
- package/ReactCommon/jsinspector-modern/tracing/{EventLoopTaskReporter.cpp → EventLoopReporter.cpp} +22 -9
- package/ReactCommon/jsinspector-modern/tracing/{EventLoopTaskReporter.h → EventLoopReporter.h} +13 -7
- package/ReactCommon/jsinspector-modern/tracing/InstanceTracingProfile.h +2 -5
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +55 -42
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +22 -13
- package/ReactCommon/jsinspector-modern/tracing/ProfileTreeNode.h +39 -30
- package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +3 -8
- package/ReactCommon/jsinspector-modern/tracing/RuntimeSamplingProfile.h +16 -0
- package/ReactCommon/jsinspector-modern/tracing/RuntimeSamplingProfileTraceEventSerializer.cpp +186 -162
- package/ReactCommon/jsinspector-modern/tracing/RuntimeSamplingProfileTraceEventSerializer.h +138 -5
- package/ReactCommon/jsinspector-modern/tracing/TraceEventProfile.h +40 -92
- package/ReactCommon/jsinspector-modern/tracing/tests/ProfileTreeNodeTest.cpp +27 -35
- package/ReactCommon/jsinspector-modern/tracing/tests/RuntimeSamplingProfileTraceEventSerializerTest.cpp +290 -0
- package/ReactCommon/jsitooling/CMakeLists.txt +4 -8
- package/ReactCommon/jsitooling/React-jsitooling.podspec +3 -21
- package/ReactCommon/logger/CMakeLists.txt +2 -1
- package/ReactCommon/logger/React-logger.podspec +1 -9
- package/ReactCommon/logger/react_native_log.cpp +2 -2
- package/ReactCommon/oscompat/CMakeLists.txt +2 -1
- package/ReactCommon/react/bridging/CMakeLists.txt +3 -7
- package/ReactCommon/react/debug/CMakeLists.txt +3 -8
- package/ReactCommon/react/featureflags/CMakeLists.txt +4 -9
- package/ReactCommon/react/featureflags/React-featureflags.podspec +2 -7
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +49 -41
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +63 -53
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +223 -187
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +30 -26
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +46 -38
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +100 -82
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +51 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +33 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +33 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +15 -13
- package/ReactCommon/react/nativemodule/core/CMakeLists.txt +3 -8
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +4 -6
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +23 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.h +29 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +12 -18
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +6 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +3 -9
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +29 -2
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +7 -39
- package/ReactCommon/react/nativemodule/cputime/CPUTime.h +30 -2
- package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +3 -7
- package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +3 -10
- package/ReactCommon/react/nativemodule/devtoolsruntimesettings/CMakeLists.txt +3 -7
- package/ReactCommon/react/nativemodule/dom/CMakeLists.txt +3 -7
- package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +2 -8
- package/ReactCommon/react/nativemodule/fantomforcedclonecommithook/NativeFantomForcedCloneCommitHook.cpp +84 -0
- package/ReactCommon/react/nativemodule/fantomforcedclonecommithook/NativeFantomForcedCloneCommitHook.h +30 -0
- package/ReactCommon/react/nativemodule/featureflags/CMakeLists.txt +3 -7
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +58 -48
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +25 -21
- package/ReactCommon/react/nativemodule/featureflags/React-featureflagsnativemodule.podspec +3 -10
- package/ReactCommon/react/nativemodule/idlecallbacks/CMakeLists.txt +3 -8
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +4 -11
- package/ReactCommon/react/nativemodule/microtasks/CMakeLists.txt +3 -7
- package/ReactCommon/react/nativemodule/microtasks/React-microtasksnativemodule.podspec +3 -10
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -17
- package/ReactCommon/react/nativemodule/samples/platform/android/CMakeLists.txt +4 -8
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +3 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +21 -1
- package/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.kt +32 -5
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleLegacyModule.mm +5 -10
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +18 -15
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +53 -9
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +29 -6
- package/ReactCommon/react/performance/timeline/CMakeLists.txt +5 -9
- package/ReactCommon/react/performance/timeline/CircularBuffer.h +0 -1
- package/ReactCommon/react/performance/timeline/PerformanceEntry.h +53 -15
- package/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.cpp +12 -3
- package/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.cpp +5 -2
- package/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h +0 -1
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +29 -33
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
- package/ReactCommon/react/performance/timeline/PerformanceObserver.cpp +8 -3
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +3 -11
- package/ReactCommon/react/performance/timeline/tests/PerformanceEntryReporterTest.cpp +80 -165
- package/ReactCommon/react/performance/timeline/tests/PerformanceObserverTest.cpp +38 -71
- package/ReactCommon/react/renderer/animations/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +5 -9
- package/ReactCommon/react/renderer/attributedstring/AttributedString.cpp +2 -9
- package/ReactCommon/react/renderer/attributedstring/AttributedString.h +3 -3
- package/ReactCommon/react/renderer/attributedstring/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +2 -1
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +8 -1
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +4 -6
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -2
- package/ReactCommon/react/renderer/attributedstring/conversions.h +38 -6
- package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +25 -5
- package/ReactCommon/react/renderer/componentregistry/native/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/image/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h +1 -2
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h +0 -1
- package/ReactCommon/react/renderer/components/modal/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/progressbar/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/rncore/EventEmitters.cpp +48 -48
- package/ReactCommon/react/renderer/components/root/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/safeareaview/CMakeLists.txt +4 -10
- package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +15 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +3 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +1 -0
- package/ReactCommon/react/renderer/components/switch/CMakeLists.txt +4 -10
- package/ReactCommon/react/renderer/components/text/CMakeLists.txt +13 -9
- package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +6 -0
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +111 -25
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +22 -2
- package/ReactCommon/react/renderer/components/text/{ParagraphState.cpp → platform/android/react/renderer/components/text/ParagraphState.cpp} +0 -2
- package/ReactCommon/react/renderer/components/text/{ParagraphState.h → platform/android/react/renderer/components/text/ParagraphState.h} +9 -14
- package/ReactCommon/react/renderer/components/text/platform/cxx/react/renderer/components/text/ParagraphState.h +42 -0
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +8 -1
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +2 -0
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +25 -11
- package/ReactCommon/react/renderer/components/textinput/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +30 -19
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +12 -11
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h +5 -5
- package/ReactCommon/react/renderer/components/unimplementedview/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +1 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +21 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +8 -6
- package/ReactCommon/react/renderer/components/view/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/components/view/ConcreteViewShadowNode.h +16 -6
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +2 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +2 -11
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +0 -2
- package/ReactCommon/react/renderer/components/view/conversions.h +135 -79
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +18 -0
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +1 -0
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +6 -1
- package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +4 -0
- package/ReactCommon/react/renderer/consistency/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/core/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +2 -3
- package/ReactCommon/react/renderer/core/ConcreteState.h +23 -2
- package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +44 -0
- package/ReactCommon/react/renderer/core/DynamicEventPayload.h +30 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +7 -9
- package/ReactCommon/react/renderer/core/EventEmitter.h +2 -3
- package/ReactCommon/react/renderer/core/EventPayload.h +13 -0
- package/ReactCommon/react/renderer/core/EventQueue.cpp +26 -26
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +2 -0
- package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
- package/ReactCommon/react/renderer/core/RawEvent.h +10 -2
- package/ReactCommon/react/renderer/core/RawProps.cpp +1 -99
- package/ReactCommon/react/renderer/core/RawProps.h +0 -11
- package/ReactCommon/react/renderer/core/ReactEventPriority.h +5 -0
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -4
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +3 -0
- package/ReactCommon/react/renderer/core/State.h +2 -0
- package/ReactCommon/react/renderer/core/graphicsConversions.h +25 -17
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +0 -36
- package/ReactCommon/react/renderer/core/tests/TestComponent.h +0 -4
- package/ReactCommon/react/renderer/css/CMakeLists.txt +7 -7
- package/ReactCommon/react/renderer/css/CSSTokenizer.h +12 -49
- package/ReactCommon/react/renderer/css/tests/CSSTokenizerTest.cpp +10 -0
- package/ReactCommon/react/renderer/debug/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +27 -16
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +14 -5
- package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +2 -16
- package/ReactCommon/react/renderer/dom/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/element/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/graphics/BackgroundImage.h +2 -1
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/graphics/ColorStop.h +28 -0
- package/ReactCommon/react/renderer/graphics/LinearGradient.h +1 -12
- package/ReactCommon/react/renderer/graphics/RadialGradient.h +92 -0
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +2 -19
- package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.h +2 -2
- package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.mm +2 -2
- package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +1 -7
- package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -13
- package/ReactCommon/react/renderer/leakchecker/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/mapbuffer/CMakeLists.txt +3 -8
- package/ReactCommon/react/renderer/mounting/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +73 -55
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +5 -0
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +6 -7
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +47 -36
- package/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +3 -1
- package/ReactCommon/react/renderer/mounting/tests/OrderIndexTest.cpp +44 -12
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +39 -6
- package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +41 -12
- package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +2 -1
- package/ReactCommon/react/renderer/observers/events/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/observers/events/EventPerformanceLogger.cpp +0 -25
- package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +5 -2
- package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.h +3 -1
- package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +2 -11
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -20
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +22 -10
- package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +43 -20
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +15 -1
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +4 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +84 -1
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +8 -0
- package/ReactCommon/react/renderer/telemetry/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutContext.h +7 -11
- package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManagerExtended.h +124 -0
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +7 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/JPreparedLayout.h +20 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +126 -19
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +100 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/{TextLayoutManager.cpp → react/renderer/textlayoutmanager/TextLayoutManager.cpp} +1 -18
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/react/renderer/textlayoutmanager/TextLayoutManager.h +57 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.h +3 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +47 -24
- package/ReactCommon/react/renderer/textlayoutmanager/{TextLayoutManager.h → platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h} +2 -29
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -0
- package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +4 -8
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +54 -23
- package/ReactCommon/react/renderer/uimanager/UIManager.h +27 -7
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +11 -1
- package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +19 -1
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +30 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerNativeAnimatedDelegate.h +24 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerUpdateShadowTree.cpp +223 -0
- package/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt +3 -7
- package/ReactCommon/react/renderer/uimanager/consistency/tests/LazyShadowTreeRevisionConsistencyManagerTest.cpp +2 -1
- package/ReactCommon/react/runtime/CMakeLists.txt +4 -7
- package/ReactCommon/react/runtime/React-RuntimeCore.podspec +4 -13
- package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +4 -11
- package/ReactCommon/react/runtime/ReactInstance.cpp +10 -5
- package/ReactCommon/react/runtime/ReactInstance.h +2 -1
- package/ReactCommon/react/runtime/hermes/CMakeLists.txt +2 -1
- package/ReactCommon/react/runtime/iostests/RCTHostTests.mm +1 -0
- package/ReactCommon/react/runtime/nativeviewconfig/CMakeLists.txt +2 -1
- package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +2 -11
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +2 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +17 -5
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.h +2 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +64 -3
- package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
- package/ReactCommon/react/timing/CMakeLists.txt +3 -6
- package/ReactCommon/react/utils/CMakeLists.txt +9 -9
- package/ReactCommon/react/utils/React-utils.podspec +13 -17
- package/ReactCommon/react/utils/platform/android/react/utils/LowPriorityExecutor.cpp +95 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressure.kt → ReactCommon/react/utils/platform/android/react/utils/LowPriorityExecutor.h} +6 -6
- package/ReactCommon/react/utils/platform/cxx/react/utils/LowPriorityExecutor.h +18 -0
- package/ReactCommon/react/utils/platform/ios/react/utils/LowPriorityExecutor.h +16 -0
- package/ReactCommon/react/utils/platform/ios/react/utils/LowPriorityExecutor.mm +22 -0
- package/ReactCommon/reactperflogger/CMakeLists.txt +3 -7
- package/ReactCommon/reactperflogger/React-perflogger.podspec +2 -12
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +7 -3
- package/ReactCommon/runtimeexecutor/CMakeLists.txt +3 -6
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +0 -6
- package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +0 -12
- package/ReactCommon/yoga/cmake/project-defaults.cmake +4 -4
- package/ReactCommon/yoga/yoga/debug/AssertFatal.cpp +1 -0
- package/ReactCommon/yoga/yoga/event/event.h +6 -6
- package/flow/global.js +1 -0
- package/gradle/libs.versions.toml +17 -6
- package/index.js +54 -334
- package/interface.js +0 -4
- package/jest/resolver.js +31 -0
- package/jest-preset.js +1 -0
- package/package.json +105 -34
- package/scripts/cocoapods/fabric.rb +0 -1
- package/scripts/cocoapods/helpers.rb +12 -1
- package/scripts/cocoapods/new_architecture.rb +46 -17
- package/scripts/cocoapods/rndependencies.rb +211 -0
- package/scripts/cocoapods/utils.rb +2 -0
- package/scripts/codegen/generate-artifacts-executor/constants.js +80 -0
- package/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js +66 -0
- package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +116 -0
- package/scripts/codegen/generate-artifacts-executor/generateFBReactNativeSpecIOS.js +39 -0
- package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +114 -0
- package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +120 -0
- package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +223 -0
- package/scripts/codegen/generate-artifacts-executor/generateRNCoreComponentsIOS.js +38 -0
- package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +93 -0
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +113 -0
- package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +92 -0
- package/scripts/codegen/generate-artifacts-executor/index.js +232 -0
- package/scripts/codegen/generate-artifacts-executor/utils.js +399 -0
- package/scripts/codegen/templates/RCTAppDependencyProviderMM.template +5 -0
- package/{React/Base/UIKitProxies/RCTInitializeUIKitProxies.h → scripts/codegen/templates/RCTUnstableModulesRequiringMainQueueSetupProviderH.template} +5 -1
- package/scripts/codegen/templates/RCTUnstableModulesRequiringMainQueueSetupProviderMM.template +19 -0
- package/scripts/codegen/templates/ReactCodegen.podspec.template +2 -8
- package/scripts/generate-codegen-artifacts.js +1 -1
- package/scripts/react_native_pods.rb +18 -7
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-utils.rb +7 -0
- package/sdks/hermes-engine/utils/build-apple-framework.sh +4 -1
- package/sdks/hermes-engine/utils/build-hermes-xcode.sh +4 -3
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/sdks/hermesc/win64-bin/msvcp140.dll +0 -0
- package/sdks/hermesc/win64-bin/vcruntime140.dll +0 -0
- package/sdks/hermesc/win64-bin/vcruntime140_1.dll +0 -0
- package/src/private/animated/NativeAnimatedHelper.js +21 -8
- package/src/private/animated/createAnimatedPropsHook.js +11 -16
- package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
- package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
- package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
- package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
- package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
- package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
- package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
- package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
- package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
- package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
- package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
- package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +72 -80
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +9 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -13
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
- package/src/private/styles/composeStyles.js +12 -5
- package/src/private/types/HostComponent.js +1 -1
- package/src/private/types/HostInstance.js +67 -1
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
- package/src/private/webapis/performance/Performance.js +1 -3
- package/src/private/webapis/performance/PerformanceEntry.js +6 -1
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
- package/src/types/bom.js.flow +96 -0
- package/src/types/cssom.js.flow +576 -0
- package/src/types/dom.js.flow +19 -0
- package/src/types/globals.d.ts +42 -0
- package/src/types/streams.js.flow +141 -0
- package/third-party-podspecs/RCT-Folly.podspec +7 -6
- package/third-party-podspecs/ReactNativeDependencies.podspec +86 -0
- package/third-party-podspecs/fast_float.podspec +2 -2
- package/third-party-podspecs/replace_dependencies_version.js +107 -0
- package/types/index.d.ts +5 -2
- package/types/public/ReactNativeTVTypes.d.ts +42 -42
- package/types/public/ReactNativeTypes.d.ts +2 -2
- package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
- package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
- package/Libraries/Blob/FileReader_new.js +0 -231
- package/Libraries/Blob/FileReader_old.js +0 -186
- package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
- package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
- package/Libraries/Events/CustomEvent.js +0 -32
- package/Libraries/Events/EventPolyfill.js +0 -239
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
- package/Libraries/Network/XMLHttpRequest_new.js +0 -794
- package/Libraries/Network/XMLHttpRequest_old.js +0 -701
- package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -48
- package/Libraries/NewAppScreen/components/Header.js +0 -77
- package/Libraries/NewAppScreen/components/HermesBadge.js +0 -72
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
- package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
- package/Libraries/NewAppScreen/components/logo.png +0 -0
- package/Libraries/NewAppScreen/index.js +0 -25
- package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
- package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
- package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
- package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
- package/Libraries/WebSocket/WebSocketEvent.js +0 -30
- package/Libraries/WebSocket/WebSocket_new.js +0 -325
- package/Libraries/WebSocket/WebSocket_old.js +0 -297
- package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
- package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
- package/React/Base/UIKitProxies/RCTInitialAccessibilityValuesProxy.h +0 -30
- package/React/Base/UIKitProxies/RCTInitialAccessibilityValuesProxy.mm +0 -185
- package/React/Base/UIKitProxies/RCTInitializeUIKitProxies.mm +0 -23
- package/React/Base/UIKitProxies/RCTKeyWindowValuesProxy.h +0 -25
- package/React/Base/UIKitProxies/RCTKeyWindowValuesProxy.mm +0 -129
- package/React/Base/UIKitProxies/RCTTraitCollectionProxy.h +0 -26
- package/React/Base/UIKitProxies/RCTTraitCollectionProxy.mm +0 -80
- package/React/Base/UIKitProxies/RCTWindowSafeAreaProxy.h +0 -26
- package/React/Base/UIKitProxies/RCTWindowSafeAreaProxy.mm +0 -70
- package/React/Fabric/Utils/RCTViewFinder.mm +0 -34
- package/ReactAndroid/src/main/java/com/facebook/annotationprocessors/common/ProcessorBase.kt +0 -23
- package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/KeepGettersAndSetters.kt +0 -24
- package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/proguard_annotations.pro +0 -21
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +0 -84
- package/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java +0 -59
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +0 -1240
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +0 -900
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ActivityEventListener.java +0 -29
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseActivityEventListener.java +0 -29
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.java +0 -234
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java +0 -57
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.java +0 -103
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java +0 -110
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromObject.java +0 -89
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedAsyncTask.java +0 -42
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedRunnable.java +0 -36
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java +0 -110
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/InvalidIteratorException.kt +0 -18
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java +0 -97
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSONArguments.java +0 -110
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +0 -148
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptContextHolder.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriterHelper.java +0 -155
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.kt +0 -48
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java +0 -75
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/bridge.pro +0 -12
- package/ReactAndroid/src/main/java/com/facebook/react/common/SingleThreadAsserter.kt +0 -23
- package/ReactAndroid/src/main/java/com/facebook/react/common/StandardCharsets.kt +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +0 -128
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.java +0 -124
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.java +0 -313
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.java +0 -174
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugOverlayController.java +0 -117
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +0 -495
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +0 -1121
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +0 -56
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportSoLoader.kt +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java +0 -244
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/MultipartStreamReader.java +0 -166
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReactInstanceDevHelper.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +0 -300
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSplitBundleCallback.kt +0 -17
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java +0 -239
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +0 -103
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +0 -329
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.kt +0 -40
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/fabric/SurfaceHandler.kt +0 -40
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/NativeModuleSoLoader.kt +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleInteropUtils.java +0 -288
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.java +0 -474
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.java +0 -76
- package/ReactAndroid/src/main/java/com/facebook/react/module/processing/ReactModuleSpecProcessor.java +0 -253
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.java +0 -383
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +0 -126
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/FileReaderModule.java +0 -103
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ChoreographerCompat.kt +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java +0 -204
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java +0 -240
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +0 -785
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressResponseBody.java +0 -68
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +0 -22
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/FileIoHandler.java +0 -191
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/JSPackagerClient.java +0 -143
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +0 -193
- package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactLegacyArchitectureProcessor.kt +0 -48
- package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +0 -765
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessAtomicRef.java +0 -131
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java +0 -209
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.java +0 -138
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +0 -634
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactLifecycleStateManager.java +0 -90
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceImpl.java +0 -255
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Task.java +0 -555
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/UnobservedErrorNotifier.kt +0 -27
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/UnobservedTaskException.kt +0 -11
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/OnLayoutEvent.java +0 -80
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroupHelper.java +0 -65
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactInvalidPropertyException.kt +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactStylesDiffMap.java +0 -99
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.java +0 -87
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +0 -448
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.java +0 -231
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java +0 -119
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java +0 -46
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupDrawingOrderHelper.java +0 -127
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.java +0 -116
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactProp.java +0 -109
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactPropGroup.java +0 -97
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/ReactPropertyHolder.java +0 -19
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +0 -220
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AbstractLayoutAnimation.java +0 -116
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/BaseLayoutAnimation.java +0 -86
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.java +0 -224
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/OpacityAnimation.java +0 -72
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/PositionAndSizeAnimation.java +0 -69
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.kt +0 -63
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.kt +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java +0 -213
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +0 -361
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +0 -409
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextShadowNode.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -233
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java +0 -163
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageSpan.java +0 -185
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.java +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +0 -1493
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +0 -160
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.java +0 -52
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputBlurEvent.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.java +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputFocusEvent.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputLocalData.java +0 -44
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +0 -1390
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.java +0 -53
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.java +0 -236
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.java +0 -52
- package/ReactAndroid/src/main/jni/prebuilt/lib/DUMMY +0 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.cpp +0 -18
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.h +0 -31
- package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -26
- package/ReactCommon/react/renderer/uimanager/consistency/LatestShadowTreeRevisionProvider.cpp +0 -29
- package/ReactCommon/react/renderer/uimanager/consistency/LatestShadowTreeRevisionProvider.h +0 -35
- package/android/README.md +0 -21
- package/flow/jest.js +0 -1287
- package/jest/__tests__/setup-test.js +0 -18
- package/scripts/codegen/generate-artifacts-executor.js +0 -1153
- package/src/private/components/VScrollViewNativeComponents.js +0 -25
- package/src/private/featureflags/README.md +0 -5
- package/src/private/specs_DEPRECATED/README.md +0 -7
- package/src/private/utilities/ensureInstance.js +0 -21
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
- package/types/modules/LaunchScreen.d.ts +0 -18
- /package/ReactCommon/jsinspector-modern/{CdpJson.cpp → cdp/CdpJson.cpp} +0 -0
- /package/ReactCommon/jsinspector-modern/{CdpJson.h → cdp/CdpJson.h} +0 -0
- /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
- /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
- /package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.js.flow +0 -0
|
@@ -1,1493 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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.textinput;
|
|
9
|
-
|
|
10
|
-
import static com.facebook.react.uimanager.UIManagerHelper.getReactContext;
|
|
11
|
-
|
|
12
|
-
import android.annotation.SuppressLint;
|
|
13
|
-
import android.content.ClipData;
|
|
14
|
-
import android.content.ClipboardManager;
|
|
15
|
-
import android.app.UiModeManager;
|
|
16
|
-
import android.content.Context;
|
|
17
|
-
import android.graphics.Canvas;
|
|
18
|
-
import android.content.res.Configuration;
|
|
19
|
-
import android.graphics.Color;
|
|
20
|
-
import android.graphics.Paint;
|
|
21
|
-
import android.graphics.Rect;
|
|
22
|
-
import android.graphics.Typeface;
|
|
23
|
-
import android.graphics.drawable.Drawable;
|
|
24
|
-
import android.os.Build;
|
|
25
|
-
import android.os.Bundle;
|
|
26
|
-
import android.text.Editable;
|
|
27
|
-
import android.text.InputType;
|
|
28
|
-
import android.text.Spannable;
|
|
29
|
-
import android.text.SpannableStringBuilder;
|
|
30
|
-
import android.text.Spanned;
|
|
31
|
-
import android.text.TextPaint;
|
|
32
|
-
import android.text.TextUtils;
|
|
33
|
-
import android.text.TextWatcher;
|
|
34
|
-
import android.text.method.KeyListener;
|
|
35
|
-
import android.text.method.QwertyKeyListener;
|
|
36
|
-
import android.util.TypedValue;
|
|
37
|
-
import android.view.ActionMode;
|
|
38
|
-
import android.view.Gravity;
|
|
39
|
-
import android.view.KeyEvent;
|
|
40
|
-
import android.view.Menu;
|
|
41
|
-
import android.view.MenuItem;
|
|
42
|
-
import android.view.MotionEvent;
|
|
43
|
-
import android.view.View;
|
|
44
|
-
import android.view.accessibility.AccessibilityNodeInfo;
|
|
45
|
-
import android.view.inputmethod.EditorInfo;
|
|
46
|
-
import android.view.inputmethod.InputConnection;
|
|
47
|
-
import android.view.inputmethod.InputMethodManager;
|
|
48
|
-
import androidx.annotation.Nullable;
|
|
49
|
-
import androidx.appcompat.widget.AppCompatEditText;
|
|
50
|
-
import androidx.core.util.Predicate;
|
|
51
|
-
import androidx.core.view.ViewCompat;
|
|
52
|
-
import com.facebook.common.logging.FLog;
|
|
53
|
-
import com.facebook.infer.annotation.Assertions;
|
|
54
|
-
import com.facebook.react.bridge.ReactContext;
|
|
55
|
-
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
56
|
-
import com.facebook.react.common.ReactConstants;
|
|
57
|
-
import com.facebook.react.common.build.ReactBuildConfig;
|
|
58
|
-
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
|
|
59
|
-
import com.facebook.react.uimanager.BackgroundStyleApplicator;
|
|
60
|
-
import com.facebook.react.uimanager.LengthPercentage;
|
|
61
|
-
import com.facebook.react.uimanager.LengthPercentageType;
|
|
62
|
-
import com.facebook.react.uimanager.PixelUtil;
|
|
63
|
-
import com.facebook.react.uimanager.ReactAccessibilityDelegate;
|
|
64
|
-
import com.facebook.react.uimanager.StateWrapper;
|
|
65
|
-
import com.facebook.react.uimanager.UIManagerModule;
|
|
66
|
-
import com.facebook.react.uimanager.common.UIManagerType;
|
|
67
|
-
import com.facebook.react.uimanager.common.ViewUtil;
|
|
68
|
-
import com.facebook.react.uimanager.events.EventDispatcher;
|
|
69
|
-
import com.facebook.react.uimanager.style.BorderRadiusProp;
|
|
70
|
-
import com.facebook.react.uimanager.style.BorderStyle;
|
|
71
|
-
import com.facebook.react.uimanager.style.LogicalEdge;
|
|
72
|
-
import com.facebook.react.uimanager.style.Overflow;
|
|
73
|
-
import com.facebook.react.views.text.ReactTextUpdate;
|
|
74
|
-
import com.facebook.react.views.text.ReactTypefaceUtils;
|
|
75
|
-
import com.facebook.react.views.text.TextAttributes;
|
|
76
|
-
import com.facebook.react.views.text.TextLayoutManager;
|
|
77
|
-
import com.facebook.react.views.text.internal.span.CustomLetterSpacingSpan;
|
|
78
|
-
import com.facebook.react.views.text.internal.span.CustomLineHeightSpan;
|
|
79
|
-
import com.facebook.react.views.text.internal.span.CustomStyleSpan;
|
|
80
|
-
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan;
|
|
81
|
-
import com.facebook.react.views.text.internal.span.ReactBackgroundColorSpan;
|
|
82
|
-
import com.facebook.react.views.text.internal.span.ReactForegroundColorSpan;
|
|
83
|
-
import com.facebook.react.views.text.internal.span.ReactSpan;
|
|
84
|
-
import com.facebook.react.views.text.internal.span.ReactStrikethroughSpan;
|
|
85
|
-
import com.facebook.react.views.text.internal.span.ReactTextPaintHolderSpan;
|
|
86
|
-
import com.facebook.react.views.text.internal.span.ReactUnderlineSpan;
|
|
87
|
-
import com.facebook.react.views.text.internal.span.TextInlineImageSpan;
|
|
88
|
-
import java.util.Objects;
|
|
89
|
-
import java.util.concurrent.CopyOnWriteArrayList;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* A wrapper around the EditText that lets us better control what happens when an EditText gets
|
|
93
|
-
* focused or blurred, and when to display the soft keyboard and when not to.
|
|
94
|
-
*
|
|
95
|
-
* <p>ReactEditTexts have setFocusableInTouchMode set to false automatically because touches on the
|
|
96
|
-
* EditText are managed on the JS side. This also removes the nasty side effect that EditTexts have,
|
|
97
|
-
* which is that focus is always maintained on one of the EditTexts.
|
|
98
|
-
*
|
|
99
|
-
* <p>The wrapper stops the EditText from triggering *TextChanged events, in the case where JS has
|
|
100
|
-
* called this explicitly. This is the default behavior on other platforms as well.
|
|
101
|
-
* VisibleForTesting from {@link TextInputEventsTestCase}.
|
|
102
|
-
*/
|
|
103
|
-
public class ReactEditText extends AppCompatEditText {
|
|
104
|
-
|
|
105
|
-
private final InputMethodManager mInputMethodManager;
|
|
106
|
-
private final String TAG = ReactEditText.class.getSimpleName();
|
|
107
|
-
public static final boolean DEBUG_MODE = ReactBuildConfig.DEBUG && false;
|
|
108
|
-
|
|
109
|
-
// This flag is set to true when we set the text of the EditText explicitly. In that case, no
|
|
110
|
-
// *TextChanged events should be triggered. This is less expensive than removing the text
|
|
111
|
-
// listeners and adding them back again after the text change is completed.
|
|
112
|
-
protected boolean mIsSettingTextFromJS;
|
|
113
|
-
private final int mDefaultGravityHorizontal;
|
|
114
|
-
private final int mDefaultGravityVertical;
|
|
115
|
-
|
|
116
|
-
/** A count of events sent to JS or C++. */
|
|
117
|
-
protected int mNativeEventCount;
|
|
118
|
-
|
|
119
|
-
private @Nullable CopyOnWriteArrayList<TextWatcher> mListeners;
|
|
120
|
-
private @Nullable TextWatcherDelegator mTextWatcherDelegator;
|
|
121
|
-
private int mStagedInputType;
|
|
122
|
-
protected boolean mContainsImages;
|
|
123
|
-
private @Nullable String mSubmitBehavior = null;
|
|
124
|
-
private boolean mDisableFullscreen;
|
|
125
|
-
private @Nullable String mReturnKeyType;
|
|
126
|
-
private @Nullable SelectionWatcher mSelectionWatcher;
|
|
127
|
-
private @Nullable ContentSizeWatcher mContentSizeWatcher;
|
|
128
|
-
private @Nullable ScrollWatcher mScrollWatcher;
|
|
129
|
-
private InternalKeyListener mKeyListener;
|
|
130
|
-
private boolean mDetectScrollMovement = false;
|
|
131
|
-
private boolean mOnKeyPress = false;
|
|
132
|
-
private TextAttributes mTextAttributes;
|
|
133
|
-
private boolean mTypefaceDirty = false;
|
|
134
|
-
private @Nullable String mFontFamily = null;
|
|
135
|
-
private int mFontWeight = ReactConstants.UNSET;
|
|
136
|
-
private int mFontStyle = ReactConstants.UNSET;
|
|
137
|
-
private boolean mAutoFocus = false;
|
|
138
|
-
private boolean mContextMenuHidden = false;
|
|
139
|
-
private boolean mDidAttachToWindow = false;
|
|
140
|
-
private boolean mSelectTextOnFocus = false;
|
|
141
|
-
private @Nullable String mPlaceholder = null;
|
|
142
|
-
private Overflow mOverflow = Overflow.VISIBLE;
|
|
143
|
-
|
|
144
|
-
private StateWrapper mStateWrapper = null;
|
|
145
|
-
protected boolean mDisableTextDiffing = false;
|
|
146
|
-
|
|
147
|
-
protected boolean mIsSettingTextFromState = false;
|
|
148
|
-
|
|
149
|
-
private static final KeyListener sKeyListener = QwertyKeyListener.getInstanceForFullKeyboard();
|
|
150
|
-
private @Nullable EventDispatcher mEventDispatcher;
|
|
151
|
-
|
|
152
|
-
private boolean isKeyboardOpened;
|
|
153
|
-
|
|
154
|
-
public ReactEditText(Context context) {
|
|
155
|
-
super(context);
|
|
156
|
-
if (!ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior()) {
|
|
157
|
-
setFocusableInTouchMode(false);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
mInputMethodManager =
|
|
161
|
-
(InputMethodManager)
|
|
162
|
-
Assertions.assertNotNull(context.getSystemService(Context.INPUT_METHOD_SERVICE));
|
|
163
|
-
mDefaultGravityHorizontal =
|
|
164
|
-
getGravity() & (Gravity.HORIZONTAL_GRAVITY_MASK | Gravity.RELATIVE_HORIZONTAL_GRAVITY_MASK);
|
|
165
|
-
mDefaultGravityVertical = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
|
|
166
|
-
mNativeEventCount = 0;
|
|
167
|
-
mIsSettingTextFromJS = false;
|
|
168
|
-
mDisableFullscreen = false;
|
|
169
|
-
mListeners = null;
|
|
170
|
-
mTextWatcherDelegator = null;
|
|
171
|
-
mStagedInputType = getInputType();
|
|
172
|
-
if (mKeyListener == null) {
|
|
173
|
-
mKeyListener = new InternalKeyListener();
|
|
174
|
-
}
|
|
175
|
-
mScrollWatcher = null;
|
|
176
|
-
mTextAttributes = new TextAttributes();
|
|
177
|
-
|
|
178
|
-
applyTextAttributes();
|
|
179
|
-
|
|
180
|
-
// Turn off hardware acceleration for Oreo (T40484798)
|
|
181
|
-
// see https://issuetracker.google.com/issues/67102093
|
|
182
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
|
183
|
-
&& Build.VERSION.SDK_INT <= Build.VERSION_CODES.O_MR1) {
|
|
184
|
-
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
ReactAccessibilityDelegate editTextAccessibilityDelegate =
|
|
188
|
-
new ReactAccessibilityDelegate(
|
|
189
|
-
this, this.isFocusable(), this.getImportantForAccessibility()) {
|
|
190
|
-
@Override
|
|
191
|
-
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
|
192
|
-
if (action == AccessibilityNodeInfo.ACTION_CLICK) {
|
|
193
|
-
int length = getText().length();
|
|
194
|
-
if (length > 0) {
|
|
195
|
-
// For some reason, when you swipe to focus on a text input that already has text in
|
|
196
|
-
// it, it clears the selection and resets the cursor to the beginning of the input.
|
|
197
|
-
// Since this is not typically (ever?) what you want, let's just explicitly set the
|
|
198
|
-
// selection on accessibility click to undo that.
|
|
199
|
-
setSelection(length);
|
|
200
|
-
}
|
|
201
|
-
return ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior()
|
|
202
|
-
? requestFocusProgramatically()
|
|
203
|
-
: requestFocusInternal();
|
|
204
|
-
}
|
|
205
|
-
return super.performAccessibilityAction(host, action, args);
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
ViewCompat.setAccessibilityDelegate(this, editTextAccessibilityDelegate);
|
|
209
|
-
ActionMode.Callback customActionModeCallback =
|
|
210
|
-
new ActionMode.Callback() {
|
|
211
|
-
/*
|
|
212
|
-
* Editor onCreateActionMode adds the cut, copy, paste, share, autofill,
|
|
213
|
-
* and paste as plain text items to the context menu.
|
|
214
|
-
*/
|
|
215
|
-
@Override
|
|
216
|
-
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
|
217
|
-
if (mContextMenuHidden) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
menu.removeItem(android.R.id.pasteAsPlainText);
|
|
221
|
-
return true;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
@Override
|
|
225
|
-
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
|
226
|
-
return true;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
@Override
|
|
230
|
-
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
@Override
|
|
235
|
-
public void onDestroyActionMode(ActionMode mode) {}
|
|
236
|
-
};
|
|
237
|
-
setCustomSelectionActionModeCallback(customActionModeCallback);
|
|
238
|
-
setCustomInsertionActionModeCallback(customActionModeCallback);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
@Override
|
|
242
|
-
protected void finalize() {
|
|
243
|
-
if (DEBUG_MODE) {
|
|
244
|
-
FLog.e(TAG, "finalize[" + getId() + "] delete cached spannable");
|
|
245
|
-
}
|
|
246
|
-
TextLayoutManager.deleteCachedSpannableForTag(getId());
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// Not currently used, but leaving in as a comment in case it's needed later
|
|
250
|
-
|
|
251
|
-
// private boolean isTVDevice() {
|
|
252
|
-
// UiModeManager uiModeManager = (UiModeManager) getContext().getSystemService(Context.UI_MODE_SERVICE);
|
|
253
|
-
// return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION;
|
|
254
|
-
// }
|
|
255
|
-
|
|
256
|
-
public void showKeyboard() {
|
|
257
|
-
isKeyboardOpened = true;
|
|
258
|
-
showSoftKeyboard();
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
public void hideKeyboard() {
|
|
262
|
-
isKeyboardOpened = false;
|
|
263
|
-
hideSoftKeyboard();
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// After the text changes inside an EditText, TextView checks if a layout() has been requested.
|
|
267
|
-
// If it has, it will not scroll the text to the end of the new text inserted, but wait for the
|
|
268
|
-
// next layout() to be called. However, we do not perform a layout() after a requestLayout(), so
|
|
269
|
-
// we need to override isLayoutRequested to force EditText to scroll to the end of the new text
|
|
270
|
-
// immediately.
|
|
271
|
-
// TODO: t6408636 verify if we should schedule a layout after a View does a requestLayout()
|
|
272
|
-
@Override
|
|
273
|
-
public boolean isLayoutRequested() {
|
|
274
|
-
return false;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
@Override
|
|
278
|
-
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
|
279
|
-
onContentSizeChange();
|
|
280
|
-
if (mSelectTextOnFocus && isFocused()) {
|
|
281
|
-
// Explicitly call this method to select text when layout is drawn
|
|
282
|
-
selectAll();
|
|
283
|
-
// Prevent text on being selected for next layout pass
|
|
284
|
-
mSelectTextOnFocus = false;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
@Override
|
|
289
|
-
public boolean onTouchEvent(MotionEvent ev) {
|
|
290
|
-
switch (ev.getAction()) {
|
|
291
|
-
case MotionEvent.ACTION_DOWN:
|
|
292
|
-
mDetectScrollMovement = true;
|
|
293
|
-
// Disallow parent views to intercept touch events, until we can detect if we should be
|
|
294
|
-
// capturing these touches or not.
|
|
295
|
-
this.getParent().requestDisallowInterceptTouchEvent(true);
|
|
296
|
-
isKeyboardOpened = !isKeyboardOpened;
|
|
297
|
-
break;
|
|
298
|
-
case MotionEvent.ACTION_MOVE:
|
|
299
|
-
if (mDetectScrollMovement) {
|
|
300
|
-
if (!canScrollVertically(-1)
|
|
301
|
-
&& !canScrollVertically(1)
|
|
302
|
-
&& !canScrollHorizontally(-1)
|
|
303
|
-
&& !canScrollHorizontally(1)) {
|
|
304
|
-
// We cannot scroll, let parent views take care of these touches.
|
|
305
|
-
this.getParent().requestDisallowInterceptTouchEvent(false);
|
|
306
|
-
}
|
|
307
|
-
mDetectScrollMovement = false;
|
|
308
|
-
}
|
|
309
|
-
break;
|
|
310
|
-
}
|
|
311
|
-
return super.onTouchEvent(ev);
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
// Consume 'Enter' key events: TextView tries to give focus to the next TextInput, but it can't
|
|
315
|
-
// since we only allow JS to change focus, which in turn causes TextView to crash.
|
|
316
|
-
@Override
|
|
317
|
-
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
|
318
|
-
if (keyCode == KeyEvent.KEYCODE_ENTER && !isMultiline()) {
|
|
319
|
-
hideSoftKeyboard();
|
|
320
|
-
return true;
|
|
321
|
-
}
|
|
322
|
-
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_BACK) {
|
|
323
|
-
isKeyboardOpened = !isKeyboardOpened;
|
|
324
|
-
}
|
|
325
|
-
return super.onKeyUp(keyCode, event);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
@Override
|
|
329
|
-
public void setLineHeight(int lineHeight) {
|
|
330
|
-
mTextAttributes.setLineHeight(lineHeight);
|
|
331
|
-
// We don't call super.setLineHeight() because LineHeight is fully managed by ReactNative
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
@Override
|
|
335
|
-
protected void onScrollChanged(int horiz, int vert, int oldHoriz, int oldVert) {
|
|
336
|
-
super.onScrollChanged(horiz, vert, oldHoriz, oldVert);
|
|
337
|
-
|
|
338
|
-
if (mScrollWatcher != null) {
|
|
339
|
-
mScrollWatcher.onScrollChanged(horiz, vert, oldHoriz, oldVert);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
@Override
|
|
344
|
-
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
|
|
345
|
-
ReactContext reactContext = getReactContext(this);
|
|
346
|
-
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
|
|
347
|
-
if (inputConnection != null && mOnKeyPress) {
|
|
348
|
-
inputConnection =
|
|
349
|
-
new ReactEditTextInputConnectionWrapper(
|
|
350
|
-
inputConnection, reactContext, this, mEventDispatcher);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
if (isMultiline() && (shouldBlurOnReturn() || shouldSubmitOnReturn())) {
|
|
354
|
-
// Remove IME_FLAG_NO_ENTER_ACTION to keep the original IME_OPTION
|
|
355
|
-
outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
|
|
356
|
-
}
|
|
357
|
-
return inputConnection;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
/*
|
|
361
|
-
* Called when a context menu option for the text view is selected.
|
|
362
|
-
* React Native replaces copy (as rich text) with copy as plain text.
|
|
363
|
-
*/
|
|
364
|
-
@Override
|
|
365
|
-
public boolean onTextContextMenuItem(int id) {
|
|
366
|
-
if (id == android.R.id.paste) {
|
|
367
|
-
id = android.R.id.pasteAsPlainText;
|
|
368
|
-
}
|
|
369
|
-
return super.onTextContextMenuItem(id);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
@Override
|
|
373
|
-
public void clearFocus() {
|
|
374
|
-
boolean useStockFocusBehavior = ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior();
|
|
375
|
-
if (!useStockFocusBehavior) {
|
|
376
|
-
setFocusableInTouchMode(false);
|
|
377
|
-
}
|
|
378
|
-
super.clearFocus();
|
|
379
|
-
isKeyboardOpened = false;
|
|
380
|
-
hideSoftKeyboard();
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
@Override
|
|
384
|
-
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
|
|
385
|
-
// This is a no-op so that when the OS calls requestFocus(), nothing will happen. ReactEditText
|
|
386
|
-
// is a controlled component, which means its focus is controlled by JS, with two exceptions:
|
|
387
|
-
// autofocus when it's attached to the window, and responding to accessibility events. In both
|
|
388
|
-
// of these cases, we call requestFocusInternal() directly.
|
|
389
|
-
return ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior()
|
|
390
|
-
? super.requestFocus(direction, previouslyFocusedRect)
|
|
391
|
-
: isFocused();
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
private boolean requestFocusInternal() {
|
|
395
|
-
setFocusableInTouchMode(true);
|
|
396
|
-
boolean focused = super.requestFocus(View.FOCUS_DOWN, null);
|
|
397
|
-
if (getShowSoftInputOnFocus()) {
|
|
398
|
-
showSoftKeyboard();
|
|
399
|
-
} else {
|
|
400
|
-
if (isKeyboardOpened) {
|
|
401
|
-
showSoftKeyboard();
|
|
402
|
-
} else {
|
|
403
|
-
hideSoftKeyboard();
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
return focused;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
// For cases like autoFocus, or ref.focus() where we request focus programatically and not through
|
|
411
|
-
// interacting with the EditText directly (like clicking on it). We cannot use stock
|
|
412
|
-
// requestFocus() because it will not pop up the soft keyboard, only clicking the input will do
|
|
413
|
-
// that. This method will eventually replace requestFocusInternal()
|
|
414
|
-
private boolean requestFocusProgramatically() {
|
|
415
|
-
boolean focused = super.requestFocus(View.FOCUS_DOWN, null);
|
|
416
|
-
if (isInTouchMode() && getShowSoftInputOnFocus()) {
|
|
417
|
-
showSoftKeyboard();
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
return focused;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
@Override
|
|
424
|
-
public void addTextChangedListener(TextWatcher watcher) {
|
|
425
|
-
if (mListeners == null) {
|
|
426
|
-
mListeners = new CopyOnWriteArrayList<>();
|
|
427
|
-
super.addTextChangedListener(getTextWatcherDelegator());
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
mListeners.add(watcher);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
@Override
|
|
434
|
-
public void removeTextChangedListener(TextWatcher watcher) {
|
|
435
|
-
if (mListeners != null) {
|
|
436
|
-
mListeners.remove(watcher);
|
|
437
|
-
|
|
438
|
-
if (mListeners.isEmpty()) {
|
|
439
|
-
mListeners = null;
|
|
440
|
-
super.removeTextChangedListener(getTextWatcherDelegator());
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
public void setContentSizeWatcher(@Nullable ContentSizeWatcher contentSizeWatcher) {
|
|
446
|
-
mContentSizeWatcher = contentSizeWatcher;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
public void setScrollWatcher(@Nullable ScrollWatcher scrollWatcher) {
|
|
450
|
-
mScrollWatcher = scrollWatcher;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Attempt to set a selection or fail silently. Intentionally meant to handle bad inputs.
|
|
455
|
-
* EventCounter is the same one used as with text.
|
|
456
|
-
*
|
|
457
|
-
* @param eventCounter
|
|
458
|
-
* @param start
|
|
459
|
-
* @param end
|
|
460
|
-
*/
|
|
461
|
-
public void maybeSetSelection(int eventCounter, int start, int end) {
|
|
462
|
-
if (!canUpdateWithEventCount(eventCounter)) {
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
maybeSetSelection(start, end);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
private void maybeSetSelection(int start, int end) {
|
|
470
|
-
if (start != ReactConstants.UNSET && end != ReactConstants.UNSET) {
|
|
471
|
-
// clamp selection values for safety
|
|
472
|
-
start = clampToTextLength(start);
|
|
473
|
-
end = clampToTextLength(end);
|
|
474
|
-
|
|
475
|
-
setSelection(start, end);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
private int clampToTextLength(int value) {
|
|
480
|
-
int textLength = getText() == null ? 0 : getText().length();
|
|
481
|
-
|
|
482
|
-
return Math.max(0, Math.min(value, textLength));
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
@Override
|
|
486
|
-
public void setSelection(int start, int end) {
|
|
487
|
-
if (DEBUG_MODE) {
|
|
488
|
-
FLog.e(TAG, "setSelection[" + getId() + "]: " + start + " " + end);
|
|
489
|
-
}
|
|
490
|
-
super.setSelection(start, end);
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
@Override
|
|
494
|
-
protected void onSelectionChanged(int selStart, int selEnd) {
|
|
495
|
-
if (DEBUG_MODE) {
|
|
496
|
-
FLog.e(TAG, "onSelectionChanged[" + getId() + "]: " + selStart + " " + selEnd);
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
super.onSelectionChanged(selStart, selEnd);
|
|
500
|
-
if (mSelectionWatcher != null && hasFocus()) {
|
|
501
|
-
mSelectionWatcher.onSelectionChanged(selStart, selEnd);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
@Override
|
|
506
|
-
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
|
|
507
|
-
super.onFocusChanged(focused, direction, previouslyFocusedRect);
|
|
508
|
-
if (focused && mSelectionWatcher != null) {
|
|
509
|
-
mSelectionWatcher.onSelectionChanged(getSelectionStart(), getSelectionEnd());
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
if (!focused) {
|
|
513
|
-
isKeyboardOpened = false;
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
public void setSelectionWatcher(@Nullable SelectionWatcher selectionWatcher) {
|
|
518
|
-
mSelectionWatcher = selectionWatcher;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
public void setOnKeyPress(boolean onKeyPress) {
|
|
522
|
-
mOnKeyPress = onKeyPress;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
public boolean shouldBlurOnReturn() {
|
|
526
|
-
String submitBehavior = getSubmitBehavior();
|
|
527
|
-
boolean shouldBlur;
|
|
528
|
-
|
|
529
|
-
// Default shouldBlur
|
|
530
|
-
if (submitBehavior == null) {
|
|
531
|
-
if (!isMultiline()) {
|
|
532
|
-
shouldBlur = true;
|
|
533
|
-
} else {
|
|
534
|
-
shouldBlur = false;
|
|
535
|
-
}
|
|
536
|
-
} else {
|
|
537
|
-
shouldBlur = submitBehavior.equals("blurAndSubmit");
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
return shouldBlur;
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
public boolean shouldSubmitOnReturn() {
|
|
544
|
-
String submitBehavior = getSubmitBehavior();
|
|
545
|
-
boolean shouldSubmit;
|
|
546
|
-
|
|
547
|
-
// Default shouldSubmit
|
|
548
|
-
if (submitBehavior == null) {
|
|
549
|
-
if (!isMultiline()) {
|
|
550
|
-
shouldSubmit = true;
|
|
551
|
-
} else {
|
|
552
|
-
shouldSubmit = false;
|
|
553
|
-
}
|
|
554
|
-
} else {
|
|
555
|
-
shouldSubmit = submitBehavior.equals("submit") || submitBehavior.equals("blurAndSubmit");
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
return shouldSubmit;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
public String getSubmitBehavior() {
|
|
562
|
-
return mSubmitBehavior;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
public void setSubmitBehavior(@Nullable String submitBehavior) {
|
|
566
|
-
mSubmitBehavior = submitBehavior;
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
public void setDisableFullscreenUI(boolean disableFullscreenUI) {
|
|
570
|
-
mDisableFullscreen = disableFullscreenUI;
|
|
571
|
-
updateImeOptions();
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
public boolean getDisableFullscreenUI() {
|
|
575
|
-
return mDisableFullscreen;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
public void setReturnKeyType(String returnKeyType) {
|
|
579
|
-
mReturnKeyType = returnKeyType;
|
|
580
|
-
updateImeOptions();
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
public String getReturnKeyType() {
|
|
584
|
-
return mReturnKeyType;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
/*protected*/ int getStagedInputType() {
|
|
588
|
-
return mStagedInputType;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
/*package*/ void setStagedInputType(int stagedInputType) {
|
|
592
|
-
mStagedInputType = stagedInputType;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/*package*/ void commitStagedInputType() {
|
|
596
|
-
if (getInputType() != mStagedInputType) {
|
|
597
|
-
int selectionStart = getSelectionStart();
|
|
598
|
-
int selectionEnd = getSelectionEnd();
|
|
599
|
-
setInputType(mStagedInputType);
|
|
600
|
-
// Restore the selection
|
|
601
|
-
maybeSetSelection(selectionStart, selectionEnd);
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
@Override
|
|
606
|
-
public void setInputType(int type) {
|
|
607
|
-
Typeface tf = super.getTypeface();
|
|
608
|
-
super.setInputType(type);
|
|
609
|
-
mStagedInputType = type;
|
|
610
|
-
// Input type password defaults to monospace font, so we need to re-apply the font
|
|
611
|
-
super.setTypeface(tf);
|
|
612
|
-
|
|
613
|
-
/**
|
|
614
|
-
* If set forces multiline on input, because of a restriction on Android source that enables
|
|
615
|
-
* multiline only for inputs of type Text and Multiline on method {@link
|
|
616
|
-
* android.widget.TextView#isMultilineInputType(int)}} Source: {@Link <a
|
|
617
|
-
* href='https://android.googlesource.com/platform/frameworks/base/+/jb-release/core/java/android/widget/TextView.java'>TextView.java</a>}
|
|
618
|
-
*/
|
|
619
|
-
if (isMultiline()) {
|
|
620
|
-
setSingleLine(false);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
// We override the KeyListener so that all keys on the soft input keyboard as well as hardware
|
|
624
|
-
// keyboards work. Some KeyListeners like DigitsKeyListener will display the keyboard but not
|
|
625
|
-
// accept all input from it
|
|
626
|
-
if (mKeyListener == null) {
|
|
627
|
-
mKeyListener = new InternalKeyListener();
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
mKeyListener.setInputType(type);
|
|
631
|
-
setKeyListener(mKeyListener);
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
public void setPlaceholder(@Nullable String placeholder) {
|
|
635
|
-
if (!Objects.equals(placeholder, mPlaceholder)) {
|
|
636
|
-
mPlaceholder = placeholder;
|
|
637
|
-
setHint(placeholder);
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
public void setFontFamily(String fontFamily) {
|
|
642
|
-
mFontFamily = fontFamily;
|
|
643
|
-
mTypefaceDirty = true;
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
public void setFontWeight(String fontWeightString) {
|
|
647
|
-
int fontWeight = ReactTypefaceUtils.parseFontWeight(fontWeightString);
|
|
648
|
-
if (fontWeight != mFontWeight) {
|
|
649
|
-
mFontWeight = fontWeight;
|
|
650
|
-
mTypefaceDirty = true;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
public void setFontStyle(String fontStyleString) {
|
|
655
|
-
int fontStyle = ReactTypefaceUtils.parseFontStyle(fontStyleString);
|
|
656
|
-
if (fontStyle != mFontStyle) {
|
|
657
|
-
mFontStyle = fontStyle;
|
|
658
|
-
mTypefaceDirty = true;
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
@Override
|
|
663
|
-
public void setFontFeatureSettings(String fontFeatureSettings) {
|
|
664
|
-
if (!Objects.equals(fontFeatureSettings, getFontFeatureSettings())) {
|
|
665
|
-
super.setFontFeatureSettings(fontFeatureSettings);
|
|
666
|
-
mTypefaceDirty = true;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
public void maybeUpdateTypeface() {
|
|
671
|
-
if (!mTypefaceDirty) {
|
|
672
|
-
return;
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
mTypefaceDirty = false;
|
|
676
|
-
|
|
677
|
-
Typeface newTypeface =
|
|
678
|
-
ReactTypefaceUtils.applyStyles(
|
|
679
|
-
getTypeface(), mFontStyle, mFontWeight, mFontFamily, getContext().getAssets());
|
|
680
|
-
setTypeface(newTypeface);
|
|
681
|
-
|
|
682
|
-
// Match behavior of CustomStyleSpan and enable SUBPIXEL_TEXT_FLAG when setting anything
|
|
683
|
-
// nonstandard
|
|
684
|
-
if (mFontStyle != ReactConstants.UNSET
|
|
685
|
-
|| mFontWeight != ReactConstants.UNSET
|
|
686
|
-
|| mFontFamily != null
|
|
687
|
-
|| getFontFeatureSettings() != null) {
|
|
688
|
-
setPaintFlags(getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
|
|
689
|
-
} else {
|
|
690
|
-
setPaintFlags(getPaintFlags() & (~Paint.SUBPIXEL_TEXT_FLAG));
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
// VisibleForTesting from {@link TextInputEventsTestCase}.
|
|
695
|
-
public void requestFocusFromJS() {
|
|
696
|
-
if (ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior()) {
|
|
697
|
-
requestFocusProgramatically();
|
|
698
|
-
} else {
|
|
699
|
-
requestFocusInternal();
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
/* package */ void clearFocusFromJS() {
|
|
704
|
-
clearFocus();
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
// VisibleForTesting from {@link TextInputEventsTestCase}.
|
|
708
|
-
public int incrementAndGetEventCounter() {
|
|
709
|
-
return ++mNativeEventCount;
|
|
710
|
-
}
|
|
711
|
-
|
|
712
|
-
public void maybeSetTextFromJS(ReactTextUpdate reactTextUpdate) {
|
|
713
|
-
mIsSettingTextFromJS = true;
|
|
714
|
-
maybeSetText(reactTextUpdate);
|
|
715
|
-
mIsSettingTextFromJS = false;
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
public void maybeSetTextFromState(ReactTextUpdate reactTextUpdate) {
|
|
719
|
-
mIsSettingTextFromState = true;
|
|
720
|
-
maybeSetText(reactTextUpdate);
|
|
721
|
-
mIsSettingTextFromState = false;
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
public boolean canUpdateWithEventCount(int eventCounter) {
|
|
725
|
-
return eventCounter >= mNativeEventCount;
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
// VisibleForTesting from {@link TextInputEventsTestCase}.
|
|
729
|
-
@SuppressLint("WrongConstant")
|
|
730
|
-
public void maybeSetText(ReactTextUpdate reactTextUpdate) {
|
|
731
|
-
if (isSecureText() && TextUtils.equals(getText(), reactTextUpdate.getText())) {
|
|
732
|
-
return;
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
// Only set the text if it is up to date.
|
|
736
|
-
if (!canUpdateWithEventCount(reactTextUpdate.getJsEventCounter())) {
|
|
737
|
-
return;
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
if (DEBUG_MODE) {
|
|
741
|
-
FLog.e(
|
|
742
|
-
TAG,
|
|
743
|
-
"maybeSetText["
|
|
744
|
-
+ getId()
|
|
745
|
-
+ "]: current text: "
|
|
746
|
-
+ getText()
|
|
747
|
-
+ " update: "
|
|
748
|
-
+ reactTextUpdate.getText());
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
// The current text gets replaced with the text received from JS. However, the spans on the
|
|
752
|
-
// current text need to be adapted to the new text. Since TextView#setText() will remove or
|
|
753
|
-
// reset some of these spans even if they are set directly, SpannableStringBuilder#replace() is
|
|
754
|
-
// used instead (this is also used by the keyboard implementation underneath the covers).
|
|
755
|
-
SpannableStringBuilder spannableStringBuilder =
|
|
756
|
-
new SpannableStringBuilder(reactTextUpdate.getText());
|
|
757
|
-
|
|
758
|
-
manageSpans(spannableStringBuilder);
|
|
759
|
-
stripStyleEquivalentSpans(spannableStringBuilder);
|
|
760
|
-
|
|
761
|
-
mContainsImages = reactTextUpdate.containsImages();
|
|
762
|
-
|
|
763
|
-
// When we update text, we trigger onChangeText code that will
|
|
764
|
-
// try to update state if the wrapper is available. Temporarily disable
|
|
765
|
-
// to prevent an (asynchronous) infinite loop.
|
|
766
|
-
mDisableTextDiffing = true;
|
|
767
|
-
|
|
768
|
-
// On some devices, when the text is cleared, buggy keyboards will not clear the composing
|
|
769
|
-
// text so, we have to set text to null, which will clear the currently composing text.
|
|
770
|
-
if (reactTextUpdate.getText().length() == 0) {
|
|
771
|
-
setText(null);
|
|
772
|
-
} else {
|
|
773
|
-
// When we update text, we trigger onChangeText code that will
|
|
774
|
-
// try to update state if the wrapper is available. Temporarily disable
|
|
775
|
-
// to prevent an infinite loop.
|
|
776
|
-
getText().replace(0, length(), spannableStringBuilder);
|
|
777
|
-
}
|
|
778
|
-
mDisableTextDiffing = false;
|
|
779
|
-
|
|
780
|
-
if (getBreakStrategy() != reactTextUpdate.getTextBreakStrategy()) {
|
|
781
|
-
setBreakStrategy(reactTextUpdate.getTextBreakStrategy());
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
// Update cached spans (in Fabric only).
|
|
785
|
-
updateCachedSpannable();
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
/**
|
|
789
|
-
* Remove and/or add {@link Spanned.SPAN_EXCLUSIVE_EXCLUSIVE} spans, since they should only exist
|
|
790
|
-
* as long as the text they cover is the same. All other spans will remain the same, since they
|
|
791
|
-
* will adapt to the new text, hence why {@link SpannableStringBuilder#replace} never removes
|
|
792
|
-
* them.
|
|
793
|
-
*/
|
|
794
|
-
private void manageSpans(SpannableStringBuilder spannableStringBuilder) {
|
|
795
|
-
Object[] spans = getText().getSpans(0, length(), Object.class);
|
|
796
|
-
for (int spanIdx = 0; spanIdx < spans.length; spanIdx++) {
|
|
797
|
-
Object span = spans[spanIdx];
|
|
798
|
-
int spanFlags = getText().getSpanFlags(span);
|
|
799
|
-
boolean isExclusiveExclusive =
|
|
800
|
-
(spanFlags & Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) == Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
|
|
801
|
-
|
|
802
|
-
// Remove all styling spans we might have previously set
|
|
803
|
-
if (span instanceof ReactSpan) {
|
|
804
|
-
getText().removeSpan(span);
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
// We only add spans back for EXCLUSIVE_EXCLUSIVE spans
|
|
808
|
-
if (!isExclusiveExclusive) {
|
|
809
|
-
continue;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
final int spanStart = getText().getSpanStart(span);
|
|
813
|
-
final int spanEnd = getText().getSpanEnd(span);
|
|
814
|
-
|
|
815
|
-
// Make sure the span is removed from existing text, otherwise the spans we set will be
|
|
816
|
-
// ignored or it will cover text that has changed.
|
|
817
|
-
getText().removeSpan(span);
|
|
818
|
-
if (sameTextForSpan(getText(), spannableStringBuilder, spanStart, spanEnd)) {
|
|
819
|
-
spannableStringBuilder.setSpan(span, spanStart, spanEnd, spanFlags);
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
/**
|
|
825
|
-
* Remove spans from the SpannableStringBuilder which can be represented by TextAppearance
|
|
826
|
-
* attributes on the underlying EditText. This works around instability on Samsung devices with
|
|
827
|
-
* the presence of spans https://github.com/facebook/react-native/issues/35936 (S318090)
|
|
828
|
-
*/
|
|
829
|
-
private void stripStyleEquivalentSpans(SpannableStringBuilder sb) {
|
|
830
|
-
stripSpansOfKind(
|
|
831
|
-
sb,
|
|
832
|
-
ReactAbsoluteSizeSpan.class,
|
|
833
|
-
(span) -> span.getSize() == mTextAttributes.getEffectiveFontSize());
|
|
834
|
-
|
|
835
|
-
stripSpansOfKind(
|
|
836
|
-
sb,
|
|
837
|
-
ReactBackgroundColorSpan.class,
|
|
838
|
-
(span) ->
|
|
839
|
-
Objects.equals(
|
|
840
|
-
span.getBackgroundColor(), BackgroundStyleApplicator.getBackgroundColor(this)));
|
|
841
|
-
|
|
842
|
-
stripSpansOfKind(
|
|
843
|
-
sb,
|
|
844
|
-
ReactForegroundColorSpan.class,
|
|
845
|
-
(span) -> span.getForegroundColor() == getCurrentTextColor());
|
|
846
|
-
|
|
847
|
-
stripSpansOfKind(
|
|
848
|
-
sb,
|
|
849
|
-
ReactStrikethroughSpan.class,
|
|
850
|
-
(span) -> (getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) != 0);
|
|
851
|
-
|
|
852
|
-
stripSpansOfKind(
|
|
853
|
-
sb, ReactUnderlineSpan.class, (span) -> (getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) != 0);
|
|
854
|
-
|
|
855
|
-
stripSpansOfKind(
|
|
856
|
-
sb,
|
|
857
|
-
CustomLetterSpacingSpan.class,
|
|
858
|
-
(span) -> span.getSpacing() == mTextAttributes.getEffectiveLetterSpacing());
|
|
859
|
-
|
|
860
|
-
stripSpansOfKind(
|
|
861
|
-
sb,
|
|
862
|
-
CustomStyleSpan.class,
|
|
863
|
-
(span) -> {
|
|
864
|
-
return span.getStyle() == mFontStyle
|
|
865
|
-
&& Objects.equals(span.getFontFamily(), mFontFamily)
|
|
866
|
-
&& span.getWeight() == mFontWeight
|
|
867
|
-
&& Objects.equals(span.getFontFeatureSettings(), getFontFeatureSettings());
|
|
868
|
-
});
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
private <T> void stripSpansOfKind(
|
|
872
|
-
SpannableStringBuilder sb, Class<T> clazz, Predicate<T> shouldStrip) {
|
|
873
|
-
T[] spans = sb.getSpans(0, sb.length(), clazz);
|
|
874
|
-
|
|
875
|
-
for (T span : spans) {
|
|
876
|
-
if (shouldStrip.test(span)) {
|
|
877
|
-
sb.removeSpan(span);
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
|
|
882
|
-
/**
|
|
883
|
-
* Copy styles represented as attributes to the underlying span, for later measurement or other
|
|
884
|
-
* usage outside the ReactEditText.
|
|
885
|
-
*/
|
|
886
|
-
private void addSpansFromStyleAttributes(SpannableStringBuilder workingText) {
|
|
887
|
-
int spanFlags = Spannable.SPAN_INCLUSIVE_INCLUSIVE;
|
|
888
|
-
|
|
889
|
-
// Set all bits for SPAN_PRIORITY so that this span has the highest possible priority
|
|
890
|
-
// (least precedence). This ensures the span is behind any overlapping spans.
|
|
891
|
-
spanFlags |= Spannable.SPAN_PRIORITY;
|
|
892
|
-
|
|
893
|
-
workingText.setSpan(
|
|
894
|
-
new ReactAbsoluteSizeSpan(mTextAttributes.getEffectiveFontSize()),
|
|
895
|
-
0,
|
|
896
|
-
workingText.length(),
|
|
897
|
-
spanFlags);
|
|
898
|
-
|
|
899
|
-
workingText.setSpan(
|
|
900
|
-
new ReactForegroundColorSpan(getCurrentTextColor()), 0, workingText.length(), spanFlags);
|
|
901
|
-
|
|
902
|
-
@Nullable Integer backgroundColor = BackgroundStyleApplicator.getBackgroundColor(this);
|
|
903
|
-
if (backgroundColor != null && backgroundColor != Color.TRANSPARENT) {
|
|
904
|
-
workingText.setSpan(
|
|
905
|
-
new ReactBackgroundColorSpan(backgroundColor), 0, workingText.length(), spanFlags);
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
if ((getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) != 0) {
|
|
909
|
-
workingText.setSpan(new ReactStrikethroughSpan(), 0, workingText.length(), spanFlags);
|
|
910
|
-
}
|
|
911
|
-
|
|
912
|
-
if ((getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) != 0) {
|
|
913
|
-
workingText.setSpan(new ReactUnderlineSpan(), 0, workingText.length(), spanFlags);
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
float effectiveLetterSpacing = mTextAttributes.getEffectiveLetterSpacing();
|
|
917
|
-
if (!Float.isNaN(effectiveLetterSpacing)) {
|
|
918
|
-
workingText.setSpan(
|
|
919
|
-
new CustomLetterSpacingSpan(effectiveLetterSpacing), 0, workingText.length(), spanFlags);
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
if (mFontStyle != ReactConstants.UNSET
|
|
923
|
-
|| mFontWeight != ReactConstants.UNSET
|
|
924
|
-
|| mFontFamily != null
|
|
925
|
-
|| getFontFeatureSettings() != null) {
|
|
926
|
-
workingText.setSpan(
|
|
927
|
-
new CustomStyleSpan(
|
|
928
|
-
mFontStyle,
|
|
929
|
-
mFontWeight,
|
|
930
|
-
getFontFeatureSettings(),
|
|
931
|
-
mFontFamily,
|
|
932
|
-
getContext().getAssets()),
|
|
933
|
-
0,
|
|
934
|
-
workingText.length(),
|
|
935
|
-
spanFlags);
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
float lineHeight = mTextAttributes.getEffectiveLineHeight();
|
|
939
|
-
if (!Float.isNaN(lineHeight)) {
|
|
940
|
-
workingText.setSpan(new CustomLineHeightSpan(lineHeight), 0, workingText.length(), spanFlags);
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
|
|
944
|
-
private void stripAbsoluteSizeSpans(SpannableStringBuilder sb) {
|
|
945
|
-
// We have already set a font size on the EditText itself. We can safely remove sizing spans
|
|
946
|
-
// which are the same as the set font size, and not otherwise overlapped.
|
|
947
|
-
final int effectiveFontSize = mTextAttributes.getEffectiveFontSize();
|
|
948
|
-
ReactAbsoluteSizeSpan[] spans = sb.getSpans(0, sb.length(), ReactAbsoluteSizeSpan.class);
|
|
949
|
-
|
|
950
|
-
outerLoop:
|
|
951
|
-
for (ReactAbsoluteSizeSpan span : spans) {
|
|
952
|
-
ReactAbsoluteSizeSpan[] overlappingSpans =
|
|
953
|
-
sb.getSpans(sb.getSpanStart(span), sb.getSpanEnd(span), ReactAbsoluteSizeSpan.class);
|
|
954
|
-
|
|
955
|
-
for (ReactAbsoluteSizeSpan overlappingSpan : overlappingSpans) {
|
|
956
|
-
if (span.getSize() != effectiveFontSize) {
|
|
957
|
-
continue outerLoop;
|
|
958
|
-
}
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
sb.removeSpan(span);
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
private static boolean sameTextForSpan(
|
|
966
|
-
final Editable oldText,
|
|
967
|
-
final SpannableStringBuilder newText,
|
|
968
|
-
final int start,
|
|
969
|
-
final int end) {
|
|
970
|
-
if (start > newText.length() || end > newText.length()) {
|
|
971
|
-
return false;
|
|
972
|
-
}
|
|
973
|
-
for (int charIdx = start; charIdx < end; charIdx++) {
|
|
974
|
-
if (oldText.charAt(charIdx) != newText.charAt(charIdx)) {
|
|
975
|
-
return false;
|
|
976
|
-
}
|
|
977
|
-
}
|
|
978
|
-
return true;
|
|
979
|
-
}
|
|
980
|
-
|
|
981
|
-
protected boolean showSoftKeyboard() {
|
|
982
|
-
return mInputMethodManager.showSoftInput(this, 0);
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
protected void hideSoftKeyboard() {
|
|
986
|
-
mInputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0);
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
private TextWatcherDelegator getTextWatcherDelegator() {
|
|
990
|
-
if (mTextWatcherDelegator == null) {
|
|
991
|
-
mTextWatcherDelegator = new TextWatcherDelegator();
|
|
992
|
-
}
|
|
993
|
-
return mTextWatcherDelegator;
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
/* package */ boolean isMultiline() {
|
|
997
|
-
return (getInputType() & InputType.TYPE_TEXT_FLAG_MULTI_LINE) != 0;
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
private boolean isSecureText() {
|
|
1001
|
-
return (getInputType()
|
|
1002
|
-
& (InputType.TYPE_NUMBER_VARIATION_PASSWORD | InputType.TYPE_TEXT_VARIATION_PASSWORD))
|
|
1003
|
-
!= 0;
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
private void onContentSizeChange() {
|
|
1007
|
-
if (mContentSizeWatcher != null) {
|
|
1008
|
-
mContentSizeWatcher.onLayout();
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
setIntrinsicContentSize();
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
|
-
// TODO T58784068: delete this method
|
|
1015
|
-
private void setIntrinsicContentSize() {
|
|
1016
|
-
// This serves as a check for whether we're running under Paper or Fabric.
|
|
1017
|
-
// By the time this is called, in Fabric we will have a state
|
|
1018
|
-
// wrapper 100% of the time.
|
|
1019
|
-
// Since the LocalData object is constructed by getting values from the underlying EditText
|
|
1020
|
-
// view, we don't need to construct one or apply it at all - it provides no use in Fabric.
|
|
1021
|
-
ReactContext reactContext = getReactContext(this);
|
|
1022
|
-
|
|
1023
|
-
if (mStateWrapper == null && !reactContext.isBridgeless()) {
|
|
1024
|
-
|
|
1025
|
-
final ReactTextInputLocalData localData = new ReactTextInputLocalData(this);
|
|
1026
|
-
UIManagerModule uiManager = reactContext.getNativeModule(UIManagerModule.class);
|
|
1027
|
-
if (uiManager != null) {
|
|
1028
|
-
uiManager.setViewLocalData(getId(), localData);
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
/* package */ int getGravityHorizontal() {
|
|
1034
|
-
return getGravity()
|
|
1035
|
-
& (Gravity.HORIZONTAL_GRAVITY_MASK | Gravity.RELATIVE_HORIZONTAL_GRAVITY_MASK);
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
/* package */ void setGravityHorizontal(int gravityHorizontal) {
|
|
1039
|
-
if (gravityHorizontal == 0) {
|
|
1040
|
-
gravityHorizontal = mDefaultGravityHorizontal;
|
|
1041
|
-
}
|
|
1042
|
-
setGravity(
|
|
1043
|
-
(getGravity()
|
|
1044
|
-
& ~Gravity.HORIZONTAL_GRAVITY_MASK
|
|
1045
|
-
& ~Gravity.RELATIVE_HORIZONTAL_GRAVITY_MASK)
|
|
1046
|
-
| gravityHorizontal);
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
|
-
/* package */ void setGravityVertical(int gravityVertical) {
|
|
1050
|
-
if (gravityVertical == 0) {
|
|
1051
|
-
gravityVertical = mDefaultGravityVertical;
|
|
1052
|
-
}
|
|
1053
|
-
setGravity((getGravity() & ~Gravity.VERTICAL_GRAVITY_MASK) | gravityVertical);
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
private void updateImeOptions() {
|
|
1057
|
-
// Default to IME_ACTION_DONE
|
|
1058
|
-
int returnKeyFlag = EditorInfo.IME_ACTION_DONE;
|
|
1059
|
-
if (mReturnKeyType != null) {
|
|
1060
|
-
switch (mReturnKeyType) {
|
|
1061
|
-
case "go":
|
|
1062
|
-
returnKeyFlag = EditorInfo.IME_ACTION_GO;
|
|
1063
|
-
break;
|
|
1064
|
-
case "next":
|
|
1065
|
-
returnKeyFlag = EditorInfo.IME_ACTION_NEXT;
|
|
1066
|
-
break;
|
|
1067
|
-
case "none":
|
|
1068
|
-
returnKeyFlag = EditorInfo.IME_ACTION_NONE;
|
|
1069
|
-
break;
|
|
1070
|
-
case "previous":
|
|
1071
|
-
returnKeyFlag = EditorInfo.IME_ACTION_PREVIOUS;
|
|
1072
|
-
break;
|
|
1073
|
-
case "search":
|
|
1074
|
-
returnKeyFlag = EditorInfo.IME_ACTION_SEARCH;
|
|
1075
|
-
break;
|
|
1076
|
-
case "send":
|
|
1077
|
-
returnKeyFlag = EditorInfo.IME_ACTION_SEND;
|
|
1078
|
-
break;
|
|
1079
|
-
case "done":
|
|
1080
|
-
returnKeyFlag = EditorInfo.IME_ACTION_DONE;
|
|
1081
|
-
break;
|
|
1082
|
-
}
|
|
1083
|
-
}
|
|
1084
|
-
|
|
1085
|
-
if (mDisableFullscreen) {
|
|
1086
|
-
setImeOptions(returnKeyFlag | EditorInfo.IME_FLAG_NO_FULLSCREEN);
|
|
1087
|
-
} else {
|
|
1088
|
-
setImeOptions(returnKeyFlag);
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
|
-
@Override
|
|
1093
|
-
protected boolean verifyDrawable(Drawable drawable) {
|
|
1094
|
-
if (mContainsImages) {
|
|
1095
|
-
Spanned text = getText();
|
|
1096
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1097
|
-
for (TextInlineImageSpan span : spans) {
|
|
1098
|
-
if (span.getDrawable() == drawable) {
|
|
1099
|
-
return true;
|
|
1100
|
-
}
|
|
1101
|
-
}
|
|
1102
|
-
}
|
|
1103
|
-
return super.verifyDrawable(drawable);
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
|
-
@Override
|
|
1107
|
-
public void invalidateDrawable(Drawable drawable) {
|
|
1108
|
-
if (mContainsImages) {
|
|
1109
|
-
Spanned text = getText();
|
|
1110
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1111
|
-
for (TextInlineImageSpan span : spans) {
|
|
1112
|
-
if (span.getDrawable() == drawable) {
|
|
1113
|
-
invalidate();
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
}
|
|
1117
|
-
super.invalidateDrawable(drawable);
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
@Override
|
|
1121
|
-
public void onDetachedFromWindow() {
|
|
1122
|
-
super.onDetachedFromWindow();
|
|
1123
|
-
if (mContainsImages) {
|
|
1124
|
-
Spanned text = getText();
|
|
1125
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1126
|
-
for (TextInlineImageSpan span : spans) {
|
|
1127
|
-
span.onDetachedFromWindow();
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
@Override
|
|
1133
|
-
public void onStartTemporaryDetach() {
|
|
1134
|
-
super.onStartTemporaryDetach();
|
|
1135
|
-
if (mContainsImages) {
|
|
1136
|
-
Spanned text = getText();
|
|
1137
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1138
|
-
for (TextInlineImageSpan span : spans) {
|
|
1139
|
-
span.onStartTemporaryDetach();
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
}
|
|
1143
|
-
|
|
1144
|
-
@Override
|
|
1145
|
-
public void onAttachedToWindow() {
|
|
1146
|
-
super.onAttachedToWindow();
|
|
1147
|
-
|
|
1148
|
-
int selectionStart = getSelectionStart();
|
|
1149
|
-
int selectionEnd = getSelectionEnd();
|
|
1150
|
-
|
|
1151
|
-
// Used to ensure that text is selectable inside of removeClippedSubviews
|
|
1152
|
-
// See https://github.com/facebook/react-native/issues/6805 for original
|
|
1153
|
-
// fix that was ported to here.
|
|
1154
|
-
|
|
1155
|
-
super.setTextIsSelectable(true);
|
|
1156
|
-
|
|
1157
|
-
// Restore the selection since `setTextIsSelectable` changed it.
|
|
1158
|
-
maybeSetSelection(selectionStart, selectionEnd);
|
|
1159
|
-
|
|
1160
|
-
if (mContainsImages) {
|
|
1161
|
-
Spanned text = getText();
|
|
1162
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1163
|
-
for (TextInlineImageSpan span : spans) {
|
|
1164
|
-
span.onAttachedToWindow();
|
|
1165
|
-
}
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
if (mAutoFocus && !mDidAttachToWindow) {
|
|
1169
|
-
if (ReactNativeFeatureFlags.useEditTextStockAndroidFocusBehavior()) {
|
|
1170
|
-
requestFocusProgramatically();
|
|
1171
|
-
} else {
|
|
1172
|
-
requestFocusInternal();
|
|
1173
|
-
}
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
|
-
mDidAttachToWindow = true;
|
|
1177
|
-
}
|
|
1178
|
-
|
|
1179
|
-
@Override
|
|
1180
|
-
public void onFinishTemporaryDetach() {
|
|
1181
|
-
super.onFinishTemporaryDetach();
|
|
1182
|
-
if (mContainsImages) {
|
|
1183
|
-
Spanned text = getText();
|
|
1184
|
-
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
|
1185
|
-
for (TextInlineImageSpan span : spans) {
|
|
1186
|
-
span.onFinishTemporaryDetach();
|
|
1187
|
-
}
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
@Override
|
|
1192
|
-
public void setBackgroundColor(int color) {
|
|
1193
|
-
BackgroundStyleApplicator.setBackgroundColor(this, color);
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
public void setBorderWidth(int position, float width) {
|
|
1197
|
-
BackgroundStyleApplicator.setBorderWidth(
|
|
1198
|
-
this, LogicalEdge.values()[position], PixelUtil.toDIPFromPixel(width));
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
|
-
public void setBorderColor(int position, @Nullable Integer color) {
|
|
1202
|
-
BackgroundStyleApplicator.setBorderColor(this, LogicalEdge.values()[position], color);
|
|
1203
|
-
}
|
|
1204
|
-
|
|
1205
|
-
public int getBorderColor(int position) {
|
|
1206
|
-
@Nullable
|
|
1207
|
-
Integer borderColor =
|
|
1208
|
-
BackgroundStyleApplicator.getBorderColor(this, LogicalEdge.values()[position]);
|
|
1209
|
-
return borderColor == null ? Color.TRANSPARENT : borderColor;
|
|
1210
|
-
}
|
|
1211
|
-
|
|
1212
|
-
public void setBorderRadius(float borderRadius) {
|
|
1213
|
-
setBorderRadius(borderRadius, BorderRadiusProp.BORDER_RADIUS.ordinal());
|
|
1214
|
-
}
|
|
1215
|
-
|
|
1216
|
-
public void setBorderRadius(float borderRadius, int position) {
|
|
1217
|
-
@Nullable
|
|
1218
|
-
LengthPercentage radius =
|
|
1219
|
-
Float.isNaN(borderRadius)
|
|
1220
|
-
? null
|
|
1221
|
-
: new LengthPercentage(
|
|
1222
|
-
PixelUtil.toDIPFromPixel(borderRadius), LengthPercentageType.POINT);
|
|
1223
|
-
BackgroundStyleApplicator.setBorderRadius(this, BorderRadiusProp.values()[position], radius);
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
|
-
public void setBorderStyle(@Nullable String style) {
|
|
1227
|
-
BackgroundStyleApplicator.setBorderStyle(
|
|
1228
|
-
this, style == null ? null : BorderStyle.fromString(style));
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
public void setLetterSpacingPt(float letterSpacingPt) {
|
|
1232
|
-
mTextAttributes.setLetterSpacing(letterSpacingPt);
|
|
1233
|
-
applyTextAttributes();
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
public void setAllowFontScaling(boolean allowFontScaling) {
|
|
1237
|
-
if (mTextAttributes.getAllowFontScaling() != allowFontScaling) {
|
|
1238
|
-
mTextAttributes.setAllowFontScaling(allowFontScaling);
|
|
1239
|
-
applyTextAttributes();
|
|
1240
|
-
}
|
|
1241
|
-
}
|
|
1242
|
-
|
|
1243
|
-
public void setFontSize(float fontSize) {
|
|
1244
|
-
mTextAttributes.setFontSize(fontSize);
|
|
1245
|
-
applyTextAttributes();
|
|
1246
|
-
}
|
|
1247
|
-
|
|
1248
|
-
public void setMaxFontSizeMultiplier(float maxFontSizeMultiplier) {
|
|
1249
|
-
if (maxFontSizeMultiplier != mTextAttributes.getMaxFontSizeMultiplier()) {
|
|
1250
|
-
mTextAttributes.setMaxFontSizeMultiplier(maxFontSizeMultiplier);
|
|
1251
|
-
applyTextAttributes();
|
|
1252
|
-
}
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
public void setAutoFocus(boolean autoFocus) {
|
|
1256
|
-
mAutoFocus = autoFocus;
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
public void setSelectTextOnFocus(boolean selectTextOnFocus) {
|
|
1260
|
-
super.setSelectAllOnFocus(selectTextOnFocus);
|
|
1261
|
-
mSelectTextOnFocus = selectTextOnFocus;
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
public void setContextMenuHidden(boolean contextMenuHidden) {
|
|
1265
|
-
mContextMenuHidden = contextMenuHidden;
|
|
1266
|
-
}
|
|
1267
|
-
|
|
1268
|
-
protected void applyTextAttributes() {
|
|
1269
|
-
// In general, the `getEffective*` functions return `Float.NaN` if the
|
|
1270
|
-
// property hasn't been set.
|
|
1271
|
-
|
|
1272
|
-
// `getEffectiveFontSize` always returns a value so don't need to check for anything like
|
|
1273
|
-
// `Float.NaN`.
|
|
1274
|
-
setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextAttributes.getEffectiveFontSize());
|
|
1275
|
-
|
|
1276
|
-
float effectiveLetterSpacing = mTextAttributes.getEffectiveLetterSpacing();
|
|
1277
|
-
if (!Float.isNaN(effectiveLetterSpacing)) {
|
|
1278
|
-
setLetterSpacing(effectiveLetterSpacing);
|
|
1279
|
-
}
|
|
1280
|
-
}
|
|
1281
|
-
|
|
1282
|
-
@Nullable
|
|
1283
|
-
public StateWrapper getStateWrapper() {
|
|
1284
|
-
return mStateWrapper;
|
|
1285
|
-
}
|
|
1286
|
-
|
|
1287
|
-
public void setStateWrapper(StateWrapper stateWrapper) {
|
|
1288
|
-
mStateWrapper = stateWrapper;
|
|
1289
|
-
}
|
|
1290
|
-
|
|
1291
|
-
/**
|
|
1292
|
-
* Update the cached Spannable used in TextLayoutManager to measure the text in Fabric. This is
|
|
1293
|
-
* mostly copied from ReactTextInputShadowNode.java (the non-Fabric version) and
|
|
1294
|
-
* TextLayoutManager.java with some very minor modifications. There's some duplication between
|
|
1295
|
-
* here and TextLayoutManager, so there might be an opportunity for refactor.
|
|
1296
|
-
*/
|
|
1297
|
-
private void updateCachedSpannable() {
|
|
1298
|
-
// Noops in non-Fabric
|
|
1299
|
-
if (mStateWrapper == null) {
|
|
1300
|
-
return;
|
|
1301
|
-
}
|
|
1302
|
-
// If this view doesn't have an ID yet, we don't have a cache key, so bail here
|
|
1303
|
-
if (getId() == -1) {
|
|
1304
|
-
return;
|
|
1305
|
-
}
|
|
1306
|
-
|
|
1307
|
-
Editable currentText = getText();
|
|
1308
|
-
boolean haveText = currentText != null && currentText.length() > 0;
|
|
1309
|
-
|
|
1310
|
-
SpannableStringBuilder sb = new SpannableStringBuilder();
|
|
1311
|
-
|
|
1312
|
-
// A note of caution: appending currentText to sb appends all the spans of currentText - not
|
|
1313
|
-
// copies of the Spans, but the actual span objects. Any modifications to sb after that point
|
|
1314
|
-
// can modify the spans of sb/currentText, impact the text or spans visible on screen, and
|
|
1315
|
-
// also call the TextChangeWatcher methods.
|
|
1316
|
-
if (haveText) {
|
|
1317
|
-
// This is here as a workaround for T76236115, which looks like this:
|
|
1318
|
-
// Hopefully we can delete all this stuff if we can get rid of the soft errors.
|
|
1319
|
-
// - android.text.SpannableStringBuilder.charAt (SpannableStringBuilder.java:123)
|
|
1320
|
-
// - android.text.CharSequenceCharacterIterator.current
|
|
1321
|
-
// (CharSequenceCharacterIterator.java:58)
|
|
1322
|
-
// - android.text.CharSequenceCharacterIterator.setIndex
|
|
1323
|
-
// (CharSequenceCharacterIterator.java:83)
|
|
1324
|
-
// - android.icu.text.RuleBasedBreakIterator.CISetIndex32 (RuleBasedBreakIterator.java:1126)
|
|
1325
|
-
// - android.icu.text.RuleBasedBreakIterator.isBoundary (RuleBasedBreakIterator.java:503)
|
|
1326
|
-
// - android.text.method.WordIterator.isBoundary (WordIterator.java:95)
|
|
1327
|
-
// - android.widget.Editor$SelectionHandleView.positionAtCursorOffset (Editor.java:6666)
|
|
1328
|
-
// - android.widget.Editor$HandleView.invalidate (Editor.java:5241)
|
|
1329
|
-
// - android.widget.Editor$SelectionModifierCursorController.invalidateHandles
|
|
1330
|
-
// (Editor.java:7442)
|
|
1331
|
-
// - android.widget.Editor.invalidateHandlesAndActionMode (Editor.java:2112)
|
|
1332
|
-
// - android.widget.TextView.spanChange (TextView.java:11189)
|
|
1333
|
-
// - android.widget.TextView$ChangeWatcher.onSpanAdded (TextView.java:14189)
|
|
1334
|
-
// - android.text.SpannableStringBuilder.sendSpanAdded (SpannableStringBuilder.java:1283)
|
|
1335
|
-
// - android.text.SpannableStringBuilder.sendToSpanWatchers (SpannableStringBuilder.java:663)
|
|
1336
|
-
// - android.text.SpannableStringBuilder.replace (SpannableStringBuilder.java:579)
|
|
1337
|
-
// - android.text.SpannableStringBuilder.append (SpannableStringBuilder.java:269)
|
|
1338
|
-
// - ReactEditText.updateCachedSpannable (ReactEditText.java:995)
|
|
1339
|
-
// - ReactEditText$TextWatcherDelegator.onTextChanged (ReactEditText.java:1044)
|
|
1340
|
-
// - android.widget.TextView.sendOnTextChanged (TextView.java:10972)
|
|
1341
|
-
// ...
|
|
1342
|
-
// - android.text.method.BaseKeyListener.onKeyDown (BaseKeyListener.java:479)
|
|
1343
|
-
// - android.text.method.QwertyKeyListener.onKeyDown (QwertyKeyListener.java:362)
|
|
1344
|
-
// - ReactEditText$InternalKeyListener.onKeyDown (ReactEditText.java:1094)
|
|
1345
|
-
// ...
|
|
1346
|
-
// - android.app.Activity.dispatchKeyEvent (Activity.java:3447)
|
|
1347
|
-
try {
|
|
1348
|
-
sb.append(currentText.subSequence(0, currentText.length()));
|
|
1349
|
-
} catch (IndexOutOfBoundsException e) {
|
|
1350
|
-
ReactSoftExceptionLogger.logSoftException(TAG, e);
|
|
1351
|
-
}
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
// If we don't have text, make sure we have *something* to measure.
|
|
1355
|
-
// Hint has the same dimensions - the only thing that's different is background or foreground
|
|
1356
|
-
// color
|
|
1357
|
-
if (!haveText) {
|
|
1358
|
-
if (getHint() != null && getHint().length() > 0) {
|
|
1359
|
-
sb.append(getHint());
|
|
1360
|
-
} else if (ViewUtil.getUIManagerType(this) != UIManagerType.FABRIC) {
|
|
1361
|
-
// Measure something so we have correct height, even if there's no string.
|
|
1362
|
-
sb.append("I");
|
|
1363
|
-
}
|
|
1364
|
-
}
|
|
1365
|
-
|
|
1366
|
-
addSpansFromStyleAttributes(sb);
|
|
1367
|
-
sb.setSpan(
|
|
1368
|
-
new ReactTextPaintHolderSpan(new TextPaint(getPaint())),
|
|
1369
|
-
0,
|
|
1370
|
-
sb.length(),
|
|
1371
|
-
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
|
|
1372
|
-
TextLayoutManager.setCachedSpannableForTag(getId(), sb);
|
|
1373
|
-
}
|
|
1374
|
-
|
|
1375
|
-
void setEventDispatcher(@Nullable EventDispatcher eventDispatcher) {
|
|
1376
|
-
mEventDispatcher = eventDispatcher;
|
|
1377
|
-
}
|
|
1378
|
-
|
|
1379
|
-
public void setOverflow(@Nullable String overflow) {
|
|
1380
|
-
if (overflow == null) {
|
|
1381
|
-
mOverflow = Overflow.VISIBLE;
|
|
1382
|
-
} else {
|
|
1383
|
-
@Nullable Overflow parsedOverflow = Overflow.fromString(overflow);
|
|
1384
|
-
mOverflow = parsedOverflow == null ? Overflow.VISIBLE : parsedOverflow;
|
|
1385
|
-
}
|
|
1386
|
-
|
|
1387
|
-
invalidate();
|
|
1388
|
-
}
|
|
1389
|
-
|
|
1390
|
-
@Override
|
|
1391
|
-
public void onDraw(Canvas canvas) {
|
|
1392
|
-
if (mOverflow != Overflow.VISIBLE) {
|
|
1393
|
-
BackgroundStyleApplicator.clipToPaddingBox(this, canvas);
|
|
1394
|
-
}
|
|
1395
|
-
|
|
1396
|
-
super.onDraw(canvas);
|
|
1397
|
-
}
|
|
1398
|
-
|
|
1399
|
-
/**
|
|
1400
|
-
* This class will redirect *TextChanged calls to the listeners only in the case where the text is
|
|
1401
|
-
* changed by the user, and not explicitly set by JS.
|
|
1402
|
-
*/
|
|
1403
|
-
private class TextWatcherDelegator implements TextWatcher {
|
|
1404
|
-
|
|
1405
|
-
@Override
|
|
1406
|
-
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
1407
|
-
if (!mIsSettingTextFromJS && mListeners != null) {
|
|
1408
|
-
for (TextWatcher listener : mListeners) {
|
|
1409
|
-
listener.beforeTextChanged(s, start, count, after);
|
|
1410
|
-
}
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
@Override
|
|
1415
|
-
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
1416
|
-
if (DEBUG_MODE) {
|
|
1417
|
-
FLog.e(
|
|
1418
|
-
TAG, "onTextChanged[" + getId() + "]: " + s + " " + start + " " + before + " " + count);
|
|
1419
|
-
}
|
|
1420
|
-
|
|
1421
|
-
if (!mIsSettingTextFromJS && mListeners != null) {
|
|
1422
|
-
for (TextWatcher listener : mListeners) {
|
|
1423
|
-
listener.onTextChanged(s, start, before, count);
|
|
1424
|
-
}
|
|
1425
|
-
}
|
|
1426
|
-
|
|
1427
|
-
updateCachedSpannable();
|
|
1428
|
-
|
|
1429
|
-
onContentSizeChange();
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
@Override
|
|
1433
|
-
public void afterTextChanged(Editable s) {
|
|
1434
|
-
if (!mIsSettingTextFromJS && mListeners != null) {
|
|
1435
|
-
for (TextWatcher listener : mListeners) {
|
|
1436
|
-
listener.afterTextChanged(s);
|
|
1437
|
-
}
|
|
1438
|
-
}
|
|
1439
|
-
}
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
|
-
/*
|
|
1443
|
-
* This class is set as the KeyListener for the underlying TextView
|
|
1444
|
-
* It does two things
|
|
1445
|
-
* 1) Provides the same answer to getInputType() as the real KeyListener would have which allows
|
|
1446
|
-
* the proper keyboard to pop up on screen
|
|
1447
|
-
* 2) Permits all keyboard input through
|
|
1448
|
-
*/
|
|
1449
|
-
private static class InternalKeyListener implements KeyListener {
|
|
1450
|
-
|
|
1451
|
-
private int mInputType = 0;
|
|
1452
|
-
|
|
1453
|
-
public InternalKeyListener() {}
|
|
1454
|
-
|
|
1455
|
-
public void setInputType(int inputType) {
|
|
1456
|
-
mInputType = inputType;
|
|
1457
|
-
}
|
|
1458
|
-
|
|
1459
|
-
/*
|
|
1460
|
-
* getInputType will return whatever value is passed in. This will allow the proper keyboard
|
|
1461
|
-
* to be shown on screen but without the actual filtering done by other KeyListeners
|
|
1462
|
-
*/
|
|
1463
|
-
@Override
|
|
1464
|
-
public int getInputType() {
|
|
1465
|
-
return mInputType;
|
|
1466
|
-
}
|
|
1467
|
-
|
|
1468
|
-
/*
|
|
1469
|
-
* All overrides of key handling defer to the underlying KeyListener which is shared by all
|
|
1470
|
-
* ReactEditText instances. It will basically allow any/all keyboard input whether from
|
|
1471
|
-
* physical keyboard or from soft input.
|
|
1472
|
-
*/
|
|
1473
|
-
@Override
|
|
1474
|
-
public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) {
|
|
1475
|
-
return sKeyListener.onKeyDown(view, text, keyCode, event);
|
|
1476
|
-
}
|
|
1477
|
-
|
|
1478
|
-
@Override
|
|
1479
|
-
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
|
|
1480
|
-
return sKeyListener.onKeyUp(view, text, keyCode, event);
|
|
1481
|
-
}
|
|
1482
|
-
|
|
1483
|
-
@Override
|
|
1484
|
-
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
|
|
1485
|
-
return sKeyListener.onKeyOther(view, text, event);
|
|
1486
|
-
}
|
|
1487
|
-
|
|
1488
|
-
@Override
|
|
1489
|
-
public void clearMetaKeyState(View view, Editable content, int states) {
|
|
1490
|
-
sKeyListener.clearMetaKeyState(view, content, states);
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
}
|