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.
Files changed (636) hide show
  1. package/Libraries/Animated/animations/Animation.js +22 -1
  2. package/Libraries/Animated/animations/DecayAnimation.js +1 -0
  3. package/Libraries/Animated/animations/SpringAnimation.js +1 -0
  4. package/Libraries/Animated/animations/TimingAnimation.js +1 -0
  5. package/Libraries/Animated/nodes/AnimatedAddition.js +9 -2
  6. package/Libraries/Animated/nodes/AnimatedColor.js +4 -1
  7. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +10 -2
  8. package/Libraries/Animated/nodes/AnimatedDivision.js +9 -2
  9. package/Libraries/Animated/nodes/AnimatedInterpolation.js +5 -1
  10. package/Libraries/Animated/nodes/AnimatedModulo.js +5 -2
  11. package/Libraries/Animated/nodes/AnimatedMultiplication.js +9 -2
  12. package/Libraries/Animated/nodes/AnimatedNode.js +25 -46
  13. package/Libraries/Animated/nodes/AnimatedObject.js +9 -2
  14. package/Libraries/Animated/nodes/AnimatedProps.js +5 -1
  15. package/Libraries/Animated/nodes/AnimatedStyle.js +5 -1
  16. package/Libraries/Animated/nodes/AnimatedSubtraction.js +9 -2
  17. package/Libraries/Animated/nodes/AnimatedTracking.js +5 -1
  18. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -1
  19. package/Libraries/Animated/nodes/AnimatedValue.js +63 -4
  20. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  21. package/Libraries/Animated/useAnimatedProps.js +14 -56
  22. package/Libraries/AppDelegate/RCTAppDelegate.h +6 -48
  23. package/Libraries/AppDelegate/RCTAppDelegate.mm +5 -230
  24. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.h +21 -0
  25. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +123 -0
  26. package/Libraries/AppDelegate/RCTReactNativeFactory.h +98 -0
  27. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +266 -0
  28. package/Libraries/AppDelegate/RCTRootViewFactory.mm +1 -1
  29. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +0 -1
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +1 -1
  31. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  32. package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
  33. package/Libraries/Components/LayoutConformance/LayoutConformance.js +59 -0
  34. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
  35. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  36. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  37. package/Libraries/Components/TextInput/TextInput.d.ts +5 -0
  38. package/Libraries/Components/TextInput/TextInput.flow.js +6 -0
  39. package/Libraries/Components/TextInput/TextInput.js +6 -0
  40. package/Libraries/Components/View/ViewPropTypes.d.ts +4 -5
  41. package/Libraries/Components/View/ViewPropTypes.js +0 -9
  42. package/Libraries/Core/ReactNativeVersion.js +2 -2
  43. package/Libraries/Core/setUpBatchedBridge.js +1 -16
  44. package/Libraries/EventEmitter/RCTEventEmitter.js +2 -6
  45. package/Libraries/Image/AssetSourceResolver.js +11 -0
  46. package/Libraries/Image/RCTImageView.mm +3 -3
  47. package/Libraries/Inspector/BorderBox.js +26 -14
  48. package/Libraries/Inspector/BoxInspector.js +60 -42
  49. package/Libraries/Inspector/ElementBox.js +55 -48
  50. package/Libraries/Inspector/StyleInspector.js +36 -30
  51. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  52. package/Libraries/Lists/FlatList.d.ts +1 -1
  53. package/Libraries/Modal/Modal.js +2 -0
  54. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +1 -1
  55. package/Libraries/NativeComponent/BaseViewConfig.android.js +0 -2
  56. package/Libraries/NativeComponent/BaseViewConfig.ios.js +0 -2
  57. package/Libraries/Network/RCTNetworking.android.js +24 -16
  58. package/Libraries/Network/RCTNetworking.ios.js +1 -46
  59. package/Libraries/Network/RCTNetworking.js.flow +1 -46
  60. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
  61. package/Libraries/ReactNative/UIManagerProperties.js +3 -1
  62. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15829 -26461
  63. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3907 -2560
  64. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4399 -2878
  65. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16103 -26908
  66. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +4034 -2695
  67. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4535 -3045
  68. package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -6
  69. package/Libraries/StyleSheet/processTransform.js +6 -0
  70. package/Libraries/Text/Text/NSTextStorage+FontScaling.m +9 -0
  71. package/Libraries/Text/Text.d.ts +6 -1
  72. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +2 -0
  73. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +26 -0
  74. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +2 -0
  75. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +25 -0
  76. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +2 -0
  77. package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
  78. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +26 -0
  79. package/Libraries/Text/TextProps.js +2 -2
  80. package/Libraries/Utilities/BackHandler.android.js +5 -4
  81. package/Libraries/Utilities/BackHandler.ios.js +3 -4
  82. package/README-core.md +2 -2
  83. package/React/Base/RCTVersion.m +2 -2
  84. package/React/CoreModules/RCTDevSettings.h +0 -1
  85. package/React/CoreModules/RCTDeviceInfo.mm +4 -0
  86. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +3 -5
  87. package/React/DevSupport/RCTInspectorDevServerHelper.mm +1 -6
  88. package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +3 -5
  89. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +0 -24
  90. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +0 -28
  91. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +90 -57
  92. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +241 -104
  93. package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryContentView.mm +0 -5
  94. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +39 -10
  95. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +3 -3
  96. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +22 -3
  97. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +5 -0
  98. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
  99. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +7 -2
  100. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -0
  101. package/React/Fabric/Mounting/RCTMountingManager.mm +6 -9
  102. package/React/Fabric/RCTScheduler.mm +1 -1
  103. package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
  104. package/React/Modules/RCTUIManager.mm +1 -2
  105. package/React/React-RCTFBReactNativeSpec.podspec +1 -0
  106. package/React/React-RCTFabric.podspec +3 -2
  107. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +12 -12
  108. package/React/Views/RCTComponentData.mm +1 -5
  109. package/React/Views/RCTLayout.m +3 -0
  110. package/React/Views/RCTShadowView.h +3 -3
  111. package/React/Views/RCTShadowView.m +52 -20
  112. package/React/Views/RCTView.m +6 -2
  113. package/React/Views/RCTViewManager.m +0 -7
  114. package/React/Views/ScrollView/RCTScrollView.m +46 -19
  115. package/React-Core.podspec +1 -1
  116. package/ReactAndroid/api/ReactAndroid.api +120 -227
  117. package/ReactAndroid/build.gradle.kts +8 -13
  118. package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +2 -0
  119. package/ReactAndroid/external-artifacts/build.gradle.kts +5 -5
  120. package/ReactAndroid/gradle.properties +1 -1
  121. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesMemoryDumper.java → HermesMemoryDumper.kt} +5 -5
  122. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesSamplingProfiler.java → HermesSamplingProfiler.kt} +8 -10
  123. package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +12 -59
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +12 -1
  125. package/ReactAndroid/src/main/java/com/facebook/react/{ReactPackageLogger.java → ReactPackageLogger.kt} +3 -3
  126. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +8 -8
  127. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -3
  128. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +6 -0
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.kt +5 -3
  130. package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +4 -8
  131. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +11 -5
  132. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +0 -7
  133. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -3
  134. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +6 -1
  135. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +11 -23
  136. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +3 -30
  137. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/HMRClient.java +4 -1
  138. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +4 -4
  140. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +21 -26
  141. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -14
  142. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.java +2 -11
  143. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +88 -0
  144. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +6 -6
  145. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +24 -0
  146. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +7 -7
  147. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +21 -21
  148. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +36 -36
  149. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +8 -8
  150. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +10 -10
  151. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +40 -40
  152. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +8 -8
  153. package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +3 -3
  154. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +55 -0
  155. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.kt +185 -0
  156. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/{HeadlessJsTaskEventListener.java → HeadlessJsTaskEventListener.kt} +5 -6
  157. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.kt +20 -0
  158. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/LinearCountingRetryPolicy.kt +4 -4
  159. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/NoRetryPolicy.kt +7 -8
  160. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +8 -5
  161. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +11 -17
  162. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
  163. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.kt +16 -0
  164. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +107 -0
  165. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +18 -19
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.kt +48 -0
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +397 -0
  169. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -10
  170. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1 -1
  171. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +8 -8
  172. package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +4 -10
  173. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +4 -0
  174. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +13 -12
  175. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +15 -12
  176. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ComponentNameResolver.java → ComponentNameResolver.kt} +4 -5
  177. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.kt +5 -2
  178. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +0 -5
  179. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +21 -0
  180. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +18 -0
  181. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{RootView.java → RootView.kt} +11 -12
  182. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewManager.kt +1 -1
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{UIBlock.java → UIBlock.kt} +3 -3
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -5
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +25 -0
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +1 -1
  187. package/{Libraries/AppDelegate/RCTAppDelegate+Protected.h → ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerWithGeneratedInterface.kt} +3 -8
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +12 -5
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +46 -80
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +5 -5
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +5 -5
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CompositeBackgroundDrawable.kt +8 -9
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{BatchEventDispatchedListener.java → BatchEventDispatchedListener.kt} +3 -3
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +46 -0
  195. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +40 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -6
  197. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.kt +19 -0
  198. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +23 -0
  199. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +241 -0
  200. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +193 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +44 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +37 -0
  203. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.kt +130 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +1 -1
  205. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.kt +77 -0
  206. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +196 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +16 -17
  208. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +5 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +34 -1
  210. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +11 -0
  211. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/{FpsListener.java → FpsListener.kt} +4 -4
  212. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -0
  213. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +3 -3
  214. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.kt +136 -0
  215. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -2
  216. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +152 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +52 -0
  218. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +1 -7
  219. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +8 -13
  220. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +50 -0
  221. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +1 -1
  222. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +1 -9
  223. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +111 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +90 -20
  225. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +2 -2
  226. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +22 -1
  227. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +43 -1
  228. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +86 -2
  229. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +44 -2
  230. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +7 -1
  231. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -6
  232. package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +6 -1
  233. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +96 -11
  234. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +9 -0
  235. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +1 -0
  236. package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +0 -3
  237. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
  238. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +41 -25
  239. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +0 -2
  240. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +63 -91
  241. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -7
  242. package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +9 -9
  243. package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +6 -10
  244. package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
  245. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +4 -0
  246. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
  247. package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +0 -1
  248. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +49 -49
  249. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +11 -11
  250. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +1 -4
  251. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +0 -1
  252. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -1
  253. package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -9
  254. package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +0 -4
  255. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +3 -4
  256. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +3 -4
  257. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +6 -0
  258. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +1 -0
  259. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -0
  260. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +1 -0
  261. package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +3 -7
  262. package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +0 -2
  263. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +0 -1
  264. package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +0 -1
  265. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +2 -8
  266. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +2 -8
  267. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -1
  268. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +18 -17
  269. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +1 -1
  270. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -1
  271. package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +0 -2
  272. package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +0 -1
  273. package/ReactAndroid/src/main/res/views/view/values/ids.xml +5 -0
  274. package/ReactCommon/React-Fabric.podspec +8 -0
  275. package/ReactCommon/React-FabricComponents.podspec +2 -2
  276. package/ReactCommon/React-FabricImage.podspec +4 -1
  277. package/ReactCommon/cxxreact/CxxNativeModule.cpp +3 -3
  278. package/ReactCommon/cxxreact/Instance.cpp +6 -6
  279. package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
  280. package/ReactCommon/cxxreact/JSExecutor.cpp +4 -2
  281. package/ReactCommon/cxxreact/ModuleRegistry.cpp +6 -6
  282. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -3
  283. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  284. package/ReactCommon/cxxreact/SystraceSection.h +8 -141
  285. package/ReactCommon/cxxreact/TraceSection.h +181 -0
  286. package/ReactCommon/cxxreact/tests/jsbigstring.cpp +19 -0
  287. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -2
  288. package/ReactCommon/jsc/JSCRuntime.cpp +0 -2
  289. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  290. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +27 -19
  291. package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -3
  292. package/ReactCommon/jserrorhandler/StackTraceParser.cpp +16 -16
  293. package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -1
  294. package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +252 -246
  295. package/ReactCommon/jsi/jsi/CMakeLists.txt +0 -3
  296. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -1
  297. package/ReactCommon/jsi/jsi/JSIDynamic.h +1 -1
  298. package/ReactCommon/jsi/jsi/decorator.h +61 -0
  299. package/ReactCommon/jsi/jsi/jsi-inl.h +4 -0
  300. package/ReactCommon/jsi/jsi/jsi.cpp +37 -0
  301. package/ReactCommon/jsi/jsi/jsi.h +81 -0
  302. package/ReactCommon/jsi/jsi/test/testlib.cpp +88 -0
  303. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +9 -9
  304. package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -1
  305. package/ReactCommon/jsinspector-modern/HostAgent.cpp +3 -7
  306. package/ReactCommon/jsinspector-modern/HostTarget.cpp +22 -1
  307. package/ReactCommon/jsinspector-modern/HostTarget.h +1 -1
  308. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +19 -4
  309. package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -0
  310. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +21 -10
  311. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +12 -11
  312. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +2 -16
  313. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +14 -14
  314. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +7 -13
  315. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +1 -1
  316. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +1 -3
  317. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +3 -3
  318. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +1 -1
  319. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +26 -0
  320. package/ReactCommon/jsinspector-modern/tracing/CdpTracing.h +21 -0
  321. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +187 -0
  322. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +126 -0
  323. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +56 -0
  324. package/ReactCommon/react/featureflags/CMakeLists.txt +3 -0
  325. package/ReactCommon/react/featureflags/React-featureflags.podspec +7 -0
  326. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +15 -15
  327. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +18 -18
  328. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +88 -88
  329. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +9 -9
  330. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +17 -17
  331. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +454 -0
  332. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +5 -5
  333. package/ReactCommon/react/featureflags/tests/ReactNativeFeatureFlagsDynamicProviderTest.cpp +78 -0
  334. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -3
  335. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +3 -3
  336. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +1 -5
  337. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +13 -23
  338. package/ReactCommon/react/nativemodule/cputime/CPUTime.h +55 -0
  339. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.cpp +35 -0
  340. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +28 -0
  341. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +18 -18
  342. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +8 -8
  343. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
  344. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +5 -8
  345. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -3
  346. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +22 -43
  347. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +0 -15
  348. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  349. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +22 -2
  350. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
  351. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  352. package/ReactCommon/react/renderer/animations/CMakeLists.txt +0 -1
  353. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +1 -1
  354. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +25 -19
  355. package/ReactCommon/react/renderer/animations/primitives.h +1 -1
  356. package/ReactCommon/react/renderer/animations/utils.h +3 -4
  357. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +31 -9
  358. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +81 -31
  359. package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +0 -1
  360. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +4 -1
  361. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +2 -0
  362. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +2 -2
  363. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +5 -5
  364. package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
  365. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +38 -10
  366. package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +1 -1
  367. package/ReactCommon/react/renderer/components/image/ImageState.cpp +2 -3
  368. package/ReactCommon/react/renderer/components/image/ImageState.h +9 -6
  369. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -4
  370. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +7 -0
  371. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -2
  372. package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +2 -2
  373. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +33 -0
  374. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +17 -0
  375. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +3 -2
  376. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +2 -1
  377. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -4
  378. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +7 -0
  379. package/ReactCommon/react/renderer/{uimanager/bindingUtils.h → components/text/ParagraphComponentDescriptor.cpp} +2 -8
  380. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +10 -7
  381. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +23 -0
  382. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +8 -1
  383. package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +243 -0
  384. package/ReactCommon/react/renderer/components/textinput/TextInputState.cpp +71 -0
  385. package/ReactCommon/react/renderer/components/textinput/{platform/ios/react/renderer/components/iostextinput/TextInputState.h → TextInputState.h} +27 -7
  386. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +6 -13
  387. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +0 -2
  388. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +145 -144
  389. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +27 -29
  390. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +4 -5
  391. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +0 -26
  392. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +0 -6
  393. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +0 -147
  394. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +5 -57
  395. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +60 -70
  396. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +3 -3
  397. package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +18 -0
  398. package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +36 -0
  399. package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +28 -0
  400. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +4 -0
  401. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -1
  402. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -22
  403. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  404. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +3 -1
  405. package/ReactCommon/react/renderer/components/view/conversions.h +117 -43
  406. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -2
  407. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +3 -1
  408. package/ReactCommon/react/renderer/components/view/primitives.h +1 -1
  409. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +12 -12
  410. package/ReactCommon/react/renderer/core/CMakeLists.txt +0 -1
  411. package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +4 -2
  412. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +4 -2
  413. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +17 -2
  414. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +26 -0
  415. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -0
  416. package/ReactCommon/react/renderer/core/EventEmitter.cpp +3 -3
  417. package/ReactCommon/react/renderer/core/Props.cpp +16 -5
  418. package/ReactCommon/react/renderer/core/Props.h +11 -4
  419. package/ReactCommon/react/renderer/core/RawProps.cpp +30 -5
  420. package/ReactCommon/react/renderer/core/RawProps.h +10 -1
  421. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +7 -2
  422. package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -1
  423. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +1 -0
  424. package/ReactCommon/react/renderer/core/RawValue.h +315 -22
  425. package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +95 -4
  426. package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +19 -4
  427. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +7 -1
  428. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +7 -5
  429. package/ReactCommon/react/renderer/graphics/Transform.cpp +11 -2
  430. package/ReactCommon/react/renderer/graphics/Transform.h +2 -1
  431. package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +4 -2
  432. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +7 -0
  433. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +43 -0
  434. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +36 -0
  435. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +43 -0
  436. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +94 -0
  437. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +101 -0
  438. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +9 -1
  439. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  440. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +9 -0
  441. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  442. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImageManager.mm +2 -2
  443. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +187 -152
  444. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -5
  445. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +10 -16
  446. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -12
  447. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +44 -14
  448. package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +8 -4
  449. package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +1 -1
  450. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +116 -193
  451. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +0 -3
  452. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +7 -4
  453. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +2 -1
  454. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +7 -8
  455. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +6 -6
  456. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +3 -1
  457. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +2 -0
  458. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +11 -11
  459. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -15
  460. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -3
  461. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +0 -1
  462. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +6 -37
  463. package/ReactCommon/react/renderer/scheduler/Scheduler.h +0 -3
  464. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +15 -11
  465. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +1 -0
  466. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +56 -2
  467. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +23 -3
  468. package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
  469. package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -0
  470. package/ReactCommon/react/renderer/textlayoutmanager/{platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h → TextLayoutManager.h} +18 -17
  471. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +77 -89
  472. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +6 -10
  473. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +6 -2
  474. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +23 -1
  475. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +11 -32
  476. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +9 -23
  477. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.cpp +88 -0
  478. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +50 -0
  479. package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +0 -1
  480. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +3 -40
  481. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +23 -18
  482. package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -0
  483. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -31
  484. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +0 -4
  485. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +10 -10
  486. package/ReactCommon/react/runtime/CMakeLists.txt +0 -1
  487. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -2
  488. package/ReactCommon/react/runtime/ReactInstance.cpp +43 -57
  489. package/ReactCommon/react/runtime/TimerManager.cpp +4 -4
  490. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +5 -1
  491. package/ReactCommon/react/runtime/hermes/HermesInstance.h +0 -2
  492. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +2 -6
  493. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +6 -15
  494. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +3 -1
  495. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +15 -15
  496. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +5 -4
  497. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
  498. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +33 -17
  499. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +8 -2
  500. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.cpp → ReactPerfettoLogger.cpp} +25 -24
  501. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.h → ReactPerfettoLogger.h} +9 -9
  502. package/ReactCommon/yoga/yoga/YGEnums.cpp +6 -0
  503. package/ReactCommon/yoga/yoga/YGEnums.h +4 -1
  504. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +124 -24
  505. package/ReactCommon/yoga/yoga/YGNodeStyle.h +22 -1
  506. package/ReactCommon/yoga/yoga/YGValue.h +3 -0
  507. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +6 -6
  508. package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +2 -2
  509. package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +1 -1
  510. package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +9 -6
  511. package/ReactCommon/yoga/yoga/enums/Unit.h +4 -1
  512. package/ReactCommon/yoga/yoga/node/Node.cpp +8 -8
  513. package/ReactCommon/yoga/yoga/node/Node.h +5 -5
  514. package/ReactCommon/yoga/yoga/style/Style.h +14 -12
  515. package/ReactCommon/yoga/yoga/style/StyleLength.h +14 -7
  516. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +139 -0
  517. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  518. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +60 -3
  519. package/gradle/libs.versions.toml +6 -2
  520. package/index.js +5 -0
  521. package/package.json +12 -13
  522. package/react-native.config.js +6 -0
  523. package/scripts/cocoapods/codegen_utils.rb +4 -4
  524. package/scripts/cocoapods/new_architecture.rb +3 -3
  525. package/scripts/cocoapods/utils.rb +4 -3
  526. package/scripts/codegen/generate-artifacts-executor.js +8 -4
  527. package/scripts/generate-codegen-artifacts.js +6 -1
  528. package/scripts/react-native-xcode.sh +1 -1
  529. package/scripts/react_native_pods.rb +3 -3
  530. package/scripts/xcode/ccache-clang++.sh +1 -1
  531. package/scripts/xcode/ccache-clang.sh +1 -1
  532. package/sdks/.hermesversion +1 -1
  533. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +1 -1
  534. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  535. package/sdks/hermesc/osx-bin/hermes +0 -0
  536. package/sdks/hermesc/osx-bin/hermesc +0 -0
  537. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  538. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  539. package/src/private/featureflags/README.md +5 -0
  540. package/src/private/featureflags/ReactNativeFeatureFlags.js +33 -27
  541. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -5
  542. package/src/private/renderer/errorhandling/ErrorHandlers.js +12 -55
  543. package/src/private/specs/modules/{NativeJSCSamplingProfiler.js → NativeCPUTime.js} +7 -2
  544. package/src/private/specs/modules/NativeFantom.js +37 -0
  545. package/src/private/utilities/ensureInstance.js +21 -0
  546. package/src/private/webapis/dom/nodes/ReactNativeElement.js +49 -6
  547. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +17 -9
  548. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +11 -11
  549. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
  550. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -1
  551. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  552. package/src/private/webapis/performance/Performance.js +0 -12
  553. package/src/private/webapis/performance/specs/NativePerformance.js +0 -11
  554. package/types/index.d.ts +1 -0
  555. package/types/public/ReactNativeTVTypes.d.ts +49 -51
  556. package/Libraries/HeapCapture/HeapCapture.js +0 -29
  557. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -13
  558. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -13
  559. package/Libraries/Performance/SamplingProfiler.js +0 -39
  560. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +0 -334
  561. package/React/Inspector/RCTInspectorPackagerConnection.m +0 -325
  562. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -50
  563. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +0 -314
  564. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSCHeapCapture.java +0 -76
  565. package/ReactAndroid/src/main/java/com/facebook/react/fabric/EmptyReactNativeConfig.kt +0 -36
  566. package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.kt +0 -33
  567. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +0 -54
  568. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +0 -83
  569. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java +0 -121
  570. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +0 -214
  571. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.java +0 -22
  572. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/XmlFormat.kt +0 -143
  573. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.java +0 -17
  574. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +0 -124
  575. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.java +0 -58
  576. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +0 -422
  577. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +0 -98
  578. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +0 -25
  579. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.java +0 -20
  580. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +0 -45
  581. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +0 -37
  582. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.java +0 -19
  583. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.java +0 -24
  584. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +0 -257
  585. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +0 -210
  586. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +0 -43
  587. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +0 -39
  588. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +0 -165
  589. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.java +0 -85
  590. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +0 -204
  591. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +0 -161
  592. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +0 -232
  593. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +0 -70
  594. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/LegacyLineHeightSpan.kt +0 -69
  595. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -114
  596. package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +0 -31
  597. package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +0 -39
  598. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +0 -82
  599. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h +0 -31
  600. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Countable.h +0 -45
  601. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Doxyfile +0 -18
  602. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +0 -93
  603. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +0 -58
  604. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +0 -266
  605. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +0 -37
  606. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +0 -112
  607. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +0 -43
  608. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +0 -350
  609. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +0 -20
  610. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +0 -20
  611. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/visibility.h +0 -10
  612. package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +0 -102
  613. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.cpp +0 -47
  614. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.h +0 -38
  615. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +0 -41
  616. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +0 -35
  617. package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +0 -243
  618. package/ReactAndroid/src/main/jni/third-party/jsc/CMakeLists.txt +0 -15
  619. package/ReactCommon/React-nativeconfig.podspec +0 -36
  620. package/ReactCommon/cxxreact/tests/main.cpp +0 -15
  621. package/ReactCommon/react/config/CMakeLists.txt +0 -20
  622. package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -28
  623. package/ReactCommon/react/config/ReactNativeConfig.h +0 -42
  624. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -95
  625. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +0 -80
  626. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp +0 -10
  627. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +0 -78
  628. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +0 -69
  629. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +0 -123
  630. package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +0 -79
  631. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +0 -413
  632. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +0 -181
  633. package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +0 -327
  634. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewComponentDescriptor.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewComponentDescriptor.h} +0 -0
  635. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.cpp → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.cpp} +0 -0
  636. /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 leftInset = topLeft.horizontal + bottomLeft.horizontal
182
- val topInset = topLeft.vertical + topRight.vertical
183
- val rightInset = topRight.horizontal + bottomRight.horizontal
184
- val bottomInset = bottomLeft.vertical + bottomRight.vertical
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 leftInsetScale = if (leftInset > 0) minOf(1.0f, height / leftInset) else 0f
187
- val topInsetScale = if (topInset > 0) minOf(1.0f, width / topInset) else 0f
188
- val rightInsetScale = if (rightInset > 0) minOf(1.0f, height / rightInset) else 0f
189
- val bottomInsetScale = if (bottomInset > 0) minOf(1.0f, width / bottomInset) else 0f
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(topInsetScale, leftInsetScale),
195
- topLeft.vertical * minOf(topInsetScale, leftInsetScale)),
194
+ topLeft.horizontal * minOf(topEdgeRadiiScale, leftEdgeRadiiScale),
195
+ topLeft.vertical * minOf(topEdgeRadiiScale, leftEdgeRadiiScale)),
196
196
  topRight =
197
197
  CornerRadii(
198
- topRight.horizontal * minOf(topInsetScale, rightInsetScale),
199
- topRight.vertical * minOf(topInsetScale, rightInsetScale)),
198
+ topRight.horizontal * minOf(rightEdgeRadiiScale, topEdgeRadiiScale),
199
+ topRight.vertical * minOf(rightEdgeRadiiScale, topEdgeRadiiScale)),
200
200
  bottomLeft =
201
201
  CornerRadii(
202
- bottomLeft.horizontal * minOf(bottomInsetScale, leftInsetScale),
203
- bottomLeft.vertical * minOf(bottomInsetScale, leftInsetScale)),
202
+ bottomLeft.horizontal * minOf(bottomEdgeRadiiScale, leftEdgeRadiiScale),
203
+ bottomLeft.vertical * minOf(bottomEdgeRadiiScale, leftEdgeRadiiScale)),
204
204
  bottomRight =
205
205
  CornerRadii(
206
- bottomRight.horizontal * minOf(bottomInsetScale, rightInsetScale),
207
- bottomRight.vertical * minOf(bottomInsetScale, rightInsetScale)),
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, ev: MotionEvent) {
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)
@@ -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
- void enable(String tag);
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
- void disable(String tag);
27
+ public fun disable(tag: String)
28
28
 
29
29
  /** Reports whether this listener is recording data. */
30
- boolean isEnabled();
30
+ public fun isEnabled(): Boolean
31
31
  }
@@ -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
+ }