react-native-tvos 0.85.3-1 → 0.86.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/Animated/AnimatedImplementation.js +6 -6
- package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
- package/Libraries/Animated/components/AnimatedImage.js +3 -3
- package/Libraries/Animated/components/AnimatedText.js +3 -3
- package/Libraries/Animated/createAnimatedComponent.js +7 -7
- package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
- package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
- package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
- package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
- package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
- package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/RCTBlobCollector.h +1 -1
- package/Libraries/Blob/RCTBlobCollector.mm +14 -26
- package/Libraries/Blob/RCTBlobManager.mm +11 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
- package/Libraries/Components/Keyboard/Keyboard.js +4 -2
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
- package/Libraries/Components/Pressable/Pressable.js +2 -2
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
- package/Libraries/Components/ScrollView/ScrollView.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
- package/Libraries/Components/Switch/Switch.js +1 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
- package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
- package/Libraries/Components/TextInput/TextInput.js +5 -5
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
- package/Libraries/Components/Touchable/PooledClass.js +4 -4
- package/Libraries/Components/Touchable/Touchable.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
- package/Libraries/Components/View/View.js +100 -95
- package/Libraries/Components/View/ViewPropTypes.js +3 -1
- package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
- package/Libraries/Core/ExceptionsManager.js +2 -8
- package/Libraries/Core/InitializeCore.js +0 -13
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
- package/Libraries/Core/Timers/JSTimers.js +2 -2
- package/Libraries/Core/Timers/immediateShim.js +1 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -1
- package/Libraries/Core/setUpSegmentFetcher.js +1 -1
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
- package/Libraries/Image/Image.android.js +15 -35
- package/Libraries/Image/RCTImageLoader.mm +4 -2
- package/Libraries/Image/RelativeImageStub.js +2 -2
- package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/LogBox/LogBox.js +2 -2
- package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
- package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
- package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
- package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
- package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
- package/Libraries/Modal/Modal.js +12 -7
- package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
- package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
- package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.mm +1 -2
- package/Libraries/Network/XMLHttpRequest.js +29 -12
- package/Libraries/Pressability/Pressability.js +2 -2
- package/Libraries/ReactNative/AppContainer-dev.js +2 -3
- package/Libraries/ReactNative/AppContainer-prod.js +1 -2
- package/Libraries/ReactNative/AppContainer.js +0 -1
- package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
- package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
- package/Libraries/ReactNative/FabricUIManager.js +6 -0
- package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
- package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
- package/Libraries/ReactNative/RendererImplementation.js +26 -143
- package/Libraries/ReactNative/RendererProxy.js +4 -15
- package/Libraries/ReactNative/renderApplication.js +33 -59
- package/Libraries/ReactNative/requireNativeComponent.js +3 -3
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
- package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
- package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
- package/Libraries/StyleSheet/flattenStyle.js +1 -1
- package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
- package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
- package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
- package/Libraries/StyleSheet/processBoxShadow.js +9 -47
- package/Libraries/StyleSheet/processFilter.js +16 -8
- package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
- package/Libraries/Text/Text.js +4 -4
- package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
- package/Libraries/Text/TextNativeComponent.js +4 -4
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
- package/Libraries/Types/CodegenTypes.js +7 -4
- package/Libraries/Types/ReactDevToolsTypes.js +1 -1
- package/Libraries/Utilities/BackHandler.android.js +11 -3
- package/Libraries/Utilities/BackHandler.d.ts +11 -1
- package/Libraries/Utilities/BackHandler.ios.js +3 -1
- package/Libraries/Utilities/BackHandler.js.flow +6 -1
- package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +2 -2
- package/Libraries/Utilities/codegenNativeComponent.js +4 -4
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
- package/Libraries/Utilities/stringifySafe.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +4 -4
- package/Libraries/vendor/emitter/EventEmitter.js +27 -13
- package/React/Base/RCTBundleURLProvider.h +19 -1
- package/React/Base/RCTBundleURLProvider.mm +82 -0
- package/React/Base/RCTDefines.h +1 -1
- package/React/Base/RCTMultipartDataTask.h +1 -1
- package/React/Base/RCTMultipartDataTask.m +0 -3
- package/React/Base/RCTRootView.h +4 -0
- package/React/Base/RCTRootViewDelegate.h +5 -2
- package/React/Base/RCTVersion.m +3 -3
- package/React/Base/Surface/RCTSurface.h +3 -0
- package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
- package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
- package/React/Base/Surface/RCTSurfaceView.mm +2 -1
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
- package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
- package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
- package/React/CoreModules/RCTWebSocketModule.mm +45 -6
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
- package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
- package/React/DevSupport/RCTPackagerConnection.mm +13 -11
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
- package/React/Fabric/RCTConversions.h +14 -0
- package/React/Fabric/RCTScheduler.mm +18 -0
- package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
- package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
- package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
- package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
- package/React/Modules/RCTUIManager.mm +1 -1
- package/React/Profiler/RCTProfile.h +5 -0
- package/React/Profiler/RCTProfile.m +2 -1
- package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
- package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
- package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
- package/React/Views/RCTLayout.m +4 -3
- package/React/Views/ScrollView/RCTScrollView.h +6 -2
- package/ReactAndroid/api/ReactAndroid.api +37 -27
- package/ReactAndroid/build.gradle.kts +28 -21
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
- package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
- package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
- package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
- package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
- package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
- package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
- package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
- package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
- package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
- package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
- package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
- package/ReactCommon/React-Fabric.podspec +7 -0
- package/ReactCommon/React-FabricComponents.podspec +1 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
- package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
- package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
- package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
- package/ReactCommon/jsi/jsi/decorator.h +93 -0
- package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
- package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
- package/ReactCommon/jsi/jsi/jsi.h +553 -224
- package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
- package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
- package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
- package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
- package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
- package/ReactCommon/logger/react_native_log.cpp +0 -1
- package/ReactCommon/react/bridging/Array.h +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
- package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
- package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
- package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
- package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
- package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
- package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
- package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
- package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
- package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
- package/ReactCommon/react/networking/NetworkReporter.h +0 -1
- package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
- package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
- package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
- package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
- package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
- package/ReactCommon/react/renderer/animations/utils.h +12 -1
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
- package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
- package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
- package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
- package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
- package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
- package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
- package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
- package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
- package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
- package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
- package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
- package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
- package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
- package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
- package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
- package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
- package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
- package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
- package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
- package/ReactCommon/react/renderer/core/Props.cpp +20 -0
- package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
- package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
- package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
- package/ReactCommon/react/renderer/core/conversions.h +4 -0
- package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
- package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
- package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
- package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
- package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
- package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
- package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
- package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
- package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
- package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
- package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
- package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
- package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
- package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
- package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
- package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
- package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
- package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
- package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
- package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
- package/ReactCommon/react/timing/React-timing.podspec +2 -0
- package/ReactCommon/react/timing/primitives.h +33 -1
- package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
- package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
- package/ReactCommon/yoga/yoga/YGNode.h +1 -1
- package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
- package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
- package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
- package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
- package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
- package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
- package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
- package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
- package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
- package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
- package/ReactCommon/yoga/yoga/event/event.h +1 -0
- package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
- package/ReactCommon/yoga/yoga/node/Node.h +4 -4
- package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
- package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
- package/ReactCommon/yoga/yoga/style/Style.h +261 -71
- package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
- package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
- package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
- package/cli.js +1 -1
- package/flow/HermesInternalType.js +1 -1
- package/flow/bom.js.flow +95 -3
- package/flow/dom.js.flow +89 -89
- package/gradle/libs.versions.toml +3 -1
- package/index.js +30 -3
- package/index.js.flow +23 -1
- package/package.json +11 -11
- package/react-native.config.js +3 -3
- package/scripts/cocoapods/rncore.rb +65 -11
- package/scripts/cocoapods/rndependencies.rb +65 -11
- package/scripts/cocoapods/utils.rb +52 -0
- package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
- package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
- package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
- package/scripts/codegen/generate-specs-cli-executor.js +1 -1
- package/scripts/generate-codegen-artifacts.js +20 -2
- package/scripts/generate-provider-cli.js +1 -1
- package/scripts/react_native_pods.rb +25 -2
- package/scripts/react_native_pods_utils/script_phases.rb +9 -3
- package/scripts/replace-rncore-version.js +20 -0
- package/scripts/xcode/with-environment.sh +7 -1
- package/sdks/.hermesv1version +1 -1
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-utils.rb +92 -5
- package/sdks/hermes-engine/version.properties +2 -2
- package/src/private/animated/NativeAnimatedValidation.js +1 -1
- package/src/private/animated/createAnimatedPropsHook.js +2 -2
- package/src/private/components/virtualcollection/FlingConstants.js +21 -0
- package/src/private/components/virtualcollection/Virtual.js +62 -0
- package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
- package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
- package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
- package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
- package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
- package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
- package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
- package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
- package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
- package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
- package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
- package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
- package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
- package/src/private/renderer/events/ReactNativeResponder.js +687 -0
- package/src/private/renderer/events/ResponderEvent.js +40 -0
- package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
- package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
- package/src/private/setup/setUpDOM.js +20 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
- package/src/private/styles/composeStyles.js +1 -1
- package/src/private/types/HostComponent.js +1 -1
- package/src/private/utilities/toExtendedError.js +1 -1
- package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
- package/src/private/webapis/dom/events/Event.js +10 -1
- package/src/private/webapis/dom/events/EventTarget.js +60 -18
- package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
- package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
- package/src/private/webapis/structuredClone/structuredClone.js +1 -1
- package/src/private/webapis/webidl/PlatformObjects.js +4 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
- package/Libraries/Renderer/shims/ReactNative.js +0 -27
- package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
- package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
- package/Libraries/Utilities/createPerformanceLogger.js +0 -329
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
- package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
package com.facebook.react.views.text
|
|
9
9
|
|
|
10
|
-
import android.content.
|
|
10
|
+
import android.content.res.AssetManager
|
|
11
11
|
import android.graphics.Color
|
|
12
12
|
import android.graphics.Typeface
|
|
13
13
|
import android.os.Build
|
|
@@ -31,6 +31,7 @@ import com.facebook.react.common.ReactConstants
|
|
|
31
31
|
import com.facebook.react.common.mapbuffer.MapBuffer
|
|
32
32
|
import com.facebook.react.common.mapbuffer.ReadableMapBuffer
|
|
33
33
|
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
|
|
34
|
+
import com.facebook.react.uimanager.DisplayMetricsHolder
|
|
34
35
|
import com.facebook.react.uimanager.PixelUtil
|
|
35
36
|
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
36
37
|
import com.facebook.react.uimanager.PixelUtil.pxToDp
|
|
@@ -104,6 +105,18 @@ internal object TextLayoutManager {
|
|
|
104
105
|
|
|
105
106
|
private val tagToSpannableCache = ConcurrentHashMap<Int, Spannable>()
|
|
106
107
|
|
|
108
|
+
// Lazily cached Method for StaticLayout.Builder.setUseBoundsForWidth (API 35+).
|
|
109
|
+
// Reflection is needed because some internal targets compile against an SDK older than 35.
|
|
110
|
+
private val setUseBoundsForWidthMethod: java.lang.reflect.Method? by lazy {
|
|
111
|
+
try {
|
|
112
|
+
StaticLayout.Builder::class
|
|
113
|
+
.java
|
|
114
|
+
.getMethod("setUseBoundsForWidth", Boolean::class.javaPrimitiveType)
|
|
115
|
+
} catch (_: ReflectiveOperationException) {
|
|
116
|
+
null
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
107
120
|
fun setCachedSpannableForTag(reactTag: Int, sp: Spannable): Unit {
|
|
108
121
|
tagToSpannableCache[reactTag] = sp
|
|
109
122
|
}
|
|
@@ -217,7 +230,7 @@ internal object TextLayoutManager {
|
|
|
217
230
|
}
|
|
218
231
|
|
|
219
232
|
private fun buildSpannableFromFragments(
|
|
220
|
-
|
|
233
|
+
assets: AssetManager,
|
|
221
234
|
fragments: MapBuffer,
|
|
222
235
|
sb: SpannableStringBuilder,
|
|
223
236
|
ops: MutableList<SetSpanOperation>,
|
|
@@ -296,7 +309,7 @@ internal object TextLayoutManager {
|
|
|
296
309
|
textAttributes.fontWeight,
|
|
297
310
|
textAttributes.fontFeatureSettings,
|
|
298
311
|
textAttributes.fontFamily,
|
|
299
|
-
|
|
312
|
+
assets,
|
|
300
313
|
),
|
|
301
314
|
)
|
|
302
315
|
)
|
|
@@ -352,7 +365,7 @@ internal object TextLayoutManager {
|
|
|
352
365
|
)
|
|
353
366
|
|
|
354
367
|
private fun buildSpannableFromFragmentsOptimized(
|
|
355
|
-
|
|
368
|
+
assets: AssetManager,
|
|
356
369
|
fragments: MapBuffer,
|
|
357
370
|
outputReactTags: IntArray?,
|
|
358
371
|
): Spannable {
|
|
@@ -472,7 +485,7 @@ internal object TextLayoutManager {
|
|
|
472
485
|
fragment.props.fontWeight,
|
|
473
486
|
fragment.props.fontFeatureSettings,
|
|
474
487
|
fragment.props.fontFamily,
|
|
475
|
-
|
|
488
|
+
assets,
|
|
476
489
|
),
|
|
477
490
|
start,
|
|
478
491
|
end,
|
|
@@ -528,7 +541,7 @@ internal object TextLayoutManager {
|
|
|
528
541
|
}
|
|
529
542
|
|
|
530
543
|
fun getOrCreateSpannableForText(
|
|
531
|
-
|
|
544
|
+
assets: AssetManager,
|
|
532
545
|
attributedString: MapBuffer,
|
|
533
546
|
reactTextViewManagerCallback: ReactTextViewManagerCallback?,
|
|
534
547
|
): Spannable {
|
|
@@ -539,7 +552,7 @@ internal object TextLayoutManager {
|
|
|
539
552
|
} else {
|
|
540
553
|
text =
|
|
541
554
|
createSpannableFromAttributedString(
|
|
542
|
-
|
|
555
|
+
assets,
|
|
543
556
|
attributedString.getMapBuffer(AS_KEY_FRAGMENTS),
|
|
544
557
|
reactTextViewManagerCallback,
|
|
545
558
|
null,
|
|
@@ -550,13 +563,13 @@ internal object TextLayoutManager {
|
|
|
550
563
|
}
|
|
551
564
|
|
|
552
565
|
private fun createSpannableFromAttributedString(
|
|
553
|
-
|
|
566
|
+
assets: AssetManager,
|
|
554
567
|
fragments: MapBuffer,
|
|
555
568
|
reactTextViewManagerCallback: ReactTextViewManagerCallback?,
|
|
556
569
|
outputReactTags: IntArray?,
|
|
557
570
|
): Spannable {
|
|
558
571
|
if (ReactNativeFeatureFlags.enableAndroidTextMeasurementOptimizations()) {
|
|
559
|
-
val spannable = buildSpannableFromFragmentsOptimized(
|
|
572
|
+
val spannable = buildSpannableFromFragmentsOptimized(assets, fragments, outputReactTags)
|
|
560
573
|
|
|
561
574
|
reactTextViewManagerCallback?.onPostProcessSpannable(spannable)
|
|
562
575
|
return spannable
|
|
@@ -568,7 +581,7 @@ internal object TextLayoutManager {
|
|
|
568
581
|
// a new spannable will be wiped out
|
|
569
582
|
val ops: MutableList<SetSpanOperation> = ArrayList()
|
|
570
583
|
|
|
571
|
-
buildSpannableFromFragments(
|
|
584
|
+
buildSpannableFromFragments(assets, fragments, sb, ops, outputReactTags)
|
|
572
585
|
|
|
573
586
|
// TODO T31905686: add support for inline Images
|
|
574
587
|
// While setting the Spans on the final text, we also check whether any of them are images.
|
|
@@ -605,9 +618,12 @@ internal object TextLayoutManager {
|
|
|
605
618
|
boring != null &&
|
|
606
619
|
(widthYogaMeasureMode == YogaMeasureMode.UNDEFINED || boring.width <= floor(width))
|
|
607
620
|
) {
|
|
621
|
+
// Guard uses floor() but layout width below uses ceil() for EXACTLY mode intentionally:
|
|
622
|
+
// text that barely fails the floor-based guard falls through to StaticLayout, which also
|
|
623
|
+
// ceils for EXACTLY — no wrapping results, just a slightly less optimal layout class in a
|
|
624
|
+
// rare subpixel edge case.
|
|
608
625
|
val layoutWidth =
|
|
609
|
-
if (widthYogaMeasureMode == YogaMeasureMode.EXACTLY)
|
|
610
|
-
else boring.width
|
|
626
|
+
if (widthYogaMeasureMode == YogaMeasureMode.EXACTLY) ceil(width).toInt() else boring.width
|
|
611
627
|
return BoringLayout.make(
|
|
612
628
|
text,
|
|
613
629
|
paint,
|
|
@@ -620,63 +636,14 @@ internal object TextLayoutManager {
|
|
|
620
636
|
)
|
|
621
637
|
}
|
|
622
638
|
|
|
623
|
-
|
|
624
|
-
if (
|
|
625
|
-
Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM ||
|
|
626
|
-
!ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
|
|
627
|
-
) {
|
|
628
|
-
val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
|
|
629
|
-
|
|
630
|
-
val layoutWidth =
|
|
631
|
-
when (widthYogaMeasureMode) {
|
|
632
|
-
YogaMeasureMode.EXACTLY -> floor(width).toInt()
|
|
633
|
-
YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
|
|
634
|
-
else -> desiredWidth
|
|
635
|
-
}
|
|
636
|
-
return buildLayout(
|
|
637
|
-
text,
|
|
638
|
-
layoutWidth,
|
|
639
|
-
includeFontPadding,
|
|
640
|
-
textBreakStrategy,
|
|
641
|
-
hyphenationFrequency,
|
|
642
|
-
alignment,
|
|
643
|
-
justificationMode,
|
|
644
|
-
ellipsizeMode,
|
|
645
|
-
maxNumberOfLines,
|
|
646
|
-
paint,
|
|
647
|
-
)
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
// Android 15+: Need to account for visual bounds
|
|
651
|
-
// Step 1: Create unconstrained layout to get visual bounds width
|
|
652
|
-
val unconstrainedLayout =
|
|
653
|
-
buildLayout(
|
|
654
|
-
text,
|
|
655
|
-
Int.MAX_VALUE / 2,
|
|
656
|
-
includeFontPadding,
|
|
657
|
-
textBreakStrategy,
|
|
658
|
-
hyphenationFrequency,
|
|
659
|
-
alignment,
|
|
660
|
-
justificationMode,
|
|
661
|
-
null,
|
|
662
|
-
ReactConstants.UNSET,
|
|
663
|
-
paint,
|
|
664
|
-
)
|
|
665
|
-
|
|
666
|
-
// Calculate visual bounds width from unconstrained layout
|
|
667
|
-
var desiredVisualWidth = 0f
|
|
668
|
-
for (i in 0 until unconstrainedLayout.lineCount) {
|
|
669
|
-
val lineWidth = unconstrainedLayout.getLineRight(i) - unconstrainedLayout.getLineLeft(i)
|
|
670
|
-
desiredVisualWidth = max(desiredVisualWidth, lineWidth)
|
|
671
|
-
}
|
|
639
|
+
val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
|
|
672
640
|
|
|
673
641
|
val layoutWidth =
|
|
674
642
|
when (widthYogaMeasureMode) {
|
|
675
|
-
YogaMeasureMode.
|
|
676
|
-
|
|
643
|
+
YogaMeasureMode.EXACTLY -> ceil(width).toInt()
|
|
644
|
+
YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
|
|
645
|
+
else -> desiredWidth
|
|
677
646
|
}
|
|
678
|
-
|
|
679
|
-
// Step 2: Create final layout with correct width
|
|
680
647
|
return buildLayout(
|
|
681
648
|
text,
|
|
682
649
|
layoutWidth,
|
|
@@ -723,13 +690,6 @@ internal object TextLayoutManager {
|
|
|
723
690
|
builder.setUseLineSpacingFromFallbacks(true)
|
|
724
691
|
}
|
|
725
692
|
|
|
726
|
-
if (
|
|
727
|
-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM &&
|
|
728
|
-
ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
|
|
729
|
-
) {
|
|
730
|
-
builder.setUseBoundsForWidth(true)
|
|
731
|
-
}
|
|
732
|
-
|
|
733
693
|
return builder.build()
|
|
734
694
|
}
|
|
735
695
|
|
|
@@ -740,7 +700,7 @@ internal object TextLayoutManager {
|
|
|
740
700
|
private fun updateTextPaint(
|
|
741
701
|
paint: TextPaint,
|
|
742
702
|
baseTextAttributes: TextAttributeProps,
|
|
743
|
-
|
|
703
|
+
assets: AssetManager,
|
|
744
704
|
) {
|
|
745
705
|
if (baseTextAttributes.fontSize != ReactConstants.UNSET) {
|
|
746
706
|
paint.textSize = baseTextAttributes.fontSize.toFloat()
|
|
@@ -757,7 +717,7 @@ internal object TextLayoutManager {
|
|
|
757
717
|
baseTextAttributes.fontStyle,
|
|
758
718
|
baseTextAttributes.fontWeight,
|
|
759
719
|
baseTextAttributes.fontFamily,
|
|
760
|
-
|
|
720
|
+
assets,
|
|
761
721
|
)
|
|
762
722
|
paint.setTypeface(typeface)
|
|
763
723
|
|
|
@@ -779,28 +739,28 @@ internal object TextLayoutManager {
|
|
|
779
739
|
*/
|
|
780
740
|
private fun scratchPaintWithAttributes(
|
|
781
741
|
baseTextAttributes: TextAttributeProps,
|
|
782
|
-
|
|
742
|
+
assets: AssetManager,
|
|
783
743
|
): TextPaint {
|
|
784
744
|
val paint = checkNotNull(textPaintInstance.get())
|
|
785
745
|
paint.setTypeface(null)
|
|
786
746
|
paint.textSize = 12f
|
|
787
747
|
paint.isFakeBoldText = false
|
|
788
748
|
paint.textSkewX = 0f
|
|
789
|
-
updateTextPaint(paint, baseTextAttributes,
|
|
749
|
+
updateTextPaint(paint, baseTextAttributes, assets)
|
|
790
750
|
return paint
|
|
791
751
|
}
|
|
792
752
|
|
|
793
753
|
private fun newPaintWithAttributes(
|
|
794
754
|
baseTextAttributes: TextAttributeProps,
|
|
795
|
-
|
|
755
|
+
assets: AssetManager,
|
|
796
756
|
): TextPaint {
|
|
797
757
|
val paint = TextPaint(TextPaint.ANTI_ALIAS_FLAG)
|
|
798
|
-
updateTextPaint(paint, baseTextAttributes,
|
|
758
|
+
updateTextPaint(paint, baseTextAttributes, assets)
|
|
799
759
|
return paint
|
|
800
760
|
}
|
|
801
761
|
|
|
802
762
|
private fun createLayoutForMeasurement(
|
|
803
|
-
|
|
763
|
+
assets: AssetManager,
|
|
804
764
|
attributedString: MapBuffer,
|
|
805
765
|
paragraphAttributes: MapBuffer,
|
|
806
766
|
width: Float,
|
|
@@ -809,7 +769,7 @@ internal object TextLayoutManager {
|
|
|
809
769
|
heightYogaMeasureMode: YogaMeasureMode,
|
|
810
770
|
reactTextViewManagerCallback: ReactTextViewManagerCallback?,
|
|
811
771
|
): Layout {
|
|
812
|
-
val text = getOrCreateSpannableForText(
|
|
772
|
+
val text = getOrCreateSpannableForText(assets, attributedString, reactTextViewManagerCallback)
|
|
813
773
|
|
|
814
774
|
val paint: TextPaint
|
|
815
775
|
if (attributedString.contains(AS_KEY_CACHE_ID)) {
|
|
@@ -817,7 +777,7 @@ internal object TextLayoutManager {
|
|
|
817
777
|
} else {
|
|
818
778
|
val baseTextAttributes =
|
|
819
779
|
TextAttributeProps.fromMapBuffer(attributedString.getMapBuffer(AS_KEY_BASE_ATTRIBUTES))
|
|
820
|
-
paint = scratchPaintWithAttributes(baseTextAttributes,
|
|
780
|
+
paint = scratchPaintWithAttributes(baseTextAttributes, assets)
|
|
821
781
|
}
|
|
822
782
|
|
|
823
783
|
return createLayout(
|
|
@@ -922,7 +882,7 @@ internal object TextLayoutManager {
|
|
|
922
882
|
|
|
923
883
|
@JvmStatic
|
|
924
884
|
fun createPreparedLayout(
|
|
925
|
-
|
|
885
|
+
assets: AssetManager,
|
|
926
886
|
attributedString: ReadableMapBuffer,
|
|
927
887
|
paragraphAttributes: ReadableMapBuffer,
|
|
928
888
|
width: Float,
|
|
@@ -935,7 +895,7 @@ internal object TextLayoutManager {
|
|
|
935
895
|
val reactTags = IntArray(fragments.count)
|
|
936
896
|
val text =
|
|
937
897
|
createSpannableFromAttributedString(
|
|
938
|
-
|
|
898
|
+
assets,
|
|
939
899
|
fragments,
|
|
940
900
|
reactTextViewManagerCallback,
|
|
941
901
|
reactTags,
|
|
@@ -945,7 +905,7 @@ internal object TextLayoutManager {
|
|
|
945
905
|
val result =
|
|
946
906
|
createLayout(
|
|
947
907
|
text,
|
|
948
|
-
newPaintWithAttributes(baseTextAttributes,
|
|
908
|
+
newPaintWithAttributes(baseTextAttributes, assets),
|
|
949
909
|
attributedString,
|
|
950
910
|
paragraphAttributes,
|
|
951
911
|
width,
|
|
@@ -1085,7 +1045,7 @@ internal object TextLayoutManager {
|
|
|
1085
1045
|
|
|
1086
1046
|
@JvmStatic
|
|
1087
1047
|
fun measureText(
|
|
1088
|
-
|
|
1048
|
+
assets: AssetManager,
|
|
1089
1049
|
attributedString: MapBuffer,
|
|
1090
1050
|
paragraphAttributes: MapBuffer,
|
|
1091
1051
|
width: Float,
|
|
@@ -1098,7 +1058,7 @@ internal object TextLayoutManager {
|
|
|
1098
1058
|
// TODO(5578671): Handle text direction (see View#getTextDirectionHeuristic)
|
|
1099
1059
|
val layout =
|
|
1100
1060
|
createLayoutForMeasurement(
|
|
1101
|
-
|
|
1061
|
+
assets,
|
|
1102
1062
|
attributedString,
|
|
1103
1063
|
paragraphAttributes,
|
|
1104
1064
|
width,
|
|
@@ -1355,7 +1315,7 @@ internal object TextLayoutManager {
|
|
|
1355
1315
|
|
|
1356
1316
|
@JvmStatic
|
|
1357
1317
|
fun measureLines(
|
|
1358
|
-
|
|
1318
|
+
assetManager: AssetManager,
|
|
1359
1319
|
attributedString: MapBuffer,
|
|
1360
1320
|
paragraphAttributes: MapBuffer,
|
|
1361
1321
|
width: Float,
|
|
@@ -1364,7 +1324,7 @@ internal object TextLayoutManager {
|
|
|
1364
1324
|
): WritableArray {
|
|
1365
1325
|
val layout =
|
|
1366
1326
|
createLayoutForMeasurement(
|
|
1367
|
-
|
|
1327
|
+
assetManager,
|
|
1368
1328
|
attributedString,
|
|
1369
1329
|
paragraphAttributes,
|
|
1370
1330
|
width,
|
|
@@ -1373,17 +1333,31 @@ internal object TextLayoutManager {
|
|
|
1373
1333
|
YogaMeasureMode.EXACTLY,
|
|
1374
1334
|
reactTextViewManagerCallback,
|
|
1375
1335
|
)
|
|
1376
|
-
return FontMetricsUtil.getFontMetrics(
|
|
1336
|
+
return FontMetricsUtil.getFontMetrics(
|
|
1337
|
+
layout.text,
|
|
1338
|
+
layout,
|
|
1339
|
+
DisplayMetricsHolder.getWindowDisplayMetrics(),
|
|
1340
|
+
)
|
|
1377
1341
|
}
|
|
1378
1342
|
|
|
1379
|
-
private fun isBoring(text: Spannable, paint: TextPaint): BoringLayout.Metrics?
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1343
|
+
private fun isBoring(text: Spannable, paint: TextPaint): BoringLayout.Metrics? {
|
|
1344
|
+
val metrics =
|
|
1345
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
|
1346
|
+
BoringLayout.isBoring(text, paint)
|
|
1347
|
+
} else {
|
|
1348
|
+
// Default to include fallback line spacing on Android 13+, like TextView
|
|
1349
|
+
// https://cs.android.com/android/_/android/platform/frameworks/base/+/78c774defb238c05c42b34a12b6b3b0c64844ed7
|
|
1350
|
+
BoringLayout.isBoring(text, paint, TextDirectionHeuristics.FIRSTSTRONG_LTR, true, null)
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
// BoringLayout.isBoring() sometimes thinks text width is negative for some strings, even on
|
|
1354
|
+
// Android 15+. Fallback to StaticLayout.
|
|
1355
|
+
if (metrics == null || metrics.width < 0) {
|
|
1356
|
+
return null
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
return metrics
|
|
1360
|
+
}
|
|
1387
1361
|
|
|
1388
1362
|
private class CreateLayoutResult(
|
|
1389
1363
|
val layout: Layout,
|
package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt
CHANGED
|
@@ -14,7 +14,6 @@ import android.text.TextPaint
|
|
|
14
14
|
import android.text.style.MetricAffectingSpan
|
|
15
15
|
import com.facebook.react.common.ReactConstants
|
|
16
16
|
import com.facebook.react.common.assets.ReactFontManager
|
|
17
|
-
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
|
|
18
17
|
import com.facebook.react.views.text.ReactTypefaceUtils
|
|
19
18
|
|
|
20
19
|
/**
|
|
@@ -74,9 +73,7 @@ internal class CustomStyleSpan(
|
|
|
74
73
|
fontFeatureSettings = fontFeatureSettingsParam
|
|
75
74
|
setTypeface(typeface)
|
|
76
75
|
isSubpixelText = true
|
|
77
|
-
|
|
78
|
-
isLinearText = true
|
|
79
|
-
}
|
|
76
|
+
isLinearText = true
|
|
80
77
|
}
|
|
81
78
|
}
|
|
82
79
|
}
|
package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt
CHANGED
|
@@ -12,7 +12,7 @@ import android.text.Layout
|
|
|
12
12
|
import android.text.style.UpdateAppearance
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* May be
|
|
15
|
+
* May be overridden to implement character styles which are applied by [PreparedLayoutTextView]
|
|
16
16
|
* during the drawing of text, against the underlying Android canvas
|
|
17
17
|
*/
|
|
18
18
|
public abstract class DrawCommandSpan : UpdateAppearance, ReactSpan {
|
|
@@ -62,8 +62,6 @@ import com.facebook.react.uimanager.PixelUtil.toDIPFromPixel
|
|
|
62
62
|
import com.facebook.react.uimanager.ReactAccessibilityDelegate
|
|
63
63
|
import com.facebook.react.uimanager.StateWrapper
|
|
64
64
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
65
|
-
import com.facebook.react.uimanager.common.UIManagerType
|
|
66
|
-
import com.facebook.react.uimanager.common.ViewUtil.getUIManagerType
|
|
67
65
|
import com.facebook.react.uimanager.events.EventDispatcher
|
|
68
66
|
import com.facebook.react.uimanager.style.BorderRadiusProp
|
|
69
67
|
import com.facebook.react.uimanager.style.BorderStyle
|
|
@@ -117,6 +115,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
|
|
|
117
115
|
private var listeners: CopyOnWriteArrayList<TextWatcher>?
|
|
118
116
|
|
|
119
117
|
public var stagedInputType: Int
|
|
118
|
+
internal var stagedAutoCapitalize: Int = 0
|
|
120
119
|
public var submitBehavior: String? = null
|
|
121
120
|
public var dragAndDropFilter: List<String>? = null
|
|
122
121
|
|
|
@@ -655,14 +654,12 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
|
|
|
655
654
|
paintFlags and Paint.SUBPIXEL_TEXT_FLAG.inv()
|
|
656
655
|
}
|
|
657
656
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
}
|
|
665
|
-
}
|
|
657
|
+
paintFlags =
|
|
658
|
+
if (enableSubpixelText) {
|
|
659
|
+
paintFlags or Paint.LINEAR_TEXT_FLAG
|
|
660
|
+
} else {
|
|
661
|
+
paintFlags and Paint.LINEAR_TEXT_FLAG.inv()
|
|
662
|
+
}
|
|
666
663
|
}
|
|
667
664
|
|
|
668
665
|
public fun requestFocusFromJS() {
|
|
@@ -1159,9 +1156,6 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
|
|
|
1159
1156
|
if (!haveText) {
|
|
1160
1157
|
if (hint != null && hint.isNotEmpty()) {
|
|
1161
1158
|
sb.append(hint)
|
|
1162
|
-
} else if (getUIManagerType(this) != UIManagerType.FABRIC) {
|
|
1163
|
-
// Measure something so we have correct height, even if there's no string.
|
|
1164
|
-
sb.append("I")
|
|
1165
1159
|
}
|
|
1166
1160
|
}
|
|
1167
1161
|
|
package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt
CHANGED
|
@@ -718,7 +718,9 @@ public open class ReactTextInputManager public constructor() :
|
|
|
718
718
|
}
|
|
719
719
|
}
|
|
720
720
|
|
|
721
|
-
|
|
721
|
+
// Deferred to onAfterUpdateTransaction() so we can reconcile with the resolved
|
|
722
|
+
// keyboard type — AUTOCAPITALIZE_FLAGS collides with numeric inputType flags.
|
|
723
|
+
view.stagedAutoCapitalize = autoCapitalizeValue
|
|
722
724
|
}
|
|
723
725
|
|
|
724
726
|
@ReactProp(name = "keyboardType")
|
|
@@ -882,6 +884,7 @@ public open class ReactTextInputManager public constructor() :
|
|
|
882
884
|
override fun onAfterUpdateTransaction(view: ReactEditText) {
|
|
883
885
|
super.onAfterUpdateTransaction(view)
|
|
884
886
|
view.maybeUpdateTypeface()
|
|
887
|
+
reconcileAutoCapitalize(view)
|
|
885
888
|
view.commitStagedInputType()
|
|
886
889
|
}
|
|
887
890
|
|
|
@@ -1017,7 +1020,7 @@ public open class ReactTextInputManager public constructor() :
|
|
|
1017
1020
|
|
|
1018
1021
|
val spanned =
|
|
1019
1022
|
TextLayoutManager.getOrCreateSpannableForText(
|
|
1020
|
-
view.context,
|
|
1023
|
+
view.context.assets,
|
|
1021
1024
|
attributedString,
|
|
1022
1025
|
reactTextViewManagerCallback,
|
|
1023
1026
|
)
|
|
@@ -1058,6 +1061,7 @@ public open class ReactTextInputManager public constructor() :
|
|
|
1058
1061
|
|
|
1059
1062
|
private val REACT_PROPS_AUTOFILL_HINTS_MAP: Map<String, String> =
|
|
1060
1063
|
mapOf(
|
|
1064
|
+
"2fa-app-otp" to HintConstants.AUTOFILL_HINT_2FA_APP_OTP,
|
|
1061
1065
|
"birthdate-day" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_DAY,
|
|
1062
1066
|
"birthdate-full" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_FULL,
|
|
1063
1067
|
"birthdate-month" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_MONTH,
|
|
@@ -1069,7 +1073,13 @@ public open class ReactTextInputManager public constructor() :
|
|
|
1069
1073
|
"cc-exp-year" to HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR,
|
|
1070
1074
|
"cc-number" to HintConstants.AUTOFILL_HINT_CREDIT_CARD_NUMBER,
|
|
1071
1075
|
"email" to HintConstants.AUTOFILL_HINT_EMAIL_ADDRESS,
|
|
1076
|
+
"email-otp" to HintConstants.AUTOFILL_HINT_EMAIL_OTP,
|
|
1077
|
+
"flight-confirmation-code" to HintConstants.AUTOFILL_HINT_FLIGHT_CONFIRMATION_CODE,
|
|
1078
|
+
"flight-number" to HintConstants.AUTOFILL_HINT_FLIGHT_NUMBER,
|
|
1072
1079
|
"gender" to HintConstants.AUTOFILL_HINT_GENDER,
|
|
1080
|
+
"gift-card-number" to HintConstants.AUTOFILL_HINT_GIFT_CARD_NUMBER,
|
|
1081
|
+
"gift-card-pin" to HintConstants.AUTOFILL_HINT_GIFT_CARD_PIN,
|
|
1082
|
+
"loyalty-account-number" to HintConstants.AUTOFILL_HINT_LOYALTY_ACCOUNT_NUMBER,
|
|
1073
1083
|
"name" to HintConstants.AUTOFILL_HINT_PERSON_NAME,
|
|
1074
1084
|
"name-family" to HintConstants.AUTOFILL_HINT_PERSON_NAME_FAMILY,
|
|
1075
1085
|
"name-given" to HintConstants.AUTOFILL_HINT_PERSON_NAME_GIVEN,
|
|
@@ -1081,19 +1091,25 @@ public open class ReactTextInputManager public constructor() :
|
|
|
1081
1091
|
"password-new" to HintConstants.AUTOFILL_HINT_NEW_PASSWORD,
|
|
1082
1092
|
"postal-address" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS,
|
|
1083
1093
|
"postal-address-country" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_COUNTRY,
|
|
1094
|
+
"postal-address-dependent-locality" to
|
|
1095
|
+
HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_DEPENDENT_LOCALITY,
|
|
1084
1096
|
"postal-address-extended" to
|
|
1085
1097
|
HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_ADDRESS,
|
|
1086
1098
|
"postal-address-extended-postal-code" to
|
|
1087
1099
|
HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_POSTAL_CODE,
|
|
1088
1100
|
"postal-address-locality" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_LOCALITY,
|
|
1089
1101
|
"postal-address-region" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_REGION,
|
|
1102
|
+
"postal-address-unit" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_APT_NUMBER,
|
|
1090
1103
|
"postal-code" to HintConstants.AUTOFILL_HINT_POSTAL_CODE,
|
|
1104
|
+
"promo-code" to HintConstants.AUTOFILL_HINT_PROMO_CODE,
|
|
1091
1105
|
"street-address" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_STREET_ADDRESS,
|
|
1092
1106
|
"sms-otp" to HintConstants.AUTOFILL_HINT_SMS_OTP,
|
|
1093
1107
|
"tel" to HintConstants.AUTOFILL_HINT_PHONE_NUMBER,
|
|
1094
1108
|
"tel-country-code" to HintConstants.AUTOFILL_HINT_PHONE_COUNTRY_CODE,
|
|
1095
1109
|
"tel-national" to HintConstants.AUTOFILL_HINT_PHONE_NATIONAL,
|
|
1096
1110
|
"tel-device" to HintConstants.AUTOFILL_HINT_PHONE_NUMBER_DEVICE,
|
|
1111
|
+
"upi-vpa" to HintConstants.AUTOFILL_HINT_UPI_VPA,
|
|
1112
|
+
"wifi-password" to HintConstants.AUTOFILL_HINT_WIFI_PASSWORD,
|
|
1097
1113
|
"username" to HintConstants.AUTOFILL_HINT_USERNAME,
|
|
1098
1114
|
"username-new" to HintConstants.AUTOFILL_HINT_NEW_USERNAME,
|
|
1099
1115
|
)
|
|
@@ -1134,6 +1150,28 @@ public open class ReactTextInputManager public constructor() :
|
|
|
1134
1150
|
|
|
1135
1151
|
private const val IME_ACTION_ID = 0x670
|
|
1136
1152
|
|
|
1153
|
+
// AUTOCAPITALIZE_FLAGS (0x7000) shares bit positions with TYPE_NUMBER_FLAG_SIGNED
|
|
1154
|
+
// (0x1000) and TYPE_NUMBER_FLAG_DECIMAL (0x2000). We apply autocapitalize here
|
|
1155
|
+
// after all props are set so the resolved input class determines whether the
|
|
1156
|
+
// flags are meaningful.
|
|
1157
|
+
private fun reconcileAutoCapitalize(view: ReactEditText) {
|
|
1158
|
+
val autoCapValue = view.stagedAutoCapitalize
|
|
1159
|
+
val inputClass = view.stagedInputType and InputType.TYPE_MASK_CLASS
|
|
1160
|
+
|
|
1161
|
+
// Only strip 0x4000 (CAP_SENTENCES) for non-text classes — 0x1000/0x2000 are
|
|
1162
|
+
// valid numeric flags (SIGNED/DECIMAL) and must not be cleared.
|
|
1163
|
+
val reconciled =
|
|
1164
|
+
if (inputClass == InputType.TYPE_CLASS_TEXT) {
|
|
1165
|
+
(view.stagedInputType and AUTOCAPITALIZE_FLAGS.inv()) or autoCapValue
|
|
1166
|
+
} else {
|
|
1167
|
+
view.stagedInputType and InputType.TYPE_TEXT_FLAG_CAP_SENTENCES.inv()
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
if (view.stagedInputType != reconciled) {
|
|
1171
|
+
view.stagedInputType = reconciled
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1137
1175
|
// Sets the correct password type, since numeric and text passwords have different types
|
|
1138
1176
|
private fun checkPasswordType(view: ReactEditText) {
|
|
1139
1177
|
if (
|
|
@@ -15,10 +15,16 @@ import android.graphics.drawable.ColorDrawable
|
|
|
15
15
|
import android.graphics.drawable.Drawable
|
|
16
16
|
import android.graphics.drawable.RippleDrawable
|
|
17
17
|
import android.util.TypedValue
|
|
18
|
+
import com.facebook.common.logging.FLog
|
|
19
|
+
import com.facebook.react.bridge.ColorPropConverter
|
|
20
|
+
import com.facebook.react.bridge.JSApplicationCausedNativeException
|
|
18
21
|
import com.facebook.react.bridge.JSApplicationIllegalArgumentException
|
|
19
22
|
import com.facebook.react.bridge.ReadableMap
|
|
23
|
+
import com.facebook.react.bridge.ReadableType
|
|
24
|
+
import com.facebook.react.common.ReactConstants
|
|
20
25
|
import com.facebook.react.uimanager.PixelUtil
|
|
21
26
|
import com.facebook.react.uimanager.ViewProps
|
|
27
|
+
import kotlin.math.roundToInt
|
|
22
28
|
|
|
23
29
|
/**
|
|
24
30
|
* Utility class that helps with converting android drawable description used in JS to an actual
|
|
@@ -73,11 +79,21 @@ public object ReactDrawableHelper {
|
|
|
73
79
|
context: Context,
|
|
74
80
|
drawableDescriptionDict: ReadableMap,
|
|
75
81
|
): RippleDrawable {
|
|
76
|
-
val
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
val resolvedColor = getColor(context, drawableDescriptionDict)
|
|
83
|
+
var color = resolvedColor ?: getFallbackColor(context)
|
|
84
|
+
|
|
85
|
+
if (
|
|
86
|
+
resolvedColor != null &&
|
|
87
|
+
drawableDescriptionDict.hasKey("alpha") &&
|
|
88
|
+
!drawableDescriptionDict.isNull("alpha")
|
|
89
|
+
) {
|
|
90
|
+
val alphaFactor = drawableDescriptionDict.getDouble("alpha").coerceIn(0.0, 1.0)
|
|
91
|
+
val newAlpha = (Color.alpha(color) * alphaFactor).roundToInt()
|
|
92
|
+
color = Color.argb(newAlpha, Color.red(color), Color.green(color), Color.blue(color))
|
|
93
|
+
}
|
|
79
94
|
|
|
80
|
-
|
|
95
|
+
val mask = getMask(drawableDescriptionDict)
|
|
96
|
+
return RippleDrawable(ColorStateList(arrayOf(intArrayOf()), intArrayOf(color)), null, mask)
|
|
81
97
|
}
|
|
82
98
|
|
|
83
99
|
private fun setRadius(drawableDescriptionDict: ReadableMap, drawable: Drawable?): Drawable? {
|
|
@@ -88,26 +104,49 @@ public object ReactDrawableHelper {
|
|
|
88
104
|
return drawable
|
|
89
105
|
}
|
|
90
106
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
} else {
|
|
107
|
+
/**
|
|
108
|
+
* Returns the resolved ripple color, or null if none was provided or the PlatformColor resource
|
|
109
|
+
* couldn't be found.
|
|
110
|
+
*/
|
|
111
|
+
private fun getColor(context: Context, drawableDescriptionDict: ReadableMap): Int? {
|
|
112
|
+
val rawColor: Any? =
|
|
98
113
|
if (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
resolveOutValue,
|
|
102
|
-
true,
|
|
103
|
-
)
|
|
114
|
+
drawableDescriptionDict.hasKey(ViewProps.COLOR) &&
|
|
115
|
+
!drawableDescriptionDict.isNull(ViewProps.COLOR)
|
|
104
116
|
) {
|
|
105
|
-
|
|
117
|
+
when (drawableDescriptionDict.getType(ViewProps.COLOR)) {
|
|
118
|
+
ReadableType.Number -> drawableDescriptionDict.getDouble(ViewProps.COLOR)
|
|
119
|
+
ReadableType.Map -> drawableDescriptionDict.getMap(ViewProps.COLOR)
|
|
120
|
+
else -> null
|
|
121
|
+
}
|
|
106
122
|
} else {
|
|
107
|
-
|
|
108
|
-
"Attribute colorControlHighlight couldn't be resolved into a drawable"
|
|
109
|
-
)
|
|
123
|
+
null
|
|
110
124
|
}
|
|
125
|
+
return try {
|
|
126
|
+
ColorPropConverter.getColor(rawColor, context)
|
|
127
|
+
} catch (e: JSApplicationCausedNativeException) {
|
|
128
|
+
FLog.w(
|
|
129
|
+
ReactConstants.TAG,
|
|
130
|
+
e,
|
|
131
|
+
"android_ripple: color resource not found, using colorControlHighlight",
|
|
132
|
+
)
|
|
133
|
+
null
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private fun getFallbackColor(context: Context): Int =
|
|
138
|
+
if (
|
|
139
|
+
context.theme.resolveAttribute(
|
|
140
|
+
android.R.attr.colorControlHighlight,
|
|
141
|
+
resolveOutValue,
|
|
142
|
+
true,
|
|
143
|
+
)
|
|
144
|
+
) {
|
|
145
|
+
context.resources.getColor(resolveOutValue.resourceId, context.theme)
|
|
146
|
+
} else {
|
|
147
|
+
throw JSApplicationIllegalArgumentException(
|
|
148
|
+
"Attribute colorControlHighlight couldn't be resolved into a drawable"
|
|
149
|
+
)
|
|
111
150
|
}
|
|
112
151
|
|
|
113
152
|
private fun getMask(drawableDescriptionDict: ReadableMap): Drawable? {
|