react-native 0.0.0-16bb2ae4f → 0.0.0-18697adec

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +23 -4
  4. package/Libraries/Animated/NativeAnimatedHelper.js +3 -3
  5. package/Libraries/BatchedBridge/MessageQueue.js +10 -10
  6. package/Libraries/Blob/FileReader.js +1 -1
  7. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  8. package/Libraries/Blob/URL.js +1 -1
  9. package/Libraries/Components/Button.js +3 -0
  10. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
  11. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  12. package/Libraries/Components/ScrollView/ScrollView.js +14 -5
  13. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -0
  14. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
  15. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -0
  16. package/Libraries/Components/StatusBar/StatusBar.js +6 -14
  17. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -3
  18. package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +1 -0
  19. package/Libraries/Components/TextInput/TextInput.js +27 -1
  20. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  21. package/Libraries/Components/View/ViewAccessibility.js +1 -0
  22. package/Libraries/Core/ExceptionsManager.js +3 -1
  23. package/Libraries/Core/ReactNativeVersion.js +1 -1
  24. package/Libraries/Core/Timers/JSTimers.js +37 -28
  25. package/Libraries/Core/Timers/immediateShim.js +67 -0
  26. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  27. package/Libraries/Core/polyfillPromise.js +1 -1
  28. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  29. package/Libraries/Core/setUpGlobals.js +2 -0
  30. package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
  31. package/Libraries/Core/setUpTimers.js +65 -6
  32. package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +1 -1
  33. package/Libraries/Image/Image.ios.js +6 -0
  34. package/Libraries/Image/ImageBackground.js +10 -8
  35. package/Libraries/Image/ImageProps.js +28 -0
  36. package/Libraries/Image/ImageSource.js +1 -1
  37. package/Libraries/Image/React-RCTImage.podspec +1 -1
  38. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  39. package/Libraries/Lists/FlatList.js +43 -26
  40. package/Libraries/Lists/VirtualizedList.js +3 -1
  41. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +4 -4
  42. package/Libraries/LogBox/Data/LogBoxData.js +18 -18
  43. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  44. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  45. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  46. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  47. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  48. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  49. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  50. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
  51. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +17 -11
  52. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  53. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  54. package/Libraries/Network/XMLHttpRequest.js +3 -1
  55. package/Libraries/NewAppScreen/components/logo.png +0 -0
  56. package/Libraries/Performance/QuickPerformanceLogger.js +2 -1
  57. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
  58. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
  59. package/Libraries/Pressability/Pressability.js +1 -0
  60. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -0
  61. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  62. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  63. package/Libraries/ReactNative/AppRegistry.js +1 -1
  64. package/Libraries/ReactNative/PaperUIManager.js +1 -0
  65. package/Libraries/ReactNative/renderApplication.js +1 -1
  66. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
  67. package/Libraries/Reliability/UserFlow.js +7 -0
  68. package/Libraries/Renderer/REVISION +1 -1
  69. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +4485 -3842
  70. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2060 -1709
  71. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +2148 -1796
  72. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +4264 -3695
  73. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +1303 -1063
  74. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +1374 -1139
  75. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  76. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  77. package/Libraries/Renderer/shims/ReactNative.js +3 -1
  78. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
  79. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  80. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  81. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  82. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  83. package/Libraries/Text/Text.js +11 -0
  84. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
  85. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  86. package/Libraries/Text/TextProps.js +1 -7
  87. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
  88. package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
  89. package/Libraries/UTFSequence.js +1 -1
  90. package/Libraries/Utilities/Dimensions.js +9 -14
  91. package/Libraries/Utilities/FeatureDetection.js +31 -0
  92. package/Libraries/Utilities/HMRClient.js +10 -6
  93. package/Libraries/Utilities/MatrixMath.js +1 -1
  94. package/Libraries/Utilities/NativeDeviceInfo.js +1 -1
  95. package/Libraries/Utilities/deprecatedPropType.js +2 -2
  96. package/Libraries/Utilities/useWindowDimensions.js +7 -2
  97. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  98. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +1 -1
  99. package/React/Base/RCTBridge+Private.h +8 -0
  100. package/React/Base/RCTBridge.h +13 -0
  101. package/React/Base/RCTBridge.m +30 -7
  102. package/React/Base/RCTBridgeModule.h +3 -12
  103. package/React/Base/RCTBundleURLProvider.h +26 -1
  104. package/React/Base/RCTBundleURLProvider.mm +79 -15
  105. package/React/Base/RCTConstants.h +6 -7
  106. package/React/Base/RCTConstants.m +12 -12
  107. package/React/Base/RCTConvert.h +1 -1
  108. package/React/Base/RCTConvert.m +1 -1
  109. package/React/Base/RCTCxxConvert.h +1 -1
  110. package/React/Base/RCTDefines.h +12 -3
  111. package/React/Base/RCTEventDispatcherProtocol.h +2 -0
  112. package/React/Base/RCTJSThread.h +29 -0
  113. package/React/Base/RCTJSThread.m +19 -0
  114. package/React/Base/RCTMultipartStreamReader.m +0 -2
  115. package/React/Base/RCTRootView.h +15 -0
  116. package/React/Base/RCTRootView.m +15 -0
  117. package/React/Base/RCTTouchHandler.m +4 -9
  118. package/React/Base/RCTUtils.h +3 -0
  119. package/React/Base/RCTUtils.m +14 -7
  120. package/React/Base/RCTVersion.m +1 -1
  121. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
  122. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
  123. package/React/CoreModules/BUCK +3 -3
  124. package/React/CoreModules/RCTAccessibilityManager.mm +1 -1
  125. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  126. package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
  127. package/React/CoreModules/RCTDevLoadingView.mm +5 -10
  128. package/React/CoreModules/RCTDevSettings.mm +12 -10
  129. package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
  130. package/React/CoreModules/RCTDeviceInfo.mm +4 -4
  131. package/React/CoreModules/RCTEventDispatcher.mm +5 -0
  132. package/React/CoreModules/RCTLogBox.mm +14 -10
  133. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  134. package/React/CoreModules/RCTRedBox.mm +1 -5
  135. package/React/CoreModules/React-CoreModules.podspec +1 -1
  136. package/React/CxxBridge/RCTCxxBridge.mm +18 -1
  137. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  138. package/React/DevSupport/RCTPackagerConnection.mm +19 -8
  139. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +12 -4
  140. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +1 -2
  141. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +64 -62
  142. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +31 -11
  143. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  144. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +108 -4
  145. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +1 -0
  146. package/React/Fabric/Mounting/RCTMountingManager.h +3 -0
  147. package/React/Fabric/Mounting/RCTMountingManager.mm +22 -3
  148. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +2 -0
  149. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +12 -0
  150. package/React/Fabric/RCTConversions.h +3 -0
  151. package/React/Fabric/RCTScheduler.mm +12 -5
  152. package/React/Fabric/RCTSurfacePresenter.mm +6 -7
  153. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +1 -1
  154. package/React/Fabric/RCTSurfaceRegistry.h +1 -1
  155. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  156. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  157. package/React/Modules/RCTI18nUtil.h +14 -6
  158. package/React/Modules/RCTI18nUtil.m +1 -47
  159. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  160. package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
  161. package/React/React-RCTFabric.podspec +1 -1
  162. package/React/Views/RCTFont.mm +54 -38
  163. package/React/Views/RCTModalHostView.h +1 -1
  164. package/React/Views/RCTModalHostView.m +16 -0
  165. package/React/Views/RCTModalHostViewManager.m +1 -0
  166. package/React/Views/RCTView.m +2 -7
  167. package/React/Views/RCTViewManager.m +4 -2
  168. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  169. package/React/Views/ScrollView/RCTScrollView.h +1 -0
  170. package/React/Views/ScrollView/RCTScrollView.m +111 -36
  171. package/React/Views/ScrollView/RCTScrollViewManager.m +1 -7
  172. package/React/Views/UIView+React.m +2 -11
  173. package/React-Core.podspec +1 -1
  174. package/ReactAndroid/Android-prebuilt.mk +8 -0
  175. package/ReactAndroid/README.md +1 -1
  176. package/ReactAndroid/build.gradle +12 -5
  177. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +1 -1
  178. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +1 -1
  179. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +1 -1
  180. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +5 -5
  181. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
  182. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +5 -5
  183. package/ReactAndroid/src/androidTest/js/BUCK +26 -0
  184. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
  185. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
  186. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
  187. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutorFactory.java +1 -1
  188. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/RuntimeConfig.java +0 -6
  189. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +1 -1
  190. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +1 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +2 -0
  192. package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
  193. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +89 -44
  194. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +28 -0
  195. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +13 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +5 -4
  197. package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -1
  198. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +2 -2
  199. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +4 -4
  200. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +3 -2
  201. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +4 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +11 -0
  203. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +22 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +3 -6
  206. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +1 -1
  207. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{ReactSoftException.java → ReactSoftExceptionLogger.java} +8 -3
  209. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
  211. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +10 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  213. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +1 -1
  214. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +32 -4
  215. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -1
  216. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +97 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +9 -58
  218. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +14 -9
  219. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +3 -72
  220. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
  221. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -0
  222. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
  223. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +1 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +64 -31
  225. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +3 -3
  226. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  227. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +1 -1
  228. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +54 -10
  229. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +7 -1
  230. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +14 -6
  231. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +4 -4
  232. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +40 -11
  233. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +2 -2
  234. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
  235. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +2 -2
  236. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +1 -1
  237. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +1 -1
  238. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +1 -1
  239. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +1 -1
  240. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +2 -2
  241. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +1 -1
  242. package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +1 -1
  243. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +1 -1
  244. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  245. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  246. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  247. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +1 -1
  248. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +1 -1
  249. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +10 -6
  250. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +1 -1
  251. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +1 -1
  252. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  253. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +1 -1
  254. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +1 -1
  255. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  256. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +1 -1
  257. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  258. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +1 -1
  259. package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +1 -1
  260. package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +1 -1
  261. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +1 -1
  262. package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +1 -1
  263. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +2 -2
  264. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  265. package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +1 -1
  266. package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +1 -1
  267. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +1 -1
  268. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +11 -9
  269. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  270. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  271. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +4 -2
  272. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +39 -11
  273. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +9 -2
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +2 -2
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -0
  278. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +162 -66
  279. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +9 -9
  280. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -0
  281. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +6 -5
  282. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
  283. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +12 -20
  284. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  285. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +14 -13
  286. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +21 -5
  287. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +1 -1
  288. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +1 -1
  289. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +1 -1
  290. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +1 -1
  291. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +7 -11
  292. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +1 -1
  293. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +1 -0
  294. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +9 -1
  295. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +24 -1
  296. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +2 -2
  297. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +1 -1
  298. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +4 -7
  299. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +1 -1
  300. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -1
  301. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  302. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +23 -2
  303. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +8 -0
  304. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  305. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +31 -12
  306. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +31 -11
  307. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +1 -0
  308. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +14 -4
  309. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  310. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +114 -62
  311. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  312. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +39 -8
  313. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +24 -3
  314. package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -3
  315. package/ReactAndroid/src/main/jni/react/jni/BUCK +5 -2
  316. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +61 -0
  317. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +8 -0
  318. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  319. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  320. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
  321. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
  322. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  323. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  324. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  325. package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +0 -1
  326. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +63 -2
  327. package/ReactAndroid/src/main/third-party/java/testing-support-lib/BUCK +0 -31
  328. package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +1 -0
  329. package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +1 -0
  330. package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +168 -0
  331. package/ReactCommon/React-Fabric.podspec +10 -1
  332. package/ReactCommon/ReactCommon.podspec +2 -1
  333. package/ReactCommon/callinvoker/BUCK +2 -2
  334. package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
  335. package/ReactCommon/cxxreact/Android.mk +2 -1
  336. package/ReactCommon/cxxreact/BUCK +1 -0
  337. package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
  338. package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
  339. package/ReactCommon/cxxreact/React-cxxreact.podspec +2 -1
  340. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  341. package/ReactCommon/hermes/React-hermes.podspec +1 -1
  342. package/ReactCommon/hermes/executor/Android.mk +4 -4
  343. package/ReactCommon/hermes/inspector/Android.mk +1 -2
  344. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  345. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  346. package/ReactCommon/jsi/Android.mk +1 -1
  347. package/ReactCommon/jsi/BUCK +0 -2
  348. package/ReactCommon/jsi/React-jsi.podspec +1 -1
  349. package/ReactCommon/jsiexecutor/Android.mk +2 -2
  350. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
  351. package/ReactCommon/logger/Android.mk +23 -0
  352. package/ReactCommon/logger/BUCK +43 -0
  353. package/ReactCommon/logger/React-logger.podspec +40 -0
  354. package/ReactCommon/logger/react_native_log.cpp +52 -0
  355. package/ReactCommon/logger/react_native_log.h +33 -0
  356. package/ReactCommon/react/nativemodule/core/Android.mk +2 -2
  357. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp +1 -0
  358. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.h +3 -2
  359. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +46 -1
  360. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +10 -0
  361. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +37 -1
  362. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +24 -22
  363. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -8
  364. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -5
  365. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +51 -29
  366. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +45 -34
  367. package/ReactCommon/react/nativemodule/samples/BUCK +2 -2
  368. package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +1 -1
  369. package/ReactCommon/react/renderer/animations/BUCK +1 -0
  370. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  371. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -27
  372. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  373. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +920 -1136
  374. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  375. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  376. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  377. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +9 -6
  378. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  379. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  380. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  381. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  382. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  383. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
  384. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +3 -1
  385. package/ReactCommon/react/renderer/attributedstring/conversions.h +162 -11
  386. package/ReactCommon/react/renderer/attributedstring/primitives.h +34 -1
  387. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +2 -2
  388. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
  389. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +10 -4
  390. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
  391. package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +2 -1
  392. package/ReactCommon/react/renderer/components/image/Android.mk +1 -1
  393. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +28 -9
  394. package/ReactCommon/react/renderer/components/image/ImageProps.h +5 -1
  395. package/ReactCommon/react/renderer/components/image/conversions.h +9 -2
  396. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +1 -1
  397. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +1 -1
  398. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +0 -1
  399. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +2 -1
  400. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
  401. package/ReactCommon/react/renderer/components/root/RootProps.cpp +12 -2
  402. package/ReactCommon/react/renderer/components/root/RootProps.h +6 -1
  403. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -1
  404. package/ReactCommon/react/renderer/components/root/RootShadowNode.h +2 -0
  405. package/ReactCommon/react/renderer/components/root/tests/RootShadowNodeTest.cpp +8 -4
  406. package/ReactCommon/react/renderer/components/safeareaview/BUCK +1 -1
  407. package/ReactCommon/react/renderer/components/scrollview/Android.mk +1 -1
  408. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +45 -4
  409. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +5 -1
  410. package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
  411. package/ReactCommon/react/renderer/components/text/Android.mk +1 -1
  412. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +32 -0
  413. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +5 -1
  414. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -16
  415. package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +10 -4
  416. package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
  417. package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -2
  418. package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -1
  419. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +0 -6
  420. package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -3
  421. package/ReactCommon/react/renderer/components/text/TextProps.h +5 -1
  422. package/ReactCommon/react/renderer/components/text/TextShadowNode.h +0 -6
  423. package/ReactCommon/react/renderer/components/textinput/Android.mk +1 -1
  424. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +58 -91
  425. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +10 -6
  426. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +46 -22
  427. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
  428. package/ReactCommon/react/renderer/components/textinput/iostextinput/conversions.h +15 -3
  429. package/ReactCommon/react/renderer/components/textinput/iostextinput/primitives.h +6 -0
  430. package/ReactCommon/react/renderer/components/textinput/iostextinput/propsConversions.h +63 -2
  431. package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +1 -1
  432. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +4 -2
  433. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -2
  434. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -0
  435. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +21 -0
  436. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +24 -1
  437. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +3 -0
  438. package/ReactCommon/react/renderer/components/view/Android.mk +3 -2
  439. package/ReactCommon/react/renderer/components/view/BUCK +1 -0
  440. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  441. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -22
  442. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +62 -14
  443. package/ReactCommon/react/renderer/components/view/ViewProps.h +7 -1
  444. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -10
  445. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +5 -4
  446. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  447. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +58 -33
  448. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +2 -8
  449. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  450. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +2 -0
  451. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +62 -8
  452. package/ReactCommon/react/renderer/components/view/conversions.h +57 -14
  453. package/ReactCommon/react/renderer/components/view/propsConversions.h +163 -28
  454. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +7 -2
  455. package/ReactCommon/react/renderer/core/Android.mk +1 -1
  456. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +5 -2
  457. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +19 -21
  458. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +4 -0
  459. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +12 -31
  460. package/ReactCommon/react/renderer/core/EventDispatcher.h +1 -4
  461. package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +0 -6
  462. package/ReactCommon/react/renderer/core/Props.cpp +10 -2
  463. package/ReactCommon/react/renderer/core/Props.h +6 -1
  464. package/ReactCommon/react/renderer/core/PropsParserContext.h +29 -0
  465. package/ReactCommon/react/renderer/core/RawProps.cpp +2 -1
  466. package/ReactCommon/react/renderer/core/RawProps.h +3 -1
  467. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  468. package/ReactCommon/react/renderer/core/RawPropsParser.h +11 -2
  469. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  470. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  471. package/ReactCommon/react/renderer/core/ShadowNode.h +4 -0
  472. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  473. package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +11 -1
  474. package/ReactCommon/react/renderer/core/propsConversions.h +18 -8
  475. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +16 -4
  476. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +85 -20
  477. package/ReactCommon/react/renderer/core/tests/TestComponent.h +6 -2
  478. package/ReactCommon/react/renderer/graphics/Android.mk +5 -2
  479. package/ReactCommon/react/renderer/graphics/BUCK +12 -1
  480. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +2 -1
  481. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  482. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  483. package/ReactCommon/react/renderer/graphics/conversions.h +34 -19
  484. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +67 -0
  485. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
  486. package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +42 -1
  487. package/ReactCommon/react/renderer/graphics/platform/ios/PlatformColorParser.h +34 -0
  488. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.h +12 -0
  489. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.mm +206 -0
  490. package/ReactCommon/react/renderer/imagemanager/BUCK +1 -1
  491. package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
  492. package/ReactCommon/react/renderer/mapbuffer/BUCK +2 -2
  493. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  494. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  495. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +6 -2
  496. package/ReactCommon/react/renderer/mounting/ShadowTree.h +3 -1
  497. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  498. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  499. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +12 -1
  500. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +8 -1
  501. package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +10 -3
  502. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  503. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -0
  504. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +10 -4
  505. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +9 -2
  506. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -2
  507. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  508. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +30 -0
  509. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +34 -0
  510. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  511. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -2
  512. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +11 -5
  513. package/ReactCommon/react/renderer/runtimescheduler/Task.h +5 -3
  514. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  515. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +34 -0
  516. package/ReactCommon/react/renderer/{core/Constants.h → scheduler/InspectorData.h} +9 -8
  517. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +44 -29
  518. package/ReactCommon/react/renderer/scheduler/Scheduler.h +14 -0
  519. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +49 -29
  520. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +12 -4
  521. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +1 -0
  522. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  523. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +22 -0
  524. package/ReactCommon/react/renderer/timeline/BUCK +6 -6
  525. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +34 -30
  526. package/ReactCommon/react/renderer/uimanager/UIManager.h +6 -3
  527. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  528. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +101 -108
  529. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +4 -7
  530. package/ReactCommon/react/test_utils/BUCK +3 -0
  531. package/ReactCommon/react/test_utils/MockSurfaceHandler.h +25 -0
  532. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +18 -4
  533. package/ReactCommon/react/utils/Android.mk +3 -1
  534. package/ReactCommon/react/utils/BUCK +1 -0
  535. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  536. package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
  537. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
  538. package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +12 -0
  539. package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar → 0.0.0-18697adec/react-native-0.0.0-18697adec.aar} +0 -0
  540. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.md5 +1 -0
  541. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha1 +1 -0
  542. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha256 +1 -0
  543. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha512 +1 -0
  544. package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module → 0.0.0-18697adec/react-native-0.0.0-18697adec.module} +30 -17
  545. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.md5 +1 -0
  546. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha1 +1 -0
  547. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha256 +1 -0
  548. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha512 +1 -0
  549. package/android/com/facebook/react/react-native/{0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom → 0.0.0-18697adec/react-native-0.0.0-18697adec.pom} +8 -2
  550. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.md5 +1 -0
  551. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha1 +1 -0
  552. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha256 +1 -0
  553. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha512 +1 -0
  554. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  555. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  556. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  557. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  558. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  559. package/flow/HermesInternalType.js +114 -0
  560. package/flow/global.js +68 -0
  561. package/index.js +37 -24
  562. package/jest/renderer.js +3 -7
  563. package/jest/setup.js +2 -1
  564. package/package.json +55 -16
  565. package/react.gradle +19 -13
  566. package/scripts/generate-specs-cli.js +20 -2
  567. package/scripts/ios-configure-glog.sh +4 -0
  568. package/scripts/react-native-xcode.sh +1 -1
  569. package/scripts/react_native_pods.rb +195 -38
  570. package/template/_flowconfig +1 -1
  571. package/template/android/app/build.gradle +2 -2
  572. package/template/android/build.gradle +1 -2
  573. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  574. package/template/android/gradle.properties +1 -1
  575. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +2 -0
  576. package/template/ios/Podfile +1 -0
  577. package/template/package.json +3 -4
  578. package/third-party-podspecs/RCT-Folly.podspec +6 -3
  579. package/Libraries/BUCK +0 -26
  580. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  581. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  582. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  583. package/Libraries/Components/StaticContainer.react.js +0 -51
  584. package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -38
  585. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  586. package/Libraries/Interaction/InteractionMixin.js +0 -54
  587. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  588. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  589. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  590. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  591. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  592. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  593. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  594. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  595. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  596. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  597. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  598. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  599. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  600. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  601. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  602. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.md5 +0 -1
  603. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha1 +0 -1
  604. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha256 +0 -1
  605. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.aar.sha512 +0 -1
  606. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.md5 +0 -1
  607. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha1 +0 -1
  608. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha256 +0 -1
  609. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.module.sha512 +0 -1
  610. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.md5 +0 -1
  611. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha1 +0 -1
  612. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha256 +0 -1
  613. package/android/com/facebook/react/react-native/0.0.0-16bb2ae4f/react-native-0.0.0-16bb2ae4f.pom.sha512 +0 -1
  614. package/scripts/generate-specs.sh +0 -100
  615. package/template/_editorconfig +0 -3
  616. package/template/_gitattributes +0 -3
@@ -86,10 +86,9 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
86
86
  // some other part of the system scrolls scroll view.
87
87
  BOOL _isUserTriggeredScrolling;
88
88
 
89
- BOOL _isOnDemandViewMountingEnabled;
90
-
91
89
  CGPoint _contentOffsetWhenClipped;
92
90
  NSMutableArray<UIView<RCTComponentViewProtocol> *> *_childComponentViews;
91
+ BOOL _subviewClippingEnabled;
93
92
  }
94
93
 
95
94
  + (RCTScrollViewComponentView *_Nullable)findScrollViewComponentViewForView:(UIView *)view
@@ -106,7 +105,6 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
106
105
  static const auto defaultProps = std::make_shared<const ScrollViewProps>();
107
106
  _props = defaultProps;
108
107
 
109
- _isOnDemandViewMountingEnabled = RCTExperimentGetOnDemandViewMounting();
110
108
  _childComponentViews = [[NSMutableArray alloc] init];
111
109
 
112
110
  _scrollView = [[RCTEnhancedScrollView alloc] initWithFrame:self.bounds];
@@ -115,6 +113,7 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
115
113
  ((RCTEnhancedScrollView *)_scrollView).overridingDelegate = self;
116
114
  _isUserTriggeredScrolling = NO;
117
115
  [self addSubview:_scrollView];
116
+ _subviewClippingEnabled = RCTGetRemoveClippedSubviewsEnabled();
118
117
 
119
118
  _containerView = [[UIView alloc] initWithFrame:CGRectZero];
120
119
  [_scrollView addSubview:_containerView];
@@ -134,6 +133,15 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
134
133
  [self.scrollViewDelegateSplitter removeAllDelegates];
135
134
  }
136
135
 
136
+ - (void)layoutSubviews
137
+ {
138
+ [super layoutSubviews];
139
+
140
+ if (_subviewClippingEnabled) {
141
+ [self _remountChildren];
142
+ }
143
+ }
144
+
137
145
  - (RCTGenericDelegateSplitter<id<UIScrollViewDelegate>> *)scrollViewDelegateSplitter
138
146
  {
139
147
  return ((RCTEnhancedScrollView *)_scrollView).delegateSplitter;
@@ -327,27 +335,25 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
327
335
 
328
336
  - (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
329
337
  {
330
- if (_isOnDemandViewMountingEnabled) {
331
- [_childComponentViews insertObject:childComponentView atIndex:index];
332
- } else {
338
+ if (_subviewClippingEnabled) {
333
339
  [_containerView insertSubview:childComponentView atIndex:index];
340
+ } else {
341
+ [_childComponentViews insertObject:childComponentView atIndex:index];
334
342
  }
335
343
  }
336
344
 
337
345
  - (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
338
346
  {
339
- if (_isOnDemandViewMountingEnabled) {
347
+ if (!_subviewClippingEnabled) {
340
348
  RCTAssert(
341
349
  [_childComponentViews objectAtIndex:index] == childComponentView,
342
350
  @"Attempt to unmount improperly mounted component view.");
343
351
  [_childComponentViews removeObjectAtIndex:index];
344
- // In addition to removing a view from `_childComponentViews`,
345
- // we have to unmount views immediately to not mess with recycling.
346
- [childComponentView removeFromSuperview];
347
- } else {
348
- RCTAssert(childComponentView.superview == _containerView, @"Attempt to unmount improperly mounted component view.");
349
- [childComponentView removeFromSuperview];
350
352
  }
353
+
354
+ // In addition to removing a view from `_childComponentViews`,
355
+ // we have to unmount views immediately to not mess with recycling.
356
+ [childComponentView removeFromSuperview];
351
357
  }
352
358
 
353
359
  /*
@@ -607,10 +613,6 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
607
613
 
608
614
  - (void)_remountChildrenIfNeeded
609
615
  {
610
- if (!_isOnDemandViewMountingEnabled) {
611
- return;
612
- }
613
-
614
616
  CGPoint contentOffset = _scrollView.contentOffset;
615
617
 
616
618
  if (std::abs(_contentOffsetWhenClipped.x - contentOffset.x) < kClippingLeeway &&
@@ -625,68 +627,68 @@ static void RCTSendPaperScrollEvent_DEPRECATED(UIScrollView *scrollView, NSInteg
625
627
 
626
628
  - (void)_remountChildren
627
629
  {
628
- if (!_isOnDemandViewMountingEnabled) {
629
- return;
630
- }
631
-
632
- CGRect visibleFrame = [_scrollView convertRect:_scrollView.bounds toView:_containerView];
633
- visibleFrame = CGRectInset(visibleFrame, -kClippingLeeway, -kClippingLeeway);
634
-
635
- // `zoomScale` is negative in RTL. Absolute value is needed.
636
- CGFloat scale = 1.0 / std::abs(_scrollView.zoomScale);
637
- visibleFrame.origin.x *= scale;
638
- visibleFrame.origin.y *= scale;
639
- visibleFrame.size.width *= scale;
640
- visibleFrame.size.height *= scale;
641
-
630
+ if (_subviewClippingEnabled) {
631
+ [_scrollView updateClippedSubviewsWithClipRect:CGRectInset(_scrollView.bounds, -kClippingLeeway, -kClippingLeeway)
632
+ relativeToView:_scrollView];
633
+ } else {
634
+ CGRect visibleFrame = [_scrollView convertRect:_scrollView.bounds toView:_containerView];
635
+ visibleFrame = CGRectInset(visibleFrame, -kClippingLeeway, -kClippingLeeway);
636
+
637
+ // `zoomScale` is negative in RTL. Absolute value is needed.
638
+ CGFloat scale = 1.0 / std::abs(_scrollView.zoomScale);
639
+ visibleFrame.origin.x *= scale;
640
+ visibleFrame.origin.y *= scale;
641
+ visibleFrame.size.width *= scale;
642
+ visibleFrame.size.height *= scale;
642
643
  #ifndef NDEBUG
643
- NSMutableArray<UIView<RCTComponentViewProtocol> *> *expectedSubviews = [NSMutableArray new];
644
+ NSMutableArray<UIView<RCTComponentViewProtocol> *> *expectedSubviews = [NSMutableArray new];
644
645
  #endif
645
646
 
646
- NSInteger mountedIndex = 0;
647
- for (UIView *componentView in _childComponentViews) {
648
- BOOL shouldBeMounted = YES;
649
- BOOL isMounted = componentView.superview != nil;
647
+ NSInteger mountedIndex = 0;
648
+ for (UIView *componentView in _childComponentViews) {
649
+ BOOL shouldBeMounted = YES;
650
+ BOOL isMounted = componentView.superview != nil;
650
651
 
651
- // It's simpler and faster to not mess with views that are not `RCTViewComponentView` subclasses.
652
- if ([componentView isKindOfClass:[RCTViewComponentView class]]) {
653
- RCTViewComponentView *viewComponentView = (RCTViewComponentView *)componentView;
654
- auto layoutMetrics = viewComponentView->_layoutMetrics;
652
+ // It's simpler and faster to not mess with views that are not `RCTViewComponentView` subclasses.
653
+ if ([componentView isKindOfClass:[RCTViewComponentView class]]) {
654
+ RCTViewComponentView *viewComponentView = (RCTViewComponentView *)componentView;
655
+ auto layoutMetrics = viewComponentView->_layoutMetrics;
655
656
 
656
- if (layoutMetrics.overflowInset == EdgeInsets{}) {
657
- shouldBeMounted = CGRectIntersectsRect(visibleFrame, componentView.frame);
657
+ if (layoutMetrics.overflowInset == EdgeInsets{}) {
658
+ shouldBeMounted = CGRectIntersectsRect(visibleFrame, componentView.frame);
659
+ }
658
660
  }
659
- }
660
661
 
661
- if (shouldBeMounted != isMounted) {
662
- if (shouldBeMounted) {
663
- [_containerView insertSubview:componentView atIndex:mountedIndex];
664
- } else {
665
- [componentView removeFromSuperview];
662
+ if (shouldBeMounted != isMounted) {
663
+ if (shouldBeMounted) {
664
+ [_containerView insertSubview:componentView atIndex:mountedIndex];
665
+ } else {
666
+ [componentView removeFromSuperview];
667
+ }
666
668
  }
667
- }
668
669
 
669
- if (shouldBeMounted) {
670
- mountedIndex++;
671
- }
670
+ if (shouldBeMounted) {
671
+ mountedIndex++;
672
+ }
672
673
 
673
674
  #ifndef NDEBUG
674
- if (shouldBeMounted) {
675
- [expectedSubviews addObject:componentView];
676
- }
675
+ if (shouldBeMounted) {
676
+ [expectedSubviews addObject:componentView];
677
+ }
677
678
  #endif
678
- }
679
+ }
679
680
 
680
681
  #ifndef NDEBUG
681
- RCTAssert(
682
- _containerView.subviews.count == expectedSubviews.count,
683
- @"-[RCTScrollViewComponentView _remountChildren]: Inconsistency detected.");
684
- for (NSInteger i = 0; i < expectedSubviews.count; i++) {
685
682
  RCTAssert(
686
- [_containerView.subviews objectAtIndex:i] == [expectedSubviews objectAtIndex:i],
683
+ _containerView.subviews.count == expectedSubviews.count,
687
684
  @"-[RCTScrollViewComponentView _remountChildren]: Inconsistency detected.");
688
- }
685
+ for (NSInteger i = 0; i < expectedSubviews.count; i++) {
686
+ RCTAssert(
687
+ [_containerView.subviews objectAtIndex:i] == [expectedSubviews objectAtIndex:i],
688
+ @"-[RCTScrollViewComponentView _remountChildren]: Inconsistency detected.");
689
+ }
689
690
  #endif
691
+ }
690
692
  }
691
693
 
692
694
  #pragma mark - RCTScrollableProtocol
@@ -89,6 +89,7 @@ using namespace facebook::react;
89
89
  }
90
90
  _didMoveToWindow = YES;
91
91
  }
92
+ [self _restoreTextSelection];
92
93
  }
93
94
 
94
95
  #pragma mark - RCTViewComponentView overrides
@@ -208,7 +209,6 @@ using namespace facebook::react;
208
209
  if (newTextInputProps.inputAccessoryViewID != oldTextInputProps.inputAccessoryViewID) {
209
210
  _backedTextInputView.inputAccessoryViewID = RCTNSStringFromString(newTextInputProps.inputAccessoryViewID);
210
211
  }
211
-
212
212
  [super updateProps:props oldProps:oldProps];
213
213
 
214
214
  [self setDefaultInputAccessoryView];
@@ -526,19 +526,39 @@ using namespace facebook::react;
526
526
  return AttributedString::Range{(int)start, (int)(end - start)};
527
527
  }
528
528
 
529
- - (void)_setAttributedString:(NSAttributedString *)attributedString
529
+ - (void)_restoreTextSelection
530
530
  {
531
- UITextRange *selectedRange = [_backedTextInputView selectedTextRange];
532
- if (![self _textOf:attributedString equals:_backedTextInputView.attributedText]) {
533
- _backedTextInputView.attributedText = attributedString;
531
+ const auto selection = std::dynamic_pointer_cast<TextInputProps const>(_props)->selection.get_pointer();
532
+ if (selection == nullptr) {
533
+ return;
534
534
  }
535
- if (_lastStringStateWasUpdatedWith.length == attributedString.length) {
536
- // Calling `[_backedTextInputView setAttributedText]` moves caret
537
- // to the end of text input field. This cancels any selection as well
538
- // as position in the text input field. In case the length of string
539
- // doesn't change, selection and caret position is maintained.
540
- [_backedTextInputView setSelectedTextRange:selectedRange notifyDelegate:NO];
535
+ auto start = [_backedTextInputView positionFromPosition:_backedTextInputView.beginningOfDocument
536
+ offset:selection->start];
537
+ auto end = [_backedTextInputView positionFromPosition:_backedTextInputView.beginningOfDocument offset:selection->end];
538
+ auto range = [_backedTextInputView textRangeFromPosition:start toPosition:end];
539
+ [_backedTextInputView setSelectedTextRange:range notifyDelegate:YES];
540
+ }
541
+
542
+ - (void)_setAttributedString:(NSAttributedString *)attributedString
543
+ {
544
+ if ([self _textOf:attributedString equals:_backedTextInputView.attributedText]) {
545
+ return;
541
546
  }
547
+ UITextRange *selectedRange = _backedTextInputView.selectedTextRange;
548
+ NSInteger oldTextLength = _backedTextInputView.attributedText.string.length;
549
+ _backedTextInputView.attributedText = attributedString;
550
+ if (selectedRange.empty) {
551
+ // Maintaining a cursor position relative to the end of the old text.
552
+ NSInteger offsetStart = [_backedTextInputView offsetFromPosition:_backedTextInputView.beginningOfDocument
553
+ toPosition:selectedRange.start];
554
+ NSInteger offsetFromEnd = oldTextLength - offsetStart;
555
+ NSInteger newOffset = attributedString.string.length - offsetFromEnd;
556
+ UITextPosition *position = [_backedTextInputView positionFromPosition:_backedTextInputView.beginningOfDocument
557
+ offset:newOffset];
558
+ [_backedTextInputView setSelectedTextRange:[_backedTextInputView textRangeFromPosition:position toPosition:position]
559
+ notifyDelegate:YES];
560
+ }
561
+ [self _restoreTextSelection];
542
562
  _lastStringStateWasUpdatedWith = attributedString;
543
563
  }
544
564
 
@@ -69,6 +69,12 @@ NS_ASSUME_NONNULL_BEGIN
69
69
  */
70
70
  @property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets;
71
71
 
72
+ /**
73
+ * Flag indicating if subview clipping is enabled for the view.
74
+ * If subview clipping is enabled, subviews that are outside of the viewport may be removed from the view hierachy.
75
+ */
76
+ @property (nonatomic, readonly) BOOL removeClippedSubviews;
77
+
72
78
  /**
73
79
  * Enforcing `call super` semantic for overridden methods from `RCTComponentViewProtocol`.
74
80
  * The methods update the instance variables.
@@ -24,14 +24,19 @@ using namespace facebook::react;
24
24
  CALayer *_borderLayer;
25
25
  BOOL _needsInvalidateLayer;
26
26
  BOOL _isJSResponder;
27
+ BOOL _removeClippedSubviews;
28
+ NSMutableArray<UIView *> *_reactSubviews;
27
29
  NSSet<NSString *> *_Nullable _propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN;
28
30
  }
29
31
 
32
+ @synthesize removeClippedSubviews = _removeClippedSubviews;
33
+
30
34
  - (instancetype)initWithFrame:(CGRect)frame
31
35
  {
32
36
  if (self = [super initWithFrame:frame]) {
33
37
  static auto const defaultProps = std::make_shared<ViewProps const>();
34
38
  _props = defaultProps;
39
+ _reactSubviews = [NSMutableArray new];
35
40
  self.multipleTouchEnabled = YES;
36
41
  }
37
42
  return self;
@@ -86,6 +91,81 @@ using namespace facebook::react;
86
91
  return concreteComponentDescriptorProvider<ViewComponentDescriptor>();
87
92
  }
88
93
 
94
+ - (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
95
+ {
96
+ RCTAssert(
97
+ childComponentView.superview == nil,
98
+ @"Attempt to mount already mounted component view. (parent: %@, child: %@, index: %@, existing parent: %@)",
99
+ self,
100
+ childComponentView,
101
+ @(index),
102
+ @([childComponentView.superview tag]));
103
+
104
+ if (_removeClippedSubviews) {
105
+ [_reactSubviews insertObject:childComponentView atIndex:index];
106
+ } else {
107
+ [self insertSubview:childComponentView atIndex:index];
108
+ }
109
+ }
110
+
111
+ - (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
112
+ {
113
+ if (_removeClippedSubviews) {
114
+ [_reactSubviews removeObjectAtIndex:index];
115
+ } else {
116
+ RCTAssert(
117
+ childComponentView.superview == self,
118
+ @"Attempt to unmount a view which is mounted inside different view. (parent: %@, child: %@, index: %@)",
119
+ self,
120
+ childComponentView,
121
+ @(index));
122
+ RCTAssert(
123
+ (self.subviews.count > index) && [self.subviews objectAtIndex:index] == childComponentView,
124
+ @"Attempt to unmount a view which has a different index. (parent: %@, child: %@, index: %@, actual index: %@, tag at index: %@)",
125
+ self,
126
+ childComponentView,
127
+ @(index),
128
+ @([self.subviews indexOfObject:childComponentView]),
129
+ @([[self.subviews objectAtIndex:index] tag]));
130
+ }
131
+
132
+ [childComponentView removeFromSuperview];
133
+ }
134
+
135
+ - (void)updateClippedSubviewsWithClipRect:(CGRect)clipRect relativeToView:(UIView *)clipView
136
+ {
137
+ if (!_removeClippedSubviews) {
138
+ // Use default behavior if unmounting is disabled
139
+ return [super updateClippedSubviewsWithClipRect:clipRect relativeToView:clipView];
140
+ }
141
+
142
+ if (_reactSubviews.count == 0) {
143
+ // Do nothing if we have no subviews
144
+ return;
145
+ }
146
+
147
+ if (CGSizeEqualToSize(self.bounds.size, CGSizeZero)) {
148
+ // Do nothing if layout hasn't happened yet
149
+ return;
150
+ }
151
+
152
+ // Convert clipping rect to local coordinates
153
+ clipRect = [clipView convertRect:clipRect toView:self];
154
+
155
+ // Mount / unmount views
156
+ for (UIView *view in _reactSubviews) {
157
+ if (CGRectIntersectsRect(clipRect, view.frame)) {
158
+ // View is at least partially visible, so remount it if unmounted
159
+ [self addSubview:view];
160
+ // View is visible, update clipped subviews
161
+ [view updateClippedSubviewsWithClipRect:clipRect relativeToView:self];
162
+ } else if (view.superview) {
163
+ // View is completely outside the clipRect, so unmount it
164
+ [view removeFromSuperview];
165
+ }
166
+ }
167
+ }
168
+
89
169
  - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
90
170
  {
91
171
  RCTAssert(props, @"`props` must not be `null`.");
@@ -113,6 +193,14 @@ using namespace facebook::react;
113
193
  needsInvalidateLayer = YES;
114
194
  }
115
195
 
196
+ if (RCTGetRemoveClippedSubviewsEnabled() &&
197
+ oldViewProps.removeClippedSubviews != newViewProps.removeClippedSubviews) {
198
+ _removeClippedSubviews = newViewProps.removeClippedSubviews;
199
+ if (_removeClippedSubviews && self.subviews.count > 0) {
200
+ _reactSubviews = [NSMutableArray arrayWithArray:self.subviews];
201
+ }
202
+ }
203
+
116
204
  // `backgroundColor`
117
205
  if (oldViewProps.backgroundColor != newViewProps.backgroundColor) {
118
206
  self.backgroundColor = RCTUIColorFromSharedColor(newViewProps.backgroundColor);
@@ -243,11 +331,25 @@ using namespace facebook::react;
243
331
 
244
332
  // `accessibilityIgnoresInvertColors`
245
333
  if (oldViewProps.accessibilityIgnoresInvertColors != newViewProps.accessibilityIgnoresInvertColors) {
246
- #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
247
- if (@available(iOS 11.0, *)) {
248
- self.accessibilityIgnoresInvertColors = newViewProps.accessibilityIgnoresInvertColors;
334
+ self.accessibilityIgnoresInvertColors = newViewProps.accessibilityIgnoresInvertColors;
335
+ }
336
+
337
+ // `accessibilityValue`
338
+ if (oldViewProps.accessibilityValue != newViewProps.accessibilityValue) {
339
+ if (newViewProps.accessibilityValue.text.hasValue()) {
340
+ self.accessibilityElement.accessibilityValue =
341
+ RCTNSStringFromStringNilIfEmpty(newViewProps.accessibilityValue.text.value());
342
+ } else if (
343
+ newViewProps.accessibilityValue.now.hasValue() && newViewProps.accessibilityValue.min.hasValue() &&
344
+ newViewProps.accessibilityValue.max.hasValue()) {
345
+ CGFloat val = (CGFloat)(newViewProps.accessibilityValue.now.value()) /
346
+ (newViewProps.accessibilityValue.max.value() - newViewProps.accessibilityValue.min.value());
347
+ self.accessibilityElement.accessibilityValue =
348
+ [NSNumberFormatter localizedStringFromNumber:@(val) numberStyle:NSNumberFormatterPercentStyle];
349
+ ;
350
+ } else {
351
+ self.accessibilityElement.accessibilityValue = nil;
249
352
  }
250
- #endif
251
353
  }
252
354
 
253
355
  // `testId`
@@ -322,6 +424,8 @@ using namespace facebook::react;
322
424
  _propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN = nil;
323
425
  _eventEmitter.reset();
324
426
  _isJSResponder = NO;
427
+ _removeClippedSubviews = NO;
428
+ _reactSubviews = [NSMutableArray new];
325
429
  }
326
430
 
327
431
  - (void)setPropKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN:(NSSet<NSString *> *_Nullable)props
@@ -17,6 +17,7 @@
17
17
  #import <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
18
18
  #import <react/renderer/componentregistry/componentNameByReactViewName.h>
19
19
  #import <react/renderer/componentregistry/native/NativeComponentRegistryBinding.h>
20
+ #import <react/renderer/core/PropsParserContext.h>
20
21
  #import <react/renderer/core/ReactPrimitives.h>
21
22
 
22
23
  #ifdef RN_DISABLE_OSS_PLUGIN_HEADER
@@ -13,6 +13,7 @@
13
13
  #import <react/renderer/core/ReactPrimitives.h>
14
14
  #import <react/renderer/mounting/MountingCoordinator.h>
15
15
  #import <react/renderer/mounting/ShadowView.h>
16
+ #import <react/utils/ContextContainer.h>
16
17
 
17
18
  NS_ASSUME_NONNULL_BEGIN
18
19
 
@@ -26,6 +27,8 @@ NS_ASSUME_NONNULL_BEGIN
26
27
  @property (nonatomic, weak) id<RCTMountingManagerDelegate> delegate;
27
28
  @property (nonatomic, strong) RCTComponentViewRegistry *componentViewRegistry;
28
29
 
30
+ - (void)setContextContainer:(facebook::react::ContextContainer::Shared)contextContainer;
31
+
29
32
  /**
30
33
  * Designates the view as a rendering viewport of a React Native surface.
31
34
  * The provided view must not have any subviews, and the caller is not supposed to interact with the view hierarchy
@@ -10,6 +10,7 @@
10
10
  #import <better/map.h>
11
11
 
12
12
  #import <React/RCTAssert.h>
13
+ #import <React/RCTComponent.h>
13
14
  #import <React/RCTFollyConvert.h>
14
15
  #import <React/RCTLog.h>
15
16
  #import <React/RCTUtils.h>
@@ -26,6 +27,18 @@
26
27
 
27
28
  using namespace facebook::react;
28
29
 
30
+ static SurfaceId RCTSurfaceIdForView(UIView *view)
31
+ {
32
+ do {
33
+ if (RCTIsReactRootView(@(view.tag))) {
34
+ return view.tag;
35
+ }
36
+ view = view.superview;
37
+ } while (view != nil);
38
+
39
+ return -1;
40
+ }
41
+
29
42
  static void RCTPerformMountInstructions(
30
43
  ShadowViewMutationList const &mutations,
31
44
  RCTComponentViewRegistry *registry,
@@ -136,6 +149,7 @@ static void RCTPerformMountInstructions(
136
149
  RCTMountingTransactionObserverCoordinator _observerCoordinator;
137
150
  BOOL _transactionInFlight;
138
151
  BOOL _followUpTransactionRequired;
152
+ ContextContainer::Shared _contextContainer;
139
153
  }
140
154
 
141
155
  - (instancetype)init
@@ -147,6 +161,11 @@ static void RCTPerformMountInstructions(
147
161
  return self;
148
162
  }
149
163
 
164
+ - (void)setContextContainer:(ContextContainer::Shared)contextContainer
165
+ {
166
+ _contextContainer = contextContainer;
167
+ }
168
+
150
169
  - (void)attachSurfaceToView:(UIView *)view surfaceId:(SurfaceId)surfaceId
151
170
  {
152
171
  RCTAssertMainQueue();
@@ -276,8 +295,10 @@ static void RCTPerformMountInstructions(
276
295
  {
277
296
  RCTAssertMainQueue();
278
297
  UIView<RCTComponentViewProtocol> *componentView = [_componentViewRegistry findComponentViewWithTag:reactTag];
298
+ SurfaceId surfaceId = RCTSurfaceIdForView(componentView);
279
299
  SharedProps oldProps = [componentView props];
280
- SharedProps newProps = componentDescriptor.cloneProps(oldProps, RawProps(convertIdToFollyDynamic(props)));
300
+ SharedProps newProps = componentDescriptor.cloneProps(
301
+ PropsParserContext{surfaceId, *_contextContainer.get()}, oldProps, RawProps(convertIdToFollyDynamic(props)));
281
302
 
282
303
  NSSet<NSString *> *propKeys = componentView.propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN ?: [NSSet new];
283
304
  propKeys = [propKeys setByAddingObjectsFromArray:props.allKeys];
@@ -290,11 +311,9 @@ static void RCTPerformMountInstructions(
290
311
  if (props[@"transform"] &&
291
312
  !CATransform3DEqualToTransform(
292
313
  RCTCATransform3DFromTransformMatrix(newViewProps.transform), componentView.layer.transform)) {
293
- RCTLogWarn(@"transform was not applied during [RCTViewComponentView updateProps:oldProps:]");
294
314
  componentView.layer.transform = RCTCATransform3DFromTransformMatrix(newViewProps.transform);
295
315
  }
296
316
  if (props[@"opacity"] && componentView.layer.opacity != (float)newViewProps.opacity) {
297
- RCTLogWarn(@"opacity was not applied during [RCTViewComponentView updateProps:oldProps:]");
298
317
  componentView.layer.opacity = newViewProps.opacity;
299
318
  }
300
319
  }
@@ -44,6 +44,8 @@ NS_ASSUME_NONNULL_BEGIN
44
44
  - (void)setPropKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN:(nullable NSSet<NSString *> *)props;
45
45
  - (nullable NSSet<NSString *> *)propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN;
46
46
 
47
+ - (void)updateClippedSubviewsWithClipRect:(CGRect)clipRect relativeToView:(UIView *)clipView;
48
+
47
49
  @end
48
50
 
49
51
  NS_ASSUME_NONNULL_END
@@ -156,4 +156,16 @@ using namespace facebook::react;
156
156
  return nil;
157
157
  }
158
158
 
159
+ - (void)updateClippedSubviewsWithClipRect:(CGRect)clipRect relativeToView:(UIView *)clipView
160
+ {
161
+ clipRect = [clipView convertRect:clipRect toView:self];
162
+
163
+ // Normal views don't support unmounting, so all
164
+ // this does is forward message to our subviews,
165
+ // in case any of those do support it
166
+ for (UIView *subview in self.subviews) {
167
+ [subview updateClippedSubviewsWithClipRect:clipRect relativeToView:self];
168
+ }
169
+ }
170
+
159
171
  @end
@@ -141,6 +141,9 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
141
141
  if ((accessibilityTraits & AccessibilityTraits::Switch) != AccessibilityTraits::None) {
142
142
  result |= AccessibilityTraitSwitch;
143
143
  }
144
+ if ((accessibilityTraits & AccessibilityTraits::TabBar) != AccessibilityTraits::None) {
145
+ result |= UIAccessibilityTraitTabBar;
146
+ }
144
147
  return result;
145
148
  };
146
149
 
@@ -110,7 +110,6 @@ class LayoutAnimationDelegateProxy : public LayoutAnimationStatusDelegate, publi
110
110
  std::shared_ptr<SchedulerDelegateProxy> _delegateProxy;
111
111
  std::shared_ptr<LayoutAnimationDelegateProxy> _layoutAnimationDelegateProxy;
112
112
  RunLoopObserver::Unique _uiRunLoopObserver;
113
- BOOL _layoutAnimationsEnabled;
114
113
  }
115
114
 
116
115
  - (instancetype)initWithToolbox:(SchedulerToolbox)toolbox
@@ -118,14 +117,22 @@ class LayoutAnimationDelegateProxy : public LayoutAnimationStatusDelegate, publi
118
117
  if (self = [super init]) {
119
118
  auto reactNativeConfig =
120
119
  toolbox.contextContainer->at<std::shared_ptr<const ReactNativeConfig>>("ReactNativeConfig");
121
- _layoutAnimationsEnabled = reactNativeConfig->getBool("react_fabric:enabled_layout_animations_ios");
122
120
 
123
121
  _delegateProxy = std::make_shared<SchedulerDelegateProxy>((__bridge void *)self);
124
122
 
125
- if (_layoutAnimationsEnabled) {
123
+ if (reactNativeConfig->getBool("react_fabric:enabled_layout_animations_ios")) {
126
124
  _layoutAnimationDelegateProxy = std::make_shared<LayoutAnimationDelegateProxy>((__bridge void *)self);
127
- _animationDriver =
128
- std::make_shared<LayoutAnimationDriver>(toolbox.runtimeExecutor, _layoutAnimationDelegateProxy.get());
125
+ _animationDriver = std::make_shared<LayoutAnimationDriver>(
126
+ toolbox.runtimeExecutor, toolbox.contextContainer, _layoutAnimationDelegateProxy.get());
127
+ if (reactNativeConfig->getBool("react_fabric:enabled_skip_invalidated_key_frames_ios")) {
128
+ _animationDriver->enableSkipInvalidatedKeyFrames();
129
+ }
130
+ if (reactNativeConfig->getBool("react_fabric:enable_crash_on_missing_component_descriptor")) {
131
+ _animationDriver->enableCrashOnMissingComponentDescriptor();
132
+ }
133
+ if (reactNativeConfig->getBool("react_fabric:enable_simulate_image_props_memory_access")) {
134
+ _animationDriver->enableSimulateImagePropsMemoryAccess();
135
+ }
129
136
  _uiRunLoopObserver =
130
137
  toolbox.mainRunLoopObserverFactory(RunLoopObserver::Activity::BeforeWaiting, _layoutAnimationDelegateProxy);
131
138
  _uiRunLoopObserver->setDelegate(_layoutAnimationDelegateProxy.get());
@@ -27,9 +27,6 @@
27
27
 
28
28
  #import <react/config/ReactNativeConfig.h>
29
29
  #import <react/renderer/componentregistry/ComponentDescriptorFactory.h>
30
- #import <react/renderer/components/root/RootShadowNode.h>
31
- #import <react/renderer/core/LayoutConstraints.h>
32
- #import <react/renderer/core/LayoutContext.h>
33
30
  #import <react/renderer/runtimescheduler/RuntimeScheduler.h>
34
31
  #import <react/renderer/scheduler/AsynchronousEventBeat.h>
35
32
  #import <react/renderer/scheduler/SchedulerToolbox.h>
@@ -96,6 +93,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor()
96
93
 
97
94
  _surfaceRegistry = [[RCTSurfaceRegistry alloc] init];
98
95
  _mountingManager = [[RCTMountingManager alloc] init];
96
+ _mountingManager.contextContainer = contextContainer;
99
97
  _mountingManager.delegate = self;
100
98
 
101
99
  _observers = [NSMutableArray array];
@@ -127,6 +125,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor()
127
125
  {
128
126
  std::lock_guard<std::mutex> lock(_schedulerLifeCycleMutex);
129
127
  _contextContainer = contextContainer;
128
+ _mountingManager.contextContainer = contextContainer;
130
129
  }
131
130
 
132
131
  - (RuntimeExecutor)runtimeExecutor
@@ -252,14 +251,14 @@ static BackgroundExecutor RCTGetBackgroundExecutor()
252
251
  {
253
252
  auto reactNativeConfig = _contextContainer->at<std::shared_ptr<ReactNativeConfig const>>("ReactNativeConfig");
254
253
 
255
- if (reactNativeConfig && reactNativeConfig->getBool("react_fabric:scrollview_on_demand_mounting_ios")) {
256
- RCTExperimentSetOnDemandViewMounting(YES);
257
- }
258
-
259
254
  if (reactNativeConfig && reactNativeConfig->getBool("react_fabric:preemptive_view_allocation_disabled_ios")) {
260
255
  RCTExperimentSetPreemptiveViewAllocationDisabled(YES);
261
256
  }
262
257
 
258
+ if (reactNativeConfig && reactNativeConfig->getBool("react_fabric:enable_remove_clipped_subviews_ios")) {
259
+ RCTSetRemoveClippedSubviewsEnabled(YES);
260
+ }
261
+
263
262
  auto componentRegistryFactory =
264
263
  [factory = wrapManagedObject(_mountingManager.componentViewRegistry.componentViewFactory)](
265
264
  EventDispatcher::Weak const &eventDispatcher, ContextContainer::Shared const &contextContainer) {
@@ -34,7 +34,7 @@ facebook::react::RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge)
34
34
 
35
35
  /*
36
36
  * Controls a stored instance of the Bridge. A consumer can re-set the stored Bridge using that method; the class is
37
- * responsible to coordinate this change with a SurfacePresetner accordingly.
37
+ * responsible to coordinate this change with a SurfacePresenter accordingly.
38
38
  */
39
39
  @property (nonatomic, weak) RCTBridge *bridge;
40
40