react-native-tvos 0.77.1-0 → 0.78.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/animations/Animation.js +22 -1
- package/Libraries/Animated/animations/DecayAnimation.js +1 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +1 -0
- package/Libraries/Animated/nodes/AnimatedAddition.js +9 -2
- package/Libraries/Animated/nodes/AnimatedColor.js +4 -1
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +10 -2
- package/Libraries/Animated/nodes/AnimatedDivision.js +9 -2
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +5 -1
- package/Libraries/Animated/nodes/AnimatedModulo.js +5 -2
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +9 -2
- package/Libraries/Animated/nodes/AnimatedNode.js +25 -46
- package/Libraries/Animated/nodes/AnimatedObject.js +9 -2
- package/Libraries/Animated/nodes/AnimatedProps.js +5 -1
- package/Libraries/Animated/nodes/AnimatedStyle.js +5 -1
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +9 -2
- package/Libraries/Animated/nodes/AnimatedTracking.js +5 -1
- package/Libraries/Animated/nodes/AnimatedTransform.js +5 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +63 -4
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
- package/Libraries/Animated/useAnimatedProps.js +14 -56
- package/Libraries/AppDelegate/RCTAppDelegate.h +6 -48
- package/Libraries/AppDelegate/RCTAppDelegate.mm +5 -230
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.h +21 -0
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +123 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +98 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +266 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +1 -1
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +0 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +59 -0
- package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +5 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +6 -0
- package/Libraries/Components/TextInput/TextInput.js +6 -0
- package/Libraries/Components/View/ViewPropTypes.d.ts +4 -5
- package/Libraries/Components/View/ViewPropTypes.js +0 -9
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/setUpBatchedBridge.js +1 -16
- package/Libraries/EventEmitter/RCTEventEmitter.js +2 -6
- package/Libraries/Image/AssetSourceResolver.js +11 -0
- package/Libraries/Image/RCTImageView.mm +3 -3
- package/Libraries/Inspector/BorderBox.js +26 -14
- package/Libraries/Inspector/BoxInspector.js +60 -42
- package/Libraries/Inspector/ElementBox.js +55 -48
- package/Libraries/Inspector/StyleInspector.js +36 -30
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Lists/FlatList.d.ts +1 -1
- package/Libraries/Modal/Modal.js +2 -0
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +0 -2
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +0 -2
- package/Libraries/Network/RCTNetworking.android.js +24 -16
- package/Libraries/Network/RCTNetworking.ios.js +1 -46
- package/Libraries/Network/RCTNetworking.js.flow +1 -46
- package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
- package/Libraries/ReactNative/UIManagerProperties.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +15829 -26461
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3907 -2560
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4399 -2878
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16103 -26908
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +4034 -2695
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4535 -3045
- package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -6
- package/Libraries/StyleSheet/processTransform.js +6 -0
- package/Libraries/Text/Text/NSTextStorage+FontScaling.m +9 -0
- package/Libraries/Text/Text.d.ts +6 -1
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +2 -0
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +26 -0
- package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +2 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +25 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +2 -0
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +26 -0
- package/Libraries/Text/TextProps.js +2 -2
- package/Libraries/Utilities/BackHandler.android.js +5 -4
- package/Libraries/Utilities/BackHandler.ios.js +3 -4
- package/README-core.md +2 -2
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/RCTDevSettings.h +0 -1
- package/React/CoreModules/RCTDeviceInfo.mm +4 -0
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +3 -5
- package/React/DevSupport/RCTInspectorDevServerHelper.mm +1 -6
- package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +3 -5
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +0 -24
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +0 -28
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +90 -57
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +241 -104
- package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryContentView.mm +0 -5
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +39 -10
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +3 -3
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +22 -3
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +7 -2
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -0
- package/React/Fabric/Mounting/RCTMountingManager.mm +6 -9
- package/React/Fabric/RCTScheduler.mm +1 -1
- package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
- package/React/Modules/RCTUIManager.mm +1 -2
- package/React/React-RCTFBReactNativeSpec.podspec +1 -0
- package/React/React-RCTFabric.podspec +3 -2
- package/React/Tests/Text/RCTParagraphComponentViewTests.mm +12 -12
- package/React/Views/RCTComponentData.mm +1 -5
- package/React/Views/RCTLayout.m +3 -0
- package/React/Views/RCTShadowView.h +3 -3
- package/React/Views/RCTShadowView.m +52 -20
- package/React/Views/RCTView.m +6 -2
- package/React/Views/RCTViewManager.m +0 -7
- package/React/Views/ScrollView/RCTScrollView.m +46 -19
- package/React-Core.podspec +1 -1
- package/ReactAndroid/api/ReactAndroid.api +120 -227
- package/ReactAndroid/build.gradle.kts +8 -13
- package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +2 -0
- package/ReactAndroid/external-artifacts/build.gradle.kts +5 -5
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesMemoryDumper.java → HermesMemoryDumper.kt} +5 -5
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesSamplingProfiler.java → HermesSamplingProfiler.kt} +8 -10
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +12 -59
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/{ReactPackageLogger.java → ReactPackageLogger.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.kt +5 -3
- package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +4 -8
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +11 -5
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +0 -7
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +3 -30
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/HMRClient.java +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +21 -26
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -14
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.java +2 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +88 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +24 -0
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +21 -21
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +36 -36
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +40 -40
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +55 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.kt +185 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/{HeadlessJsTaskEventListener.java → HeadlessJsTaskEventListener.kt} +5 -6
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.kt +20 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/LinearCountingRetryPolicy.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/NoRetryPolicy.kt +7 -8
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +8 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +11 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +107 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +18 -19
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.kt +48 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +397 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -10
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +4 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +13 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +15 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ComponentNameResolver.java → ComponentNameResolver.kt} +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.kt +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +0 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{RootView.java → RootView.kt} +11 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{UIBlock.java → UIBlock.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +1 -1
- package/{Libraries/AppDelegate/RCTAppDelegate+Protected.h → ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerWithGeneratedInterface.kt} +3 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +12 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +46 -80
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CompositeBackgroundDrawable.kt +8 -9
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{BatchEventDispatchedListener.java → BatchEventDispatchedListener.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.kt +19 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +241 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +193 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.kt +130 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.kt +77 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +196 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +16 -17
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +34 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/{FpsListener.java → FpsListener.kt} +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.kt +136 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +152 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +1 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +8 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +1 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +111 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +90 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +22 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +43 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +86 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +44 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +7 -1
- package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -6
- package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +6 -1
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +96 -11
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +9 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +1 -0
- package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +0 -3
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +41 -25
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +63 -91
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -7
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +9 -9
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +6 -10
- package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +4 -0
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
- package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +49 -49
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +11 -11
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +1 -4
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -9
- package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +0 -4
- package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +3 -4
- package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +3 -4
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +6 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +1 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +1 -0
- package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +3 -7
- package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +0 -2
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +2 -8
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +2 -8
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +18 -17
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +1 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +0 -2
- package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/res/views/view/values/ids.xml +5 -0
- package/ReactCommon/React-Fabric.podspec +8 -0
- package/ReactCommon/React-FabricComponents.podspec +2 -2
- package/ReactCommon/React-FabricImage.podspec +4 -1
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +3 -3
- package/ReactCommon/cxxreact/Instance.cpp +6 -6
- package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
- package/ReactCommon/cxxreact/JSExecutor.cpp +4 -2
- package/ReactCommon/cxxreact/ModuleRegistry.cpp +6 -6
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -3
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/SystraceSection.h +8 -141
- package/ReactCommon/cxxreact/TraceSection.h +181 -0
- package/ReactCommon/cxxreact/tests/jsbigstring.cpp +19 -0
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -2
- package/ReactCommon/jsc/JSCRuntime.cpp +0 -2
- package/ReactCommon/jsc/React-jsc.podspec +1 -1
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +27 -19
- package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -3
- package/ReactCommon/jserrorhandler/StackTraceParser.cpp +16 -16
- package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -1
- package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +252 -246
- package/ReactCommon/jsi/jsi/CMakeLists.txt +0 -3
- package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -1
- package/ReactCommon/jsi/jsi/JSIDynamic.h +1 -1
- package/ReactCommon/jsi/jsi/decorator.h +61 -0
- package/ReactCommon/jsi/jsi/jsi-inl.h +4 -0
- package/ReactCommon/jsi/jsi/jsi.cpp +37 -0
- package/ReactCommon/jsi/jsi/jsi.h +81 -0
- package/ReactCommon/jsi/jsi/test/testlib.cpp +88 -0
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +9 -9
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -1
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +3 -7
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +22 -1
- package/ReactCommon/jsinspector-modern/HostTarget.h +1 -1
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +19 -4
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -0
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +21 -10
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +12 -11
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +2 -16
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +14 -14
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +7 -13
- package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +1 -1
- package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +1 -3
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +3 -3
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +1 -1
- package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +26 -0
- package/ReactCommon/jsinspector-modern/tracing/CdpTracing.h +21 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +187 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +126 -0
- package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +56 -0
- package/ReactCommon/react/featureflags/CMakeLists.txt +3 -0
- package/ReactCommon/react/featureflags/React-featureflags.podspec +7 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +15 -15
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +18 -18
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +88 -88
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +9 -9
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +17 -17
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +454 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +5 -5
- package/ReactCommon/react/featureflags/tests/ReactNativeFeatureFlagsDynamicProviderTest.cpp +78 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -3
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +3 -3
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +1 -5
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +13 -23
- package/ReactCommon/react/nativemodule/cputime/CPUTime.h +55 -0
- package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.cpp +35 -0
- package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +28 -0
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +18 -18
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +8 -8
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +5 -8
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -3
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +22 -43
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +0 -15
- package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +22 -2
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
- package/ReactCommon/react/renderer/animations/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +1 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +25 -19
- package/ReactCommon/react/renderer/animations/primitives.h +1 -1
- package/ReactCommon/react/renderer/animations/utils.h +3 -4
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +31 -9
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +81 -31
- package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +4 -1
- package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +2 -0
- package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +2 -2
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +5 -5
- package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +38 -10
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +1 -1
- package/ReactCommon/react/renderer/components/image/ImageState.cpp +2 -3
- package/ReactCommon/react/renderer/components/image/ImageState.h +9 -6
- package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -4
- package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +7 -0
- package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -2
- package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +2 -2
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +33 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +17 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +3 -2
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +2 -1
- package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -4
- package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +7 -0
- package/ReactCommon/react/renderer/{uimanager/bindingUtils.h → components/text/ParagraphComponentDescriptor.cpp} +2 -8
- package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +10 -7
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +23 -0
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +8 -1
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +243 -0
- package/ReactCommon/react/renderer/components/textinput/TextInputState.cpp +71 -0
- package/ReactCommon/react/renderer/components/textinput/{platform/ios/react/renderer/components/iostextinput/TextInputState.h → TextInputState.h} +27 -7
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +6 -13
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +0 -2
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +145 -144
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +27 -29
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +4 -5
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +0 -26
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +0 -6
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +0 -147
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +5 -57
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +60 -70
- package/ReactCommon/react/renderer/components/view/BaseViewProps.h +3 -3
- package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +18 -0
- package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +36 -0
- package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +28 -0
- package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +4 -0
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -22
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +3 -1
- package/ReactCommon/react/renderer/components/view/conversions.h +117 -43
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +3 -1
- package/ReactCommon/react/renderer/components/view/primitives.h +1 -1
- package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +12 -12
- package/ReactCommon/react/renderer/core/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +4 -2
- package/ReactCommon/react/renderer/core/ComponentDescriptor.h +4 -2
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +17 -2
- package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +26 -0
- package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +3 -3
- package/ReactCommon/react/renderer/core/Props.cpp +16 -5
- package/ReactCommon/react/renderer/core/Props.h +11 -4
- package/ReactCommon/react/renderer/core/RawProps.cpp +30 -5
- package/ReactCommon/react/renderer/core/RawProps.h +10 -1
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +7 -2
- package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -1
- package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +1 -0
- package/ReactCommon/react/renderer/core/RawValue.h +315 -22
- package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +95 -4
- package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +19 -4
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +7 -1
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +7 -5
- package/ReactCommon/react/renderer/graphics/Transform.cpp +11 -2
- package/ReactCommon/react/renderer/graphics/Transform.h +2 -1
- package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +4 -2
- package/ReactCommon/react/renderer/imagemanager/ImageManager.h +7 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +43 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +36 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +43 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +94 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +101 -0
- package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +9 -1
- package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +30 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +9 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +30 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImageManager.mm +2 -2
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +187 -152
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -5
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +10 -16
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -12
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +44 -14
- package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +8 -4
- package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +116 -193
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +0 -3
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +7 -4
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +2 -1
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +7 -8
- package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +6 -6
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +3 -1
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +2 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +11 -11
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -15
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -3
- package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +6 -37
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +0 -3
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +15 -11
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +1 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +56 -2
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +23 -3
- package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
- package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -0
- package/ReactCommon/react/renderer/textlayoutmanager/{platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h → TextLayoutManager.h} +18 -17
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +77 -89
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +6 -10
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +6 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +23 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +11 -32
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +9 -23
- package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.cpp +88 -0
- package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +50 -0
- package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +3 -40
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +23 -18
- package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -31
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +0 -4
- package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +10 -10
- package/ReactCommon/react/runtime/CMakeLists.txt +0 -1
- package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -2
- package/ReactCommon/react/runtime/ReactInstance.cpp +43 -57
- package/ReactCommon/react/runtime/TimerManager.cpp +4 -4
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +5 -1
- package/ReactCommon/react/runtime/hermes/HermesInstance.h +0 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +2 -6
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +6 -15
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +3 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +15 -15
- package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +5 -4
- package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +33 -17
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +8 -2
- package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.cpp → ReactPerfettoLogger.cpp} +25 -24
- package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.h → ReactPerfettoLogger.h} +9 -9
- package/ReactCommon/yoga/yoga/YGEnums.cpp +6 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +4 -1
- package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +124 -24
- package/ReactCommon/yoga/yoga/YGNodeStyle.h +22 -1
- package/ReactCommon/yoga/yoga/YGValue.h +3 -0
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +6 -6
- package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +2 -2
- package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +1 -1
- package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +9 -6
- package/ReactCommon/yoga/yoga/enums/Unit.h +4 -1
- package/ReactCommon/yoga/yoga/node/Node.cpp +8 -8
- package/ReactCommon/yoga/yoga/node/Node.h +5 -5
- package/ReactCommon/yoga/yoga/style/Style.h +14 -12
- package/ReactCommon/yoga/yoga/style/StyleLength.h +14 -7
- package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +139 -0
- package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
- package/ReactCommon/yoga/yoga/style/StyleValuePool.h +60 -3
- package/gradle/libs.versions.toml +6 -2
- package/index.js +5 -0
- package/package.json +12 -13
- package/react-native.config.js +6 -0
- package/scripts/cocoapods/codegen_utils.rb +4 -4
- package/scripts/cocoapods/new_architecture.rb +3 -3
- package/scripts/cocoapods/utils.rb +4 -3
- package/scripts/codegen/generate-artifacts-executor.js +8 -4
- package/scripts/generate-codegen-artifacts.js +6 -1
- package/scripts/react-native-xcode.sh +1 -1
- package/scripts/react_native_pods.rb +3 -3
- package/scripts/xcode/ccache-clang++.sh +1 -1
- package/scripts/xcode/ccache-clang.sh +1 -1
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/utils/build-hermes-xcode.sh +1 -1
- package/sdks/hermesc/linux64-bin/hermesc +0 -0
- 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/src/private/animated/NativeAnimatedValidation.js +1 -1
- package/src/private/featureflags/README.md +5 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +33 -27
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -5
- package/src/private/renderer/errorhandling/ErrorHandlers.js +12 -55
- package/src/private/specs/modules/{NativeJSCSamplingProfiler.js → NativeCPUTime.js} +7 -2
- package/src/private/specs/modules/NativeFantom.js +37 -0
- package/src/private/utilities/ensureInstance.js +21 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +49 -6
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +17 -9
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +11 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -1
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/performance/Performance.js +0 -12
- package/src/private/webapis/performance/specs/NativePerformance.js +0 -11
- package/types/index.d.ts +1 -0
- package/types/public/ReactNativeTVTypes.d.ts +49 -51
- package/Libraries/HeapCapture/HeapCapture.js +0 -29
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -13
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -13
- package/Libraries/Performance/SamplingProfiler.js +0 -39
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +0 -334
- package/React/Inspector/RCTInspectorPackagerConnection.m +0 -325
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +0 -314
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSCHeapCapture.java +0 -76
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/EmptyReactNativeConfig.kt +0 -36
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.kt +0 -33
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +0 -83
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java +0 -121
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +0 -214
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.java +0 -22
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/XmlFormat.kt +0 -143
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.java +0 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +0 -124
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.java +0 -58
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +0 -422
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +0 -98
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.java +0 -20
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +0 -45
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.java +0 -19
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +0 -257
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +0 -210
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +0 -165
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.java +0 -85
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +0 -204
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +0 -161
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +0 -232
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +0 -70
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/LegacyLineHeightSpan.kt +0 -69
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -114
- package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +0 -31
- package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +0 -39
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +0 -82
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h +0 -31
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Countable.h +0 -45
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Doxyfile +0 -18
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +0 -93
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +0 -58
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +0 -266
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +0 -37
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +0 -112
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +0 -43
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +0 -350
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +0 -20
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +0 -20
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/visibility.h +0 -10
- package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +0 -102
- package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.cpp +0 -47
- package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.h +0 -38
- package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +0 -41
- package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +0 -35
- package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +0 -243
- package/ReactAndroid/src/main/jni/third-party/jsc/CMakeLists.txt +0 -15
- package/ReactCommon/React-nativeconfig.podspec +0 -36
- package/ReactCommon/cxxreact/tests/main.cpp +0 -15
- package/ReactCommon/react/config/CMakeLists.txt +0 -20
- package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -28
- package/ReactCommon/react/config/ReactNativeConfig.h +0 -42
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -95
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +0 -80
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp +0 -10
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +0 -78
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +0 -69
- package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +0 -123
- package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +0 -79
- package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +0 -413
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +0 -181
- package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +0 -327
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewComponentDescriptor.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewComponentDescriptor.h} +0 -0
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.cpp → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.cpp} +0 -0
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h} +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
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.uimanager.events
|
|
9
|
+
|
|
10
|
+
import android.util.SparseIntArray
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Utility for determining coalescing keys for TouchEvents. To preserve proper ordering of events,
|
|
14
|
+
* move events should only be coalesced if there has been no up/down event between them (this
|
|
15
|
+
* basically only applies to multitouch since for single touches an up would signal the end of the
|
|
16
|
+
* gesture). To illustrate to kind of coalescing we want, imagine we are coalescing the following
|
|
17
|
+
* touch stream:
|
|
18
|
+
*
|
|
19
|
+
* (U = finger up, D = finger down, M = move) D MMMMM D MMMMMMMMMMMMMM U MMMMM D MMMMMM U U
|
|
20
|
+
*
|
|
21
|
+
* We want to make sure to coalesce this as
|
|
22
|
+
*
|
|
23
|
+
* D M D M U M D U U
|
|
24
|
+
*
|
|
25
|
+
* and *not*
|
|
26
|
+
*
|
|
27
|
+
* D D U M D U U
|
|
28
|
+
*
|
|
29
|
+
* To accomplish this, this class provides a way to initialize a coalescing key for a gesture and
|
|
30
|
+
* then increment it for every pointer up/down that occurs during that single gesture.
|
|
31
|
+
*
|
|
32
|
+
* We identify a single gesture based on [android.view.MotionEvent.getDownTime] which will stay
|
|
33
|
+
* constant for a given set of related touches on a single view.
|
|
34
|
+
*
|
|
35
|
+
* NB: even though down time is a long, we cast as an int using the least significant bits as the
|
|
36
|
+
* identifier. In practice, we will not be coalescing over a time range where the most significant
|
|
37
|
+
* bits of that time range matter. This would require a gesture that lasts Integer.MAX_VALUE * 2 ms,
|
|
38
|
+
* or ~48 days.
|
|
39
|
+
*
|
|
40
|
+
* NB: we assume two gestures cannot begin at the same time.
|
|
41
|
+
*
|
|
42
|
+
* NB: this class should only be used from the UI thread.
|
|
43
|
+
*/
|
|
44
|
+
public class TouchEventCoalescingKeyHelper {
|
|
45
|
+
private val downTimeToCoalescingKey = SparseIntArray()
|
|
46
|
+
|
|
47
|
+
/** Starts tracking a new coalescing key corresponding to the gesture with this down time. */
|
|
48
|
+
public fun addCoalescingKey(downTime: Long) {
|
|
49
|
+
downTimeToCoalescingKey.put(downTime.toInt(), 0)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Increments the coalescing key corresponding to the gesture with this down time. */
|
|
53
|
+
public fun incrementCoalescingKey(downTime: Long) {
|
|
54
|
+
val currentValue = downTimeToCoalescingKey[downTime.toInt(), -1]
|
|
55
|
+
if (currentValue == -1) {
|
|
56
|
+
throw RuntimeException("Tried to increment non-existent cookie")
|
|
57
|
+
}
|
|
58
|
+
downTimeToCoalescingKey.put(downTime.toInt(), currentValue + 1)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Gets the coalescing key corresponding to the gesture with this down time. */
|
|
62
|
+
public fun getCoalescingKey(downTime: Long): Short {
|
|
63
|
+
val currentValue = downTimeToCoalescingKey[downTime.toInt(), -1]
|
|
64
|
+
if (currentValue == -1) {
|
|
65
|
+
throw RuntimeException("Tried to get non-existent cookie")
|
|
66
|
+
}
|
|
67
|
+
return ((0xffff and currentValue).toShort())
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Stops tracking a new coalescing key corresponding to the gesture with this down time. */
|
|
71
|
+
public fun removeCoalescingKey(downTime: Long) {
|
|
72
|
+
downTimeToCoalescingKey.delete(downTime.toInt())
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public fun hasCoalescingKey(downTime: Long): Boolean =
|
|
76
|
+
downTimeToCoalescingKey[downTime.toInt(), -1] != -1
|
|
77
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
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.uimanager.events
|
|
9
|
+
|
|
10
|
+
import com.facebook.react.bridge.Arguments
|
|
11
|
+
import com.facebook.react.bridge.WritableArray
|
|
12
|
+
import com.facebook.react.bridge.WritableMap
|
|
13
|
+
import com.facebook.react.uimanager.PixelUtil.pxToDp
|
|
14
|
+
import com.facebook.react.uimanager.events.TouchEventType.Companion.getJSEventName
|
|
15
|
+
import com.facebook.systrace.Systrace
|
|
16
|
+
|
|
17
|
+
/** Class responsible for generating catalyst touch events based on android [MotionEvent]. */
|
|
18
|
+
public object TouchesHelper {
|
|
19
|
+
@JvmField @Deprecated("Not used in New Architecture") public val TARGET_KEY: String = "target"
|
|
20
|
+
|
|
21
|
+
private const val TARGET_SURFACE_KEY = "targetSurface"
|
|
22
|
+
private const val CHANGED_TOUCHES_KEY = "changedTouches"
|
|
23
|
+
private const val TOUCHES_KEY = "touches"
|
|
24
|
+
private const val PAGE_X_KEY = "pageX"
|
|
25
|
+
private const val PAGE_Y_KEY = "pageY"
|
|
26
|
+
private const val TIMESTAMP_KEY = "timestamp"
|
|
27
|
+
private const val POINTER_IDENTIFIER_KEY = "identifier"
|
|
28
|
+
|
|
29
|
+
private const val LOCATION_X_KEY = "locationX"
|
|
30
|
+
private const val LOCATION_Y_KEY = "locationY"
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates catalyst pointers array in format that is expected by RCTEventEmitter JS module from
|
|
34
|
+
* given {@param event} instance. This method use {@param reactTarget} parameter to set as a
|
|
35
|
+
* target view id associated with current gesture.
|
|
36
|
+
*/
|
|
37
|
+
private fun createPointersArray(event: TouchEvent): Array<WritableMap?> {
|
|
38
|
+
val motionEvent = event.getMotionEvent()
|
|
39
|
+
val touches = arrayOfNulls<WritableMap>(motionEvent.pointerCount)
|
|
40
|
+
|
|
41
|
+
// Calculate the coordinates for the target view.
|
|
42
|
+
// The MotionEvent contains the X,Y of the touch in the coordinate space of the root view
|
|
43
|
+
// The TouchEvent contains the X,Y of the touch in the coordinate space of the target view
|
|
44
|
+
// Subtracting them allows us to get the coordinates of the target view's top left corner
|
|
45
|
+
// We then use this when computing the view specific touches below
|
|
46
|
+
// Since only one view is actually handling even multiple touches, the values are all relative
|
|
47
|
+
// to this one target view.
|
|
48
|
+
val targetViewCoordinateX = motionEvent.x - event.viewX
|
|
49
|
+
val targetViewCoordinateY = motionEvent.y - event.viewY
|
|
50
|
+
|
|
51
|
+
for (index in 0 until motionEvent.pointerCount) {
|
|
52
|
+
val touch = Arguments.createMap()
|
|
53
|
+
|
|
54
|
+
// pageX,Y values are relative to the RootReactView
|
|
55
|
+
// the motionEvent already contains coordinates in that view
|
|
56
|
+
touch.putDouble(PAGE_X_KEY, motionEvent.getX(index).pxToDp().toDouble())
|
|
57
|
+
touch.putDouble(PAGE_Y_KEY, motionEvent.getY(index).pxToDp().toDouble())
|
|
58
|
+
|
|
59
|
+
// locationX,Y values are relative to the target view
|
|
60
|
+
// To compute the values for the view, we subtract that views location from the event X,Y
|
|
61
|
+
val locationX = motionEvent.getX(index) - targetViewCoordinateX
|
|
62
|
+
val locationY = motionEvent.getY(index) - targetViewCoordinateY
|
|
63
|
+
touch.putDouble(LOCATION_X_KEY, locationX.pxToDp().toDouble())
|
|
64
|
+
touch.putDouble(LOCATION_Y_KEY, locationY.pxToDp().toDouble())
|
|
65
|
+
|
|
66
|
+
touch.putInt(TARGET_SURFACE_KEY, event.surfaceId)
|
|
67
|
+
@Suppress("DEPRECATION") touch.putInt(TARGET_KEY, event.viewTag)
|
|
68
|
+
touch.putDouble(TIMESTAMP_KEY, event.timestampMs.toDouble())
|
|
69
|
+
touch.putDouble(POINTER_IDENTIFIER_KEY, motionEvent.getPointerId(index).toDouble())
|
|
70
|
+
|
|
71
|
+
touches[index] = touch
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return touches
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Generate and send touch event to RCTEventEmitter JS module associated with the given {@param *
|
|
79
|
+
* context} for legacy renderer. Touch event can encode multiple concurrent touches (pointers).
|
|
80
|
+
*
|
|
81
|
+
* @param rctEventEmitter Event emitter used to execute JS module call
|
|
82
|
+
* @param touchEvent native touch event to read pointers count and coordinates from
|
|
83
|
+
*/
|
|
84
|
+
@Suppress("DEPRECATION")
|
|
85
|
+
@JvmStatic
|
|
86
|
+
public fun sendTouchesLegacy(rctEventEmitter: RCTEventEmitter, touchEvent: TouchEvent) {
|
|
87
|
+
val type = touchEvent.getTouchEventType()
|
|
88
|
+
|
|
89
|
+
val pointers = getWritableArray(/* copyObjects */ false, createPointersArray(touchEvent))
|
|
90
|
+
val motionEvent = touchEvent.getMotionEvent()
|
|
91
|
+
|
|
92
|
+
// For START and END events send only index of the pointer that is associated with that event
|
|
93
|
+
// For MOVE and CANCEL events 'changedIndices' array should contain all the pointers indices
|
|
94
|
+
val changedIndices = Arguments.createArray()
|
|
95
|
+
if (type == TouchEventType.MOVE || type == TouchEventType.CANCEL) {
|
|
96
|
+
for (i in 0 until motionEvent.pointerCount) {
|
|
97
|
+
changedIndices.pushInt(i)
|
|
98
|
+
}
|
|
99
|
+
} else if (type == TouchEventType.START || type == TouchEventType.END) {
|
|
100
|
+
changedIndices.pushInt(motionEvent.actionIndex)
|
|
101
|
+
} else {
|
|
102
|
+
throw RuntimeException("Unknown touch type: $type")
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@Suppress("DEPRECATION")
|
|
106
|
+
rctEventEmitter.receiveTouches(getJSEventName(type), pointers, changedIndices)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Generate touch event data to match JS expectations. Combines logic in [sendTouchEvent] and
|
|
111
|
+
* [FabricEventEmitter] to create the same data structure in a more efficient manner.
|
|
112
|
+
*
|
|
113
|
+
* Touches have to be dispatched as separate events for each changed pointer to make JS process
|
|
114
|
+
* them correctly. To avoid allocations, we preprocess touch events in Java world and then convert
|
|
115
|
+
* them to native before dispatch.
|
|
116
|
+
*
|
|
117
|
+
* @param eventEmitter emitter to dispatch event to
|
|
118
|
+
* @param event the touch event to extract data from
|
|
119
|
+
*/
|
|
120
|
+
@JvmStatic
|
|
121
|
+
public fun sendTouchEvent(eventEmitter: RCTModernEventEmitter, event: TouchEvent) {
|
|
122
|
+
Systrace.beginSection(
|
|
123
|
+
Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
|
|
124
|
+
"TouchesHelper.sentTouchEventModern(" + event.eventName + ")")
|
|
125
|
+
try {
|
|
126
|
+
val type = event.getTouchEventType()
|
|
127
|
+
val motionEvent = event.getMotionEvent()
|
|
128
|
+
var touches = createPointersArray(event)
|
|
129
|
+
var changedTouches: Array<WritableMap?>? = null
|
|
130
|
+
|
|
131
|
+
when (type) {
|
|
132
|
+
TouchEventType.START -> {
|
|
133
|
+
val newPointerIndex = motionEvent.actionIndex
|
|
134
|
+
|
|
135
|
+
changedTouches = arrayOf(touches[newPointerIndex]?.copy())
|
|
136
|
+
}
|
|
137
|
+
TouchEventType.END -> {
|
|
138
|
+
val finishedPointerIndex = motionEvent.actionIndex
|
|
139
|
+
/*
|
|
140
|
+
* Clear finished pointer index for compatibility with W3C touch "end" events, where the
|
|
141
|
+
* active touches don't include the set that has just been "ended".
|
|
142
|
+
*/
|
|
143
|
+
val finishedPointer = touches[finishedPointerIndex]
|
|
144
|
+
touches[finishedPointerIndex] = null
|
|
145
|
+
|
|
146
|
+
changedTouches = arrayOf(finishedPointer)
|
|
147
|
+
}
|
|
148
|
+
TouchEventType.MOVE -> {
|
|
149
|
+
changedTouches = arrayOfNulls(touches.size)
|
|
150
|
+
var i = 0
|
|
151
|
+
while (i < touches.size) {
|
|
152
|
+
changedTouches[i] = touches[i]?.copy()
|
|
153
|
+
i++
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
TouchEventType.CANCEL -> {
|
|
157
|
+
changedTouches = touches
|
|
158
|
+
touches = arrayOfNulls(0)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
for (touchData in changedTouches) {
|
|
163
|
+
val eventData =
|
|
164
|
+
touchData?.let { td ->
|
|
165
|
+
val ed = td.copy()
|
|
166
|
+
val changedTouchesArray = getWritableArray(/* copyObjects */ true, changedTouches)
|
|
167
|
+
val touchesArray = getWritableArray(/* copyObjects */ true, touches)
|
|
168
|
+
ed.putArray(CHANGED_TOUCHES_KEY, changedTouchesArray)
|
|
169
|
+
ed.putArray(TOUCHES_KEY, touchesArray)
|
|
170
|
+
ed
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
eventEmitter.receiveEvent(
|
|
174
|
+
event.surfaceId,
|
|
175
|
+
event.viewTag,
|
|
176
|
+
event.eventName,
|
|
177
|
+
event.canCoalesce(),
|
|
178
|
+
0,
|
|
179
|
+
eventData,
|
|
180
|
+
event.eventCategory)
|
|
181
|
+
}
|
|
182
|
+
} finally {
|
|
183
|
+
Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE)
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private fun getWritableArray(copyObjects: Boolean, objects: Array<WritableMap?>): WritableArray {
|
|
188
|
+
val result = Arguments.createArray()
|
|
189
|
+
for (obj in objects) {
|
|
190
|
+
if (obj != null) {
|
|
191
|
+
result.pushMap(if (copyObjects) obj.copy() else obj)
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return result
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -178,33 +178,32 @@ public data class BorderRadiusStyle(
|
|
|
178
178
|
width: Float,
|
|
179
179
|
height: Float
|
|
180
180
|
): ComputedBorderRadius {
|
|
181
|
-
val
|
|
182
|
-
val
|
|
183
|
-
val
|
|
184
|
-
val
|
|
181
|
+
val leftEdgeRadii = topLeft.vertical + bottomLeft.vertical
|
|
182
|
+
val topEdgeRadii = topLeft.horizontal + topRight.horizontal
|
|
183
|
+
val rightEdgeRadii = topRight.vertical + bottomRight.vertical
|
|
184
|
+
val bottomEdgeRadii = bottomLeft.horizontal + bottomRight.horizontal
|
|
185
185
|
|
|
186
|
-
val
|
|
187
|
-
val
|
|
188
|
-
val
|
|
189
|
-
val
|
|
186
|
+
val leftEdgeRadiiScale = if (leftEdgeRadii > 0) minOf(height / leftEdgeRadii, 1f) else 0f
|
|
187
|
+
val topEdgeRadiiScale = if (topEdgeRadii > 0) minOf(width / topEdgeRadii, 1f) else 0f
|
|
188
|
+
val rightEdgeRadiiScale = if (rightEdgeRadii > 0) minOf(height / rightEdgeRadii, 1f) else 0f
|
|
189
|
+
val bottomEdgeRadiiScale = if (bottomEdgeRadii > 0) minOf(width / bottomEdgeRadii, 1f) else 0f
|
|
190
190
|
|
|
191
191
|
return ComputedBorderRadius(
|
|
192
192
|
topLeft =
|
|
193
193
|
CornerRadii(
|
|
194
|
-
topLeft.horizontal * minOf(
|
|
195
|
-
topLeft.vertical * minOf(
|
|
194
|
+
topLeft.horizontal * minOf(topEdgeRadiiScale, leftEdgeRadiiScale),
|
|
195
|
+
topLeft.vertical * minOf(topEdgeRadiiScale, leftEdgeRadiiScale)),
|
|
196
196
|
topRight =
|
|
197
197
|
CornerRadii(
|
|
198
|
-
topRight.horizontal * minOf(
|
|
199
|
-
topRight.vertical * minOf(
|
|
198
|
+
topRight.horizontal * minOf(rightEdgeRadiiScale, topEdgeRadiiScale),
|
|
199
|
+
topRight.vertical * minOf(rightEdgeRadiiScale, topEdgeRadiiScale)),
|
|
200
200
|
bottomLeft =
|
|
201
201
|
CornerRadii(
|
|
202
|
-
bottomLeft.horizontal * minOf(
|
|
203
|
-
bottomLeft.vertical * minOf(
|
|
202
|
+
bottomLeft.horizontal * minOf(bottomEdgeRadiiScale, leftEdgeRadiiScale),
|
|
203
|
+
bottomLeft.vertical * minOf(bottomEdgeRadiiScale, leftEdgeRadiiScale)),
|
|
204
204
|
bottomRight =
|
|
205
205
|
CornerRadii(
|
|
206
|
-
bottomRight.horizontal * minOf(
|
|
207
|
-
bottomRight.vertical * minOf(
|
|
208
|
-
)
|
|
206
|
+
bottomRight.horizontal * minOf(bottomEdgeRadiiScale, rightEdgeRadiiScale),
|
|
207
|
+
bottomRight.vertical * minOf(bottomEdgeRadiiScale, rightEdgeRadiiScale)))
|
|
209
208
|
}
|
|
210
209
|
}
|
|
@@ -93,6 +93,11 @@ public class ReactModalHostManager :
|
|
|
93
93
|
@ReactProp(name = "identifier")
|
|
94
94
|
public override fun setIdentifier(view: ReactModalHostView, value: Int): Unit = Unit
|
|
95
95
|
|
|
96
|
+
public override fun setTestId(view: ReactModalHostView, value: String?) {
|
|
97
|
+
super.setTestId(view, value)
|
|
98
|
+
view.setDialogRootViewGroupTestId(value)
|
|
99
|
+
}
|
|
100
|
+
|
|
96
101
|
protected override fun addEventEmitters(
|
|
97
102
|
reactContext: ThemedReactContext,
|
|
98
103
|
view: ReactModalHostView
|
|
@@ -25,6 +25,7 @@ import android.view.Window
|
|
|
25
25
|
import android.view.WindowInsetsController
|
|
26
26
|
import android.view.WindowManager
|
|
27
27
|
import android.view.accessibility.AccessibilityEvent
|
|
28
|
+
import android.view.accessibility.AccessibilityNodeInfo
|
|
28
29
|
import android.widget.FrameLayout
|
|
29
30
|
import androidx.annotation.UiThread
|
|
30
31
|
import com.facebook.common.logging.FLog
|
|
@@ -214,6 +215,15 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
|
|
214
215
|
|
|
215
216
|
private fun getCurrentActivity(): Activity? = (context as ThemedReactContext).currentActivity
|
|
216
217
|
|
|
218
|
+
private fun isFlagSecureSet(activity: Activity?): Boolean {
|
|
219
|
+
if (activity == null) {
|
|
220
|
+
return false
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
val flags = activity.window.attributes.flags
|
|
224
|
+
return (flags and WindowManager.LayoutParams.FLAG_SECURE) != 0
|
|
225
|
+
}
|
|
226
|
+
|
|
217
227
|
/**
|
|
218
228
|
* showOrUpdate will display the Dialog. It is called by the manager once all properties are set
|
|
219
229
|
* because we need to know all of them before creating the Dialog. It is also smart during updates
|
|
@@ -309,6 +319,11 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
|
|
309
319
|
if (hardwareAccelerated) {
|
|
310
320
|
newDialog.window?.addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)
|
|
311
321
|
}
|
|
322
|
+
val flagSecureSet = isFlagSecureSet(currentActivity)
|
|
323
|
+
if (flagSecureSet) {
|
|
324
|
+
newDialog.window?.setFlags(
|
|
325
|
+
WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
|
|
326
|
+
}
|
|
312
327
|
if (currentActivity?.isFinishing == false) {
|
|
313
328
|
newDialog.show()
|
|
314
329
|
updateSystemAppearance()
|
|
@@ -397,6 +412,15 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
|
|
397
412
|
}
|
|
398
413
|
}
|
|
399
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Sets the testID on the DialogRootViewGroup. Since the accessibility events are not triggered on
|
|
417
|
+
* the on the ReactModalHostView, the testID is forwarded to the DialogRootViewGroup to set the
|
|
418
|
+
* resource-id.
|
|
419
|
+
*/
|
|
420
|
+
public fun setDialogRootViewGroupTestId(testId: String?) {
|
|
421
|
+
dialogRootViewGroup.setTag(R.id.react_test_id, testId)
|
|
422
|
+
}
|
|
423
|
+
|
|
400
424
|
// This listener is called when the user presses KeyEvent.KEYCODE_BACK
|
|
401
425
|
// An event is then passed to JS which can either close or not close the Modal by setting the
|
|
402
426
|
// visible property
|
|
@@ -437,6 +461,15 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
|
|
437
461
|
}
|
|
438
462
|
}
|
|
439
463
|
|
|
464
|
+
override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) {
|
|
465
|
+
super.onInitializeAccessibilityNodeInfo(info)
|
|
466
|
+
|
|
467
|
+
val testId = getTag(R.id.react_test_id) as String?
|
|
468
|
+
if (testId != null) {
|
|
469
|
+
info.viewIdResourceName = testId
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
440
473
|
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
|
|
441
474
|
super.onSizeChanged(w, h, oldw, oldh)
|
|
442
475
|
viewWidth = w
|
|
@@ -541,7 +574,7 @@ public class ReactModalHostView(context: ThemedReactContext) :
|
|
|
541
574
|
return super.onHoverEvent(event)
|
|
542
575
|
}
|
|
543
576
|
|
|
544
|
-
override fun onChildStartedNativeGesture(childView: View
|
|
577
|
+
override fun onChildStartedNativeGesture(childView: View?, ev: MotionEvent) {
|
|
545
578
|
eventDispatcher?.let { eventDispatcher ->
|
|
546
579
|
jSTouchDispatcher.onChildStartedNativeGesture(ev, eventDispatcher)
|
|
547
580
|
jSPointerDispatcher?.onChildStartedNativeGesture(childView, ev, eventDispatcher)
|
package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt
CHANGED
|
@@ -10,8 +10,10 @@ package com.facebook.react.views.progressbar
|
|
|
10
10
|
import android.content.Context
|
|
11
11
|
import android.graphics.PorterDuff
|
|
12
12
|
import android.view.ViewGroup
|
|
13
|
+
import android.view.accessibility.AccessibilityNodeInfo
|
|
13
14
|
import android.widget.FrameLayout
|
|
14
15
|
import android.widget.ProgressBar
|
|
16
|
+
import com.facebook.react.R
|
|
15
17
|
import com.facebook.react.bridge.JSApplicationIllegalArgumentException
|
|
16
18
|
|
|
17
19
|
/**
|
|
@@ -27,6 +29,15 @@ internal class ProgressBarContainerView(context: Context) : FrameLayout(context)
|
|
|
27
29
|
|
|
28
30
|
private var progressBar: ProgressBar? = null
|
|
29
31
|
|
|
32
|
+
override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) {
|
|
33
|
+
super.onInitializeAccessibilityNodeInfo(info)
|
|
34
|
+
|
|
35
|
+
val testId = getTag(R.id.react_test_id) as String?
|
|
36
|
+
if (testId != null) {
|
|
37
|
+
info.viewIdResourceName = testId
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
30
41
|
internal fun apply() {
|
|
31
42
|
this.progressBar?.let { progressBar ->
|
|
32
43
|
progressBar.isIndeterminate = indeterminate
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
package com.facebook.react.views.scroll
|
|
8
|
+
package com.facebook.react.views.scroll
|
|
9
9
|
|
|
10
10
|
public interface FpsListener {
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ public interface FpsListener {
|
|
|
14
14
|
*
|
|
15
15
|
* @param tag
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
public fun enable(tag: String)
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Clients should call this method when they want the listener to stop recording data. The
|
|
@@ -24,8 +24,8 @@ public interface FpsListener {
|
|
|
24
24
|
*
|
|
25
25
|
* @param tag
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
public fun disable(tag: String)
|
|
28
28
|
|
|
29
29
|
/** Reports whether this listener is recording data. */
|
|
30
|
-
|
|
30
|
+
public fun isEnabled(): Boolean
|
|
31
31
|
}
|
package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
CHANGED
|
@@ -26,6 +26,7 @@ import android.view.KeyEvent;
|
|
|
26
26
|
import android.view.MotionEvent;
|
|
27
27
|
import android.view.View;
|
|
28
28
|
import android.view.ViewGroup;
|
|
29
|
+
import android.view.accessibility.AccessibilityNodeInfo;
|
|
29
30
|
import android.widget.HorizontalScrollView;
|
|
30
31
|
import android.widget.OverScroller;
|
|
31
32
|
import androidx.annotation.Nullable;
|
|
@@ -33,6 +34,7 @@ import androidx.core.view.ViewCompat;
|
|
|
33
34
|
import com.facebook.common.logging.FLog;
|
|
34
35
|
import com.facebook.infer.annotation.Assertions;
|
|
35
36
|
import com.facebook.infer.annotation.Nullsafe;
|
|
37
|
+
import com.facebook.react.R;
|
|
36
38
|
import com.facebook.react.animated.NativeAnimatedModule;
|
|
37
39
|
import com.facebook.react.bridge.ReactContext;
|
|
38
40
|
import com.facebook.react.common.ReactConstants;
|
|
@@ -143,6 +145,20 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
143
145
|
setClipChildren(false);
|
|
144
146
|
}
|
|
145
147
|
|
|
148
|
+
@Override
|
|
149
|
+
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
|
150
|
+
super.onInitializeAccessibilityNodeInfo(info);
|
|
151
|
+
|
|
152
|
+
// Expose the testID prop as the resource-id name of the view. Black-box E2E/UI testing
|
|
153
|
+
// frameworks, which interact with the UI through the accessibility framework, do not have
|
|
154
|
+
// access to view tags. This allows developers/testers to avoid polluting the
|
|
155
|
+
// content-description with test identifiers.
|
|
156
|
+
final String testId = (String) this.getTag(R.id.react_test_id);
|
|
157
|
+
if (testId != null) {
|
|
158
|
+
info.setViewIdResourceName(testId);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
146
162
|
public boolean getScrollEnabled() {
|
|
147
163
|
return mScrollEnabled;
|
|
148
164
|
}
|
|
@@ -112,7 +112,7 @@ public class ReactHorizontalScrollViewManager extends ViewGroupManager<ReactHori
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
@ReactProp(name = "snapToAlignment")
|
|
115
|
-
public void setSnapToAlignment(ReactHorizontalScrollView view, String alignment) {
|
|
115
|
+
public void setSnapToAlignment(ReactHorizontalScrollView view, @Nullable String alignment) {
|
|
116
116
|
view.setSnapToAlignment(ReactScrollViewHelper.parseSnapToAlignment(alignment));
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -169,7 +169,7 @@ public class ReactHorizontalScrollViewManager extends ViewGroupManager<ReactHori
|
|
|
169
169
|
* @param scrollPerfTag
|
|
170
170
|
*/
|
|
171
171
|
@ReactProp(name = "scrollPerfTag")
|
|
172
|
-
public void setScrollPerfTag(ReactHorizontalScrollView view, String scrollPerfTag) {
|
|
172
|
+
public void setScrollPerfTag(ReactHorizontalScrollView view, @Nullable String scrollPerfTag) {
|
|
173
173
|
view.setScrollPerfTag(scrollPerfTag);
|
|
174
174
|
}
|
|
175
175
|
|
|
@@ -180,7 +180,7 @@ public class ReactHorizontalScrollViewManager extends ViewGroupManager<ReactHori
|
|
|
180
180
|
|
|
181
181
|
/** Controls overScroll behaviour */
|
|
182
182
|
@ReactProp(name = "overScrollMode")
|
|
183
|
-
public void setOverScrollMode(ReactHorizontalScrollView view, String value) {
|
|
183
|
+
public void setOverScrollMode(ReactHorizontalScrollView view, @Nullable String value) {
|
|
184
184
|
view.setOverScrollMode(ReactScrollViewHelper.parseOverScrollMode(value));
|
|
185
185
|
}
|
|
186
186
|
|
|
@@ -0,0 +1,136 @@
|
|
|
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.scroll
|
|
9
|
+
|
|
10
|
+
import android.view.View
|
|
11
|
+
import android.view.ViewGroup
|
|
12
|
+
import android.view.accessibility.AccessibilityEvent
|
|
13
|
+
import androidx.core.view.AccessibilityDelegateCompat
|
|
14
|
+
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
|
|
15
|
+
import com.facebook.react.R
|
|
16
|
+
import com.facebook.react.bridge.AssertionException
|
|
17
|
+
import com.facebook.react.bridge.ReactSoftExceptionLogger
|
|
18
|
+
import com.facebook.react.bridge.ReadableMap
|
|
19
|
+
import com.facebook.react.uimanager.ReactAccessibilityDelegate
|
|
20
|
+
import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole
|
|
21
|
+
|
|
22
|
+
internal class ReactScrollViewAccessibilityDelegate : AccessibilityDelegateCompat() {
|
|
23
|
+
|
|
24
|
+
private val TAG: String = ReactScrollViewAccessibilityDelegate::class.java.simpleName
|
|
25
|
+
|
|
26
|
+
override fun onInitializeAccessibilityEvent(host: View, event: AccessibilityEvent) {
|
|
27
|
+
super.onInitializeAccessibilityEvent(host, event)
|
|
28
|
+
if (host is ReactScrollView || host is ReactHorizontalScrollView) {
|
|
29
|
+
onInitializeAccessibilityEventInternal(host, event)
|
|
30
|
+
} else {
|
|
31
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
32
|
+
TAG,
|
|
33
|
+
AssertionException(
|
|
34
|
+
"ReactScrollViewAccessibilityDelegate should only be used with ReactScrollView or ReactHorizontalScrollView, not with class: ${host.javaClass.simpleName}"))
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
|
|
39
|
+
super.onInitializeAccessibilityNodeInfo(host, info)
|
|
40
|
+
if (host is ReactScrollView || host is ReactHorizontalScrollView) {
|
|
41
|
+
onInitializeAccessibilityNodeInfoInternal(host, info)
|
|
42
|
+
} else {
|
|
43
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
44
|
+
TAG,
|
|
45
|
+
AssertionException(
|
|
46
|
+
"ReactScrollViewAccessibilityDelegate should only be used with ReactScrollView or ReactHorizontalScrollView, not with class: ${host.javaClass.simpleName}"))
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private fun onInitializeAccessibilityEventInternal(view: View, event: AccessibilityEvent) {
|
|
51
|
+
val accessibilityCollection =
|
|
52
|
+
view.getTag(R.id.accessibility_collection) as? ReadableMap ?: return
|
|
53
|
+
|
|
54
|
+
event.itemCount = accessibilityCollection.getInt("itemCount")
|
|
55
|
+
|
|
56
|
+
val contentView = (view as? ViewGroup)?.getChildAt(0) as? ViewGroup ?: return
|
|
57
|
+
|
|
58
|
+
var firstVisibleIndex: Int? = null
|
|
59
|
+
var lastVisibleIndex: Int? = null
|
|
60
|
+
|
|
61
|
+
for (index in 0..<contentView.childCount) {
|
|
62
|
+
val nextChild = contentView.getChildAt(index)
|
|
63
|
+
val isVisible: Boolean =
|
|
64
|
+
if (view is ReactScrollView) {
|
|
65
|
+
view.isPartiallyScrolledInView(nextChild)
|
|
66
|
+
} else if (view is ReactHorizontalScrollView) {
|
|
67
|
+
view.isPartiallyScrolledInView(nextChild)
|
|
68
|
+
} else {
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
var accessibilityCollectionItem: ReadableMap? =
|
|
72
|
+
nextChild.getTag(R.id.accessibility_collection_item) as ReadableMap
|
|
73
|
+
|
|
74
|
+
if (nextChild !is ViewGroup) {
|
|
75
|
+
return
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If this child's accessibilityCollectionItem is null, we'll check one more
|
|
79
|
+
// nested child.
|
|
80
|
+
// Happens when getItemLayout is not passed in FlatList which adds an additional
|
|
81
|
+
// View in the hierarchy.
|
|
82
|
+
if (nextChild.childCount > 0 && accessibilityCollectionItem == null) {
|
|
83
|
+
val nestedNextChild = nextChild.getChildAt(0)
|
|
84
|
+
if (nestedNextChild != null) {
|
|
85
|
+
val nestedChildAccessibility =
|
|
86
|
+
nestedNextChild.getTag(R.id.accessibility_collection_item) as? ReadableMap
|
|
87
|
+
if (nestedChildAccessibility != null) {
|
|
88
|
+
accessibilityCollectionItem = nestedChildAccessibility
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (isVisible && accessibilityCollectionItem != null) {
|
|
94
|
+
if (firstVisibleIndex == null) {
|
|
95
|
+
firstVisibleIndex = accessibilityCollectionItem.getInt("itemIndex")
|
|
96
|
+
}
|
|
97
|
+
lastVisibleIndex = accessibilityCollectionItem.getInt("itemIndex")
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (firstVisibleIndex != null && lastVisibleIndex != null) {
|
|
101
|
+
event.fromIndex = firstVisibleIndex
|
|
102
|
+
event.toIndex = lastVisibleIndex
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private fun onInitializeAccessibilityNodeInfoInternal(
|
|
108
|
+
view: View,
|
|
109
|
+
info: AccessibilityNodeInfoCompat
|
|
110
|
+
) {
|
|
111
|
+
val accessibilityRole = AccessibilityRole.fromViewTag(view)
|
|
112
|
+
|
|
113
|
+
if (accessibilityRole != null) {
|
|
114
|
+
ReactAccessibilityDelegate.setRole(info, accessibilityRole, view.context)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
val accessibilityCollection = view.getTag(R.id.accessibility_collection) as? ReadableMap
|
|
118
|
+
|
|
119
|
+
if (accessibilityCollection != null) {
|
|
120
|
+
val rowCount = accessibilityCollection.getInt("rowCount")
|
|
121
|
+
val columnCount = accessibilityCollection.getInt("columnCount")
|
|
122
|
+
val hierarchical = accessibilityCollection.getBoolean("hierarchical")
|
|
123
|
+
|
|
124
|
+
val collectionInfoCompat =
|
|
125
|
+
AccessibilityNodeInfoCompat.CollectionInfoCompat.obtain(
|
|
126
|
+
rowCount, columnCount, hierarchical)
|
|
127
|
+
info.setCollectionInfo(collectionInfoCompat)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (view is ReactScrollView) {
|
|
131
|
+
info.isScrollable = view.scrollEnabled
|
|
132
|
+
} else if (view is ReactHorizontalScrollView) {
|
|
133
|
+
info.isScrollable = view.scrollEnabled
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|