react-native 0.66.2 → 0.67.0-rc.3

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 (444) 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 +2 -2
  5. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  6. package/Libraries/Animated/components/AnimatedScrollView.js +3 -3
  7. package/Libraries/Animated/components/AnimatedText.js +3 -3
  8. package/Libraries/Animated/components/AnimatedView.js +1 -3
  9. package/Libraries/Animated/createAnimatedComponent.js +3 -34
  10. package/Libraries/Components/Button.js +3 -0
  11. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  13. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
  14. package/Libraries/Components/ScrollView/ScrollView.js +17 -16
  15. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
  16. package/Libraries/Components/View/View.js +1 -1
  17. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  18. package/Libraries/Core/ExceptionsManager.js +45 -80
  19. package/Libraries/Core/ExtendedError.js +0 -1
  20. package/Libraries/Core/ReactNativeVersion.js +3 -3
  21. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  22. package/Libraries/Core/setUpGlobals.js +2 -4
  23. package/Libraries/Core/setUpTimers.js +2 -2
  24. package/Libraries/Image/Image.ios.js +6 -0
  25. package/Libraries/Image/ImageBackground.js +10 -8
  26. package/Libraries/Image/ImageProps.js +28 -0
  27. package/Libraries/Image/RCTImageView.mm +4 -0
  28. package/Libraries/LogBox/Data/LogBoxData.js +0 -1
  29. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  30. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  31. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  32. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  33. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  34. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  35. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  36. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
  37. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -1
  38. package/Libraries/NewAppScreen/components/logo.png +0 -0
  39. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
  40. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
  41. package/Libraries/Pressability/Pressability.js +13 -13
  42. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  43. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  44. package/Libraries/ReactNative/AppRegistry.js +4 -2
  45. package/Libraries/Renderer/REVISION +1 -1
  46. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +1569 -875
  47. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +529 -319
  48. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +570 -362
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +1592 -891
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +521 -311
  51. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +562 -354
  52. package/Libraries/Share/Share.js +1 -1
  53. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  54. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +4 -2
  55. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
  56. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  57. package/Libraries/Text/TextProps.js +1 -7
  58. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
  59. package/Libraries/Utilities/HMRClient.js +1 -1
  60. package/README.md +1 -1
  61. package/React/Base/RCTBridge+Private.h +8 -0
  62. package/React/Base/RCTBridge.h +4 -0
  63. package/React/Base/RCTBridge.m +19 -7
  64. package/React/Base/RCTBridgeModule.h +2 -11
  65. package/React/Base/RCTBundleURLProvider.h +1 -1
  66. package/React/Base/RCTBundleURLProvider.mm +5 -3
  67. package/React/Base/RCTConstants.h +0 -6
  68. package/React/Base/RCTConstants.m +0 -15
  69. package/React/Base/RCTConvert.h +1 -1
  70. package/React/Base/RCTDefines.h +12 -3
  71. package/React/Base/RCTEventDispatcherProtocol.h +2 -0
  72. package/React/Base/RCTJSThread.h +29 -0
  73. package/React/Base/RCTJSThread.m +19 -0
  74. package/React/Base/RCTRootView.h +15 -0
  75. package/React/Base/RCTRootView.m +15 -0
  76. package/React/Base/RCTTouchHandler.m +1 -9
  77. package/React/Base/RCTUtils.h +3 -0
  78. package/React/Base/RCTUtils.m +14 -7
  79. package/React/Base/RCTVersion.m +3 -3
  80. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
  81. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
  82. package/React/CoreModules/RCTAccessibilityManager+Internal.h +24 -0
  83. package/React/CoreModules/RCTAccessibilityManager.mm +18 -3
  84. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  85. package/React/CoreModules/RCTDevLoadingView.mm +5 -10
  86. package/React/CoreModules/RCTDevSettings.mm +6 -6
  87. package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
  88. package/React/CoreModules/RCTDeviceInfo.mm +4 -4
  89. package/React/CoreModules/RCTEventDispatcher.mm +5 -0
  90. package/React/CoreModules/RCTExceptionsManager.mm +11 -24
  91. package/React/CoreModules/RCTLogBox.mm +0 -1
  92. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  93. package/React/CoreModules/RCTRedBox.mm +1 -5
  94. package/React/CxxBridge/RCTCxxBridge.mm +18 -1
  95. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  96. package/React/DevSupport/RCTPackagerConnection.mm +9 -5
  97. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +11 -3
  98. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -3
  99. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +16 -0
  100. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  101. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +3 -5
  102. package/React/Fabric/Mounting/RCTMountingManager.mm +15 -1
  103. package/React/Fabric/RCTScheduler.mm +12 -5
  104. package/React/Fabric/RCTSurfacePresenter.mm +0 -4
  105. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  106. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -3
  107. package/React/React-RCTFabric.podspec +0 -1
  108. package/React/Views/RCTFont.mm +54 -38
  109. package/React/Views/RCTView.m +1 -6
  110. package/React/Views/RCTViewManager.m +3 -2
  111. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  112. package/React/Views/ScrollView/RCTScrollView.m +5 -15
  113. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -7
  114. package/React/Views/UIView+React.m +2 -11
  115. package/React-Core.podspec +0 -1
  116. package/ReactAndroid/build.gradle +11 -5
  117. package/ReactAndroid/gradle.properties +1 -1
  118. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
  119. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
  120. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -1
  121. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutor.java +14 -8
  122. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +0 -1
  123. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +63 -26
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +50 -2
  125. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +31 -0
  126. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -1
  127. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +2 -0
  128. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +13 -2
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -0
  130. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  131. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  133. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.java +40 -0
  134. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegateFactory.java +24 -0
  135. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +0 -6
  136. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -0
  137. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -0
  138. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +5 -2
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +102 -0
  140. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +35 -11
  141. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +5 -72
  142. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +12 -0
  143. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.java +92 -0
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +27 -42
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +14 -0
  146. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +5 -4
  147. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +3 -7
  148. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -2
  149. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +8 -3
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +43 -9
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +2 -6
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +84 -32
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -2
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +20 -2
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +2 -1
  159. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +9 -1
  160. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +19 -4
  161. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -2
  162. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +2 -1
  163. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutor.java +6 -1
  164. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +0 -6
  165. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +4 -1
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java +9 -8
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +7 -19
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  169. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +3 -3
  175. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +8 -8
  176. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  177. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +0 -6
  178. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  179. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  180. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +0 -12
  181. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +1 -1
  182. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +75 -10
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +19 -22
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +42 -0
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +7 -1
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +7 -0
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +2 -1
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +17 -9
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +43 -8
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +15 -16
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +108 -19
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +0 -6
  194. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +79 -4
  195. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +94 -3
  197. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +21 -1
  198. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  199. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  200. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +9 -1
  202. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  203. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +25 -6
  204. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +25 -5
  205. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  206. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +19 -0
  208. package/ReactAndroid/src/main/jni/react/jni/Android.mk +3 -2
  209. package/ReactAndroid/src/main/jni/react/jni/BUCK +4 -5
  210. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +49 -7
  211. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +15 -2
  212. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  213. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  214. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  215. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  216. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -4
  217. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +6 -6
  218. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +43 -0
  219. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +3 -1
  220. package/ReactCommon/React-Fabric.podspec +9 -1
  221. package/ReactCommon/better/BUCK +0 -6
  222. package/ReactCommon/callinvoker/BUCK +2 -8
  223. package/ReactCommon/cxxreact/BUCK +1 -16
  224. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  225. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  226. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  227. package/ReactCommon/jsi/BUCK +0 -9
  228. package/ReactCommon/jsinspector/BUCK +0 -5
  229. package/ReactCommon/logger/BUCK +0 -5
  230. package/ReactCommon/react/config/BUCK +0 -6
  231. package/ReactCommon/react/debug/BUCK +0 -6
  232. package/ReactCommon/react/nativemodule/core/BUCK +0 -5
  233. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +14 -31
  234. package/ReactCommon/react/nativemodule/samples/BUCK +0 -7
  235. package/ReactCommon/react/renderer/animations/BUCK +1 -4
  236. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  237. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -26
  238. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  239. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +912 -1147
  240. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  241. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  242. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  243. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -3
  244. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  245. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  246. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  247. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -6
  248. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  249. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  250. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +1 -1
  251. package/ReactCommon/react/renderer/attributedstring/conversions.h +58 -3
  252. package/ReactCommon/react/renderer/attributedstring/primitives.h +18 -1
  253. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -6
  254. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -6
  255. package/ReactCommon/react/renderer/components/image/BUCK +0 -6
  256. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +0 -2
  257. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -6
  258. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +0 -4
  259. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -6
  260. package/ReactCommon/react/renderer/components/modal/BUCK +0 -6
  261. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +0 -5
  262. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -6
  263. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -3
  264. package/ReactCommon/react/renderer/components/root/BUCK +0 -6
  265. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -6
  266. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -6
  267. package/ReactCommon/react/renderer/components/slider/BUCK +0 -6
  268. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +0 -3
  269. package/ReactCommon/react/renderer/components/switch/BUCK +0 -6
  270. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -3
  271. package/ReactCommon/react/renderer/components/text/BUCK +0 -6
  272. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -20
  273. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -6
  274. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +0 -3
  275. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +2 -0
  276. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -6
  277. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +0 -3
  278. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -6
  279. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +0 -4
  280. package/ReactCommon/react/renderer/components/view/Android.mk +1 -1
  281. package/ReactCommon/react/renderer/components/view/BUCK +0 -6
  282. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  283. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -23
  284. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -3
  285. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +3 -3
  286. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  287. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +4 -0
  288. package/ReactCommon/react/renderer/core/BUCK +2 -6
  289. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +14 -9
  290. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +1 -10
  291. package/ReactCommon/react/renderer/core/EventEmitter.cpp +9 -4
  292. package/ReactCommon/react/renderer/core/EventEmitter.h +2 -1
  293. package/ReactCommon/react/renderer/core/Props.h +1 -0
  294. package/ReactCommon/react/renderer/core/PropsParserContext.h +3 -2
  295. package/ReactCommon/react/renderer/core/RawEvent.h +7 -5
  296. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  297. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  298. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  299. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  300. package/ReactCommon/react/renderer/debug/BUCK +0 -6
  301. package/ReactCommon/react/renderer/element/BUCK +0 -6
  302. package/ReactCommon/react/renderer/graphics/Android.mk +1 -1
  303. package/ReactCommon/react/renderer/graphics/BUCK +0 -6
  304. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +0 -1
  305. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  306. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  307. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -6
  308. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -6
  309. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -6
  310. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  311. package/ReactCommon/react/renderer/mounting/BUCK +0 -6
  312. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  313. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  314. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  315. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  316. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -7
  317. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +36 -0
  318. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +28 -20
  319. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +4 -2
  320. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -3
  321. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  322. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +32 -0
  323. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +36 -0
  324. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  325. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -3
  326. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +4 -2
  327. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -2
  328. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  329. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +26 -1
  330. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +72 -0
  331. package/ReactCommon/react/renderer/scheduler/BUCK +0 -6
  332. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +1 -4
  333. package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -1
  334. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +4 -4
  335. package/ReactCommon/react/renderer/telemetry/BUCK +0 -6
  336. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -6
  337. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -6
  338. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  339. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +19 -0
  340. package/ReactCommon/react/renderer/timeline/BUCK +6 -12
  341. package/ReactCommon/react/renderer/uimanager/BUCK +0 -6
  342. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  343. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  344. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +1 -1
  345. package/ReactCommon/react/test_utils/BUCK +3 -6
  346. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  347. package/ReactCommon/react/utils/BUCK +0 -6
  348. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  349. package/ReactCommon/reactperflogger/BUCK +0 -4
  350. package/ReactCommon/runtimeexecutor/BUCK +0 -6
  351. package/ReactCommon/yoga/BUCK +1 -5
  352. package/android/com/facebook/react/react-native/{0.66.2/react-native-0.66.2.aar → 0.67.0-rc.3/react-native-0.67.0-rc.3.aar} +0 -0
  353. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.aar.md5 +1 -0
  354. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.aar.sha1 +1 -0
  355. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.aar.sha256 +1 -0
  356. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.aar.sha512 +1 -0
  357. package/android/com/facebook/react/react-native/{0.66.2/react-native-0.66.2.module → 0.67.0-rc.3/react-native-0.67.0-rc.3.module} +16 -17
  358. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.module.md5 +1 -0
  359. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.module.sha1 +1 -0
  360. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.module.sha256 +1 -0
  361. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.module.sha512 +1 -0
  362. package/android/com/facebook/react/react-native/{0.66.2/react-native-0.66.2.pom → 0.67.0-rc.3/react-native-0.67.0-rc.3.pom} +2 -2
  363. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.pom.md5 +1 -0
  364. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.pom.sha1 +1 -0
  365. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.pom.sha256 +1 -0
  366. package/android/com/facebook/react/react-native/0.67.0-rc.3/react-native-0.67.0-rc.3.pom.sha512 +1 -0
  367. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  368. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  369. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  370. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  371. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  372. package/flow/global.js +45 -0
  373. package/index.js +15 -10
  374. package/jest/mockModal.js +31 -0
  375. package/jest/setup.js +5 -3
  376. package/package.json +8 -9
  377. package/react.gradle +53 -18
  378. package/scripts/find-node.sh +13 -0
  379. package/scripts/generate-specs-cli.js +18 -0
  380. package/scripts/ios-configure-glog.sh +4 -0
  381. package/scripts/react-native-xcode.sh +6 -6
  382. package/scripts/react_native_pods.rb +200 -57
  383. package/template/Gemfile +6 -0
  384. package/template/Gemfile.lock +100 -0
  385. package/template/_bundle/config +2 -0
  386. package/template/_flowconfig +1 -1
  387. package/template/_ruby-version +1 -0
  388. package/template/android/app/build.gradle +1 -1
  389. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  390. package/template/android/app/src/main/res/values/styles.xml +1 -0
  391. package/template/android/build.gradle +7 -3
  392. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  393. package/template/android/gradle.properties +1 -1
  394. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -2
  395. package/template/package.json +1 -1
  396. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  397. package/third-party-podspecs/glog.podspec +0 -1
  398. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  399. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  400. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  401. package/Libraries/Components/StaticContainer.react.js +0 -51
  402. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  403. package/Libraries/Interaction/InteractionMixin.js +0 -54
  404. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  405. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  406. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  407. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  408. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  409. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  410. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  411. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  412. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  413. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  414. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  415. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  416. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  417. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  418. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  419. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerDelegate.java +0 -57
  420. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerInterface.java +0 -23
  421. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +0 -19
  422. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerDelegate.java +0 -62
  423. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerInterface.java +0 -25
  424. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerDelegate.java +0 -33
  425. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerInterface.java +0 -17
  426. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerDelegate.java +0 -51
  427. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerInterface.java +0 -21
  428. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerDelegate.java +0 -63
  429. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerInterface.java +0 -24
  430. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.aar.md5 +0 -1
  431. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.aar.sha1 +0 -1
  432. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.aar.sha256 +0 -1
  433. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.aar.sha512 +0 -1
  434. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.module.md5 +0 -1
  435. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.module.sha1 +0 -1
  436. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.module.sha256 +0 -1
  437. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.module.sha512 +0 -1
  438. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.pom.md5 +0 -1
  439. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.pom.sha1 +0 -1
  440. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.pom.sha256 +0 -1
  441. package/android/com/facebook/react/react-native/0.66.2/react-native-0.66.2.pom.sha512 +0 -1
  442. package/scripts/generate-specs.sh +0 -99
  443. package/template/_editorconfig +0 -3
  444. package/template/_gitattributes +0 -3
@@ -9,11 +9,11 @@
9
9
 
10
10
  #include <ReactCommon/RuntimeExecutor.h>
11
11
  #include <better/optional.h>
12
- #include <react/renderer/core/EventTarget.h>
12
+ #include <better/set.h>
13
+ #include <react/renderer/animations/LayoutAnimationCallbackWrapper.h>
14
+ #include <react/renderer/animations/primitives.h>
13
15
  #include <react/renderer/core/RawValue.h>
14
16
  #include <react/renderer/debug/flags.h>
15
- #include <react/renderer/mounting/Differentiator.h>
16
- #include <react/renderer/mounting/MountingCoordinator.h>
17
17
  #include <react/renderer/mounting/MountingOverrideDelegate.h>
18
18
  #include <react/renderer/mounting/MountingTransaction.h>
19
19
  #include <react/renderer/mounting/ShadowViewMutation.h>
@@ -36,146 +36,15 @@ void PrintMutationInstructionRelative(
36
36
  #define PrintMutationInstructionRelative(a, b, c)
37
37
  #endif
38
38
 
39
- // This corresponds exactly with JS.
40
- enum class AnimationType {
41
- None = 0,
42
- Spring = 1,
43
- Linear = 2,
44
- EaseInEaseOut = 4,
45
- EaseIn = 8,
46
- EaseOut = 16,
47
- Keyboard = 32
48
- };
49
- enum class AnimationProperty {
50
- NotApplicable = 0,
51
- Opacity = 1,
52
- ScaleX = 2,
53
- ScaleY = 4,
54
- ScaleXY = 8
55
- };
56
- enum class AnimationConfigurationType { Create = 1, Update = 2, Delete = 4 };
57
-
58
- // This corresponds exactly with JS.
59
- struct AnimationConfig {
60
- AnimationType animationType = AnimationType::None;
61
- AnimationProperty animationProperty = AnimationProperty::NotApplicable;
62
- double duration =
63
- 0; // these are perhaps better represented as uint64_t, but they
64
- // come from JS as doubles
65
- double delay = 0;
66
- double springDamping = 0;
67
- double initialVelocity = 0;
68
- };
69
-
70
- // This corresponds exactly with JS.
71
- struct LayoutAnimationConfig {
72
- double duration; // ms
73
- AnimationConfig createConfig;
74
- AnimationConfig updateConfig;
75
- AnimationConfig deleteConfig;
76
- };
77
-
78
- struct AnimationKeyFrame {
79
- // The mutation(s) that should be executed once the animation completes.
80
- // This maybe empty.
81
- // For CREATE/INSERT this will contain CREATE, INSERT in that order.
82
- // For REMOVE/DELETE, same.
83
- std::vector<ShadowViewMutation> finalMutationsForKeyFrame;
84
-
85
- // The type of animation this is (for configuration purposes)
86
- AnimationConfigurationType type;
87
-
88
- // Tag representing the node being animated.
89
- Tag tag;
90
-
91
- ShadowView parentView;
92
-
93
- // ShadowView representing the start and end points of this animation.
94
- ShadowView viewStart;
95
- ShadowView viewEnd;
96
-
97
- // ShadowView representing the previous frame of the animation.
98
- ShadowView viewPrev;
99
-
100
- // If an animation interrupts an existing one, the starting state may actually
101
- // be halfway through the intended transition.
102
- double initialProgress;
103
-
104
- bool invalidated{false};
105
-
106
- // In the case where some mutation conflicts with this keyframe,
107
- // should we generate final synthetic UPDATE mutations for this keyframe?
108
- bool generateFinalSyntheticMutations{true};
109
- };
110
-
111
- class LayoutAnimationCallbackWrapper {
112
- public:
113
- LayoutAnimationCallbackWrapper(jsi::Function &&callback)
114
- : callback_(std::make_shared<jsi::Function>(std::move(callback))) {}
115
- LayoutAnimationCallbackWrapper() : callback_(nullptr) {}
116
-
117
- // Copy and assignment-copy constructors should copy callback_, and not
118
- // std::move it. Copying is desirable, otherwise the shared_ptr and
119
- // jsi::Function will be deallocated too early.
120
-
121
- bool readyForCleanup() const {
122
- return callback_ == nullptr || *callComplete_;
123
- }
124
-
125
- void call(const RuntimeExecutor &runtimeExecutor) const {
126
- if (readyForCleanup()) {
127
- return;
128
- }
129
-
130
- std::weak_ptr<jsi::Function> callable = callback_;
131
- std::shared_ptr<std::atomic_bool> callComplete = callComplete_;
132
-
133
- runtimeExecutor(
134
- [=, callComplete = std::move(callComplete)](jsi::Runtime &runtime) {
135
- auto fn = callable.lock();
136
-
137
- if (!fn || *callComplete) {
138
- return;
139
- }
140
-
141
- fn->call(runtime);
142
- *callComplete = true;
143
- });
144
- }
145
-
146
- private:
147
- std::shared_ptr<std::atomic_bool> callComplete_ =
148
- std::make_shared<std::atomic_bool>(false);
149
- std::shared_ptr<jsi::Function> callback_;
150
- };
151
-
152
- struct LayoutAnimation {
153
- SurfaceId surfaceId;
154
- uint64_t startTime;
155
- bool completed = false;
156
- LayoutAnimationConfig layoutAnimationConfig;
157
- LayoutAnimationCallbackWrapper successCallback;
158
- LayoutAnimationCallbackWrapper failureCallback;
159
- std::vector<AnimationKeyFrame> keyFrames;
160
- };
161
-
162
39
  class LayoutAnimationKeyFrameManager : public UIManagerAnimationDelegate,
163
40
  public MountingOverrideDelegate {
164
41
  public:
165
42
  LayoutAnimationKeyFrameManager(
166
43
  RuntimeExecutor runtimeExecutor,
167
- LayoutAnimationStatusDelegate *delegate)
168
- : runtimeExecutor_(runtimeExecutor),
169
- layoutAnimationStatusDelegate_(delegate),
170
- now_([]() {
171
- return std::chrono::duration_cast<std::chrono::milliseconds>(
172
- std::chrono::high_resolution_clock::now()
173
- .time_since_epoch())
174
- .count();
175
- }) {}
176
- ~LayoutAnimationKeyFrameManager() {}
177
-
178
- #pragma mark UIManagerAnimationDelegate methods
44
+ ContextContainer::Shared &contextContainer,
45
+ LayoutAnimationStatusDelegate *delegate);
46
+
47
+ #pragma mark - UIManagerAnimationDelegate methods
179
48
 
180
49
  void uiManagerDidConfigureNextLayoutAnimation(
181
50
  jsi::Runtime &runtime,
@@ -191,7 +60,7 @@ class LayoutAnimationKeyFrameManager : public UIManagerAnimationDelegate,
191
60
 
192
61
  void stopSurface(SurfaceId surfaceId) override;
193
62
 
194
- #pragma mark MountingOverrideDelegate methods
63
+ #pragma mark - MountingOverrideDelegate methods
195
64
 
196
65
  bool shouldOverridePullTransaction() const override;
197
66
 
@@ -205,7 +74,6 @@ class LayoutAnimationKeyFrameManager : public UIManagerAnimationDelegate,
205
74
  ShadowViewMutationList mutations) const override;
206
75
 
207
76
  // Exposed for testing.
208
- public:
209
77
  void uiManagerDidConfigureNextLayoutAnimation(
210
78
  LayoutAnimation layoutAnimation) const;
211
79
 
@@ -214,50 +82,47 @@ class LayoutAnimationKeyFrameManager : public UIManagerAnimationDelegate,
214
82
  // delegate is protected by a mutex; ALL method calls into this delegate are
215
83
  // also protected by the mutex! The only way to set this without a mutex is
216
84
  // via a constructor.
217
- public:
218
85
  void setLayoutAnimationStatusDelegate(
219
86
  LayoutAnimationStatusDelegate *delegate) const;
220
87
 
221
- private:
222
- RuntimeExecutor runtimeExecutor_;
223
- mutable std::mutex layoutAnimationStatusDelegateMutex_;
224
- mutable LayoutAnimationStatusDelegate *layoutAnimationStatusDelegate_{};
88
+ void setClockNow(std::function<uint64_t()> now);
225
89
 
226
- // Function that returns current time in milliseconds
227
- std::function<uint64_t()> now_;
90
+ void enableSkipInvalidatedKeyFrames();
228
91
 
229
- void adjustImmediateMutationIndicesForDelayedMutations(
230
- SurfaceId surfaceId,
231
- ShadowViewMutation &mutation,
232
- bool skipLastAnimation = false,
233
- bool lastAnimationOnly = false) const;
92
+ void enableCrashOnMissingComponentDescriptor();
234
93
 
235
- void adjustDelayedMutationIndicesForMutation(
236
- SurfaceId surfaceId,
237
- ShadowViewMutation const &mutation,
238
- bool skipLastAnimation = false) const;
94
+ void enableSimulateImagePropsMemoryAccess();
239
95
 
240
- void getAndEraseConflictingAnimations(
241
- SurfaceId surfaceId,
242
- ShadowViewMutationList const &mutations,
243
- std::vector<AnimationKeyFrame> &conflictingAnimations) const;
96
+ protected:
97
+ SharedComponentDescriptorRegistry componentDescriptorRegistry_;
98
+ mutable better::optional<LayoutAnimation> currentAnimation_{};
99
+ mutable std::mutex currentAnimationMutex_;
244
100
 
245
- mutable std::mutex surfaceIdsToStopMutex_;
246
- mutable std::vector<SurfaceId> surfaceIdsToStop_{};
101
+ /**
102
+ * All mutations of inflightAnimations_ are thread-safe as long as
103
+ * we keep the contract of: only mutate it within the context of
104
+ * `pullTransaction`. If that contract is held, this is implicitly protected
105
+ * by the MountingCoordinator's mutex.
106
+ */
107
+ mutable std::vector<LayoutAnimation> inflightAnimations_{};
247
108
 
248
- protected:
249
109
  bool hasComponentDescriptorForShadowView(ShadowView const &shadowView) const;
250
110
  ComponentDescriptor const &getComponentDescriptorForShadowView(
251
111
  ShadowView const &shadowView) const;
252
- std::pair<double, double> calculateAnimationProgress(
253
- uint64_t now,
254
- LayoutAnimation const &animation,
255
- AnimationConfig const &mutationConfig) const;
256
112
 
113
+ /**
114
+ * Given a `progress` between 0 and 1, a mutation and LayoutAnimation config,
115
+ * return a ShadowView with mutated props and/or LayoutMetrics.
116
+ *
117
+ * @param progress
118
+ * @param layoutAnimation
119
+ * @param animatedMutation
120
+ * @return
121
+ */
257
122
  ShadowView createInterpolatedShadowView(
258
123
  double progress,
259
- ShadowView startingView,
260
- ShadowView finalView) const;
124
+ ShadowView const &startingView,
125
+ ShadowView const &finalView) const;
261
126
 
262
127
  void callCallback(const LayoutAnimationCallbackWrapper &callback) const;
263
128
 
@@ -274,88 +139,58 @@ class LayoutAnimationKeyFrameManager : public UIManagerAnimationDelegate,
274
139
  AnimationKeyFrame const &keyframe,
275
140
  ShadowViewMutation::List &mutationsList,
276
141
  bool interrupted,
277
- std::string logPrefix) const;
142
+ const std::string &logPrefix) const;
278
143
 
279
- SharedComponentDescriptorRegistry componentDescriptorRegistry_;
280
- mutable better::optional<LayoutAnimation> currentAnimation_{};
281
- mutable std::mutex currentAnimationMutex_;
144
+ private:
145
+ RuntimeExecutor runtimeExecutor_;
146
+ ContextContainer::Shared contextContainer_;
282
147
 
283
- /**
284
- * All mutations of inflightAnimations_ are thread-safe as long as
285
- * we keep the contract of: only mutate it within the context of
286
- * `pullTransaction`. If that contract is held, this is implicitly protected
287
- * by the MountingCoordinator's mutex.
148
+ mutable std::mutex layoutAnimationStatusDelegateMutex_;
149
+ mutable LayoutAnimationStatusDelegate *layoutAnimationStatusDelegate_{};
150
+ mutable std::mutex surfaceIdsToStopMutex_;
151
+ mutable better::set<SurfaceId> surfaceIdsToStop_{};
152
+ bool skipInvalidatedKeyFrames_{false};
153
+
154
+ /*
155
+ * Feature flag that forces a crash if component descriptor for shadow view
156
+ * doesn't exist. This is an unexpected state and we crash to collect extra
157
+ * logs.
288
158
  */
289
- mutable std::vector<LayoutAnimation> inflightAnimations_{};
159
+ bool crashOnMissingComponentDescriptor_{false};
290
160
 
291
- private:
292
- // A vector of callable function wrappers that are in the process of being
293
- // called
294
- mutable std::mutex callbackWrappersPendingMutex_;
295
- mutable std::vector<std::unique_ptr<LayoutAnimationCallbackWrapper>>
296
- callbackWrappersPending_{};
161
+ /*
162
+ * Feature flag that enables simulation of memory access. This is a temporary
163
+ * flag to diagnose where crashes are coming from in LayoutAnimations on iOS.
164
+ */
165
+ bool simulateImagePropsMemoryAccess_{false};
297
166
 
298
- public:
299
- void setClockNow(std::function<uint64_t()> now);
300
- };
167
+ // Function that returns current time in milliseconds
168
+ std::function<uint64_t()> now_;
169
+
170
+ void adjustImmediateMutationIndicesForDelayedMutations(
171
+ SurfaceId surfaceId,
172
+ ShadowViewMutation &mutation,
173
+ bool skipLastAnimation = false,
174
+ bool lastAnimationOnly = false) const;
301
175
 
302
- static inline bool shouldFirstComeBeforeSecondRemovesOnly(
303
- ShadowViewMutation const &lhs,
304
- ShadowViewMutation const &rhs) noexcept {
305
- // Make sure that removes on the same level are sorted - highest indices must
306
- // come first.
307
- return (lhs.type == ShadowViewMutation::Type::Remove &&
308
- lhs.type == rhs.type) &&
309
- (lhs.parentShadowView.tag == rhs.parentShadowView.tag) &&
310
- (lhs.index > rhs.index);
311
- }
312
-
313
- static inline bool shouldFirstComeBeforeSecondMutation(
314
- ShadowViewMutation const &lhs,
315
- ShadowViewMutation const &rhs) noexcept {
316
- if (lhs.type != rhs.type) {
317
- // Deletes always come last
318
- if (lhs.type == ShadowViewMutation::Type::Delete) {
319
- return false;
320
- }
321
- if (rhs.type == ShadowViewMutation::Type::Delete) {
322
- return true;
323
- }
324
-
325
- // Remove comes before insert
326
- if (lhs.type == ShadowViewMutation::Type::Remove &&
327
- rhs.type == ShadowViewMutation::Type::Insert) {
328
- return true;
329
- }
330
- if (rhs.type == ShadowViewMutation::Type::Remove &&
331
- lhs.type == ShadowViewMutation::Type::Insert) {
332
- return false;
333
- }
334
-
335
- // Create comes before insert
336
- if (lhs.type == ShadowViewMutation::Type::Create &&
337
- rhs.type == ShadowViewMutation::Type::Insert) {
338
- return true;
339
- }
340
- if (rhs.type == ShadowViewMutation::Type::Create &&
341
- lhs.type == ShadowViewMutation::Type::Insert) {
342
- return false;
343
- }
344
- } else {
345
- // Make sure that removes on the same level are sorted - highest indices
346
- // must come first.
347
- if (lhs.type == ShadowViewMutation::Type::Remove &&
348
- lhs.parentShadowView.tag == rhs.parentShadowView.tag) {
349
- if (lhs.index > rhs.index) {
350
- return true;
351
- } else {
352
- return false;
353
- }
354
- }
355
- }
356
-
357
- return false;
358
- }
176
+ void adjustDelayedMutationIndicesForMutation(
177
+ SurfaceId surfaceId,
178
+ ShadowViewMutation const &mutation,
179
+ bool skipLastAnimation = false) const;
180
+
181
+ void getAndEraseConflictingAnimations(
182
+ SurfaceId surfaceId,
183
+ ShadowViewMutationList const &mutations,
184
+ std::vector<AnimationKeyFrame> &conflictingAnimations) const;
185
+
186
+ /*
187
+ * Removes animations from `inflightAnimations_` for stopped surfaces.
188
+ */
189
+ void deleteAnimationsForStoppedSurfaces() const;
190
+
191
+ void simulateImagePropsMemoryAccess(
192
+ ShadowViewMutationList const &mutations) const;
193
+ };
359
194
 
360
195
  } // namespace react
361
196
  } // namespace facebook
@@ -0,0 +1,212 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its 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
+ #include <better/optional.h>
9
+ #include <react/renderer/animations/primitives.h>
10
+
11
+ #include <glog/logging.h>
12
+
13
+ namespace facebook {
14
+ namespace react {
15
+
16
+ static inline better::optional<AnimationType> parseAnimationType(
17
+ std::string param) {
18
+ if (param == "spring") {
19
+ return AnimationType::Spring;
20
+ }
21
+ if (param == "linear") {
22
+ return AnimationType::Linear;
23
+ }
24
+ if (param == "easeInEaseOut") {
25
+ return AnimationType::EaseInEaseOut;
26
+ }
27
+ if (param == "easeIn") {
28
+ return AnimationType::EaseIn;
29
+ }
30
+ if (param == "easeOut") {
31
+ return AnimationType::EaseOut;
32
+ }
33
+ if (param == "keyboard") {
34
+ return AnimationType::Keyboard;
35
+ }
36
+
37
+ LOG(ERROR) << "Error parsing animation type: " << param;
38
+ return {};
39
+ }
40
+
41
+ static inline better::optional<AnimationProperty> parseAnimationProperty(
42
+ std::string param) {
43
+ if (param == "opacity") {
44
+ return AnimationProperty::Opacity;
45
+ }
46
+ if (param == "scaleX") {
47
+ return AnimationProperty::ScaleX;
48
+ }
49
+ if (param == "scaleY") {
50
+ return AnimationProperty::ScaleY;
51
+ }
52
+ if (param == "scaleXY") {
53
+ return AnimationProperty::ScaleXY;
54
+ }
55
+
56
+ LOG(ERROR) << "Error parsing animation property: " << param;
57
+ return {};
58
+ }
59
+
60
+ static inline better::optional<AnimationConfig> parseAnimationConfig(
61
+ folly::dynamic const &config,
62
+ double defaultDuration,
63
+ bool parsePropertyType) {
64
+ if (config.empty() || !config.isObject()) {
65
+ return AnimationConfig{
66
+ AnimationType::Linear,
67
+ AnimationProperty::NotApplicable,
68
+ defaultDuration,
69
+ 0,
70
+ 0,
71
+ 0};
72
+ }
73
+
74
+ auto const typeIt = config.find("type");
75
+ if (typeIt == config.items().end()) {
76
+ LOG(ERROR) << "Error parsing animation config: could not find field `type`";
77
+ return {};
78
+ }
79
+ auto const animationTypeParam = typeIt->second;
80
+ if (animationTypeParam.empty() || !animationTypeParam.isString()) {
81
+ LOG(ERROR)
82
+ << "Error parsing animation config: could not unwrap field `type`";
83
+ return {};
84
+ }
85
+ const auto animationType = parseAnimationType(animationTypeParam.asString());
86
+ if (!animationType) {
87
+ LOG(ERROR)
88
+ << "Error parsing animation config: could not parse field `type`";
89
+ return {};
90
+ }
91
+
92
+ AnimationProperty animationProperty = AnimationProperty::NotApplicable;
93
+ if (parsePropertyType) {
94
+ auto const propertyIt = config.find("property");
95
+ if (propertyIt == config.items().end()) {
96
+ LOG(ERROR)
97
+ << "Error parsing animation config: could not find field `property`";
98
+ return {};
99
+ }
100
+ auto const animationPropertyParam = propertyIt->second;
101
+ if (animationPropertyParam.empty() || !animationPropertyParam.isString()) {
102
+ LOG(ERROR)
103
+ << "Error parsing animation config: could not unwrap field `property`";
104
+ return {};
105
+ }
106
+ const auto animationPropertyParsed =
107
+ parseAnimationProperty(animationPropertyParam.asString());
108
+ if (!animationPropertyParsed) {
109
+ LOG(ERROR)
110
+ << "Error parsing animation config: could not parse field `property`";
111
+ return {};
112
+ }
113
+ animationProperty = *animationPropertyParsed;
114
+ }
115
+
116
+ double duration = defaultDuration;
117
+ double delay = 0;
118
+ double springDamping = 0.5;
119
+ double initialVelocity = 0;
120
+
121
+ auto const durationIt = config.find("duration");
122
+ if (durationIt != config.items().end()) {
123
+ if (durationIt->second.isDouble()) {
124
+ duration = durationIt->second.asDouble();
125
+ } else {
126
+ LOG(ERROR)
127
+ << "Error parsing animation config: field `duration` must be a number";
128
+ return {};
129
+ }
130
+ }
131
+
132
+ auto const delayIt = config.find("delay");
133
+ if (delayIt != config.items().end()) {
134
+ if (delayIt->second.isDouble()) {
135
+ delay = delayIt->second.asDouble();
136
+ } else {
137
+ LOG(ERROR)
138
+ << "Error parsing animation config: field `delay` must be a number";
139
+ return {};
140
+ }
141
+ }
142
+
143
+ auto const springDampingIt = config.find("springDamping");
144
+ if (springDampingIt != config.items().end() &&
145
+ springDampingIt->second.isDouble()) {
146
+ if (springDampingIt->second.isDouble()) {
147
+ springDamping = springDampingIt->second.asDouble();
148
+ } else {
149
+ LOG(ERROR)
150
+ << "Error parsing animation config: field `springDamping` must be a number";
151
+ return {};
152
+ }
153
+ }
154
+
155
+ auto const initialVelocityIt = config.find("initialVelocity");
156
+ if (initialVelocityIt != config.items().end()) {
157
+ if (initialVelocityIt->second.isDouble()) {
158
+ initialVelocity = initialVelocityIt->second.asDouble();
159
+ } else {
160
+ LOG(ERROR)
161
+ << "Error parsing animation config: field `initialVelocity` must be a number";
162
+ return {};
163
+ }
164
+ }
165
+
166
+ return better::optional<AnimationConfig>(AnimationConfig{
167
+ *animationType,
168
+ animationProperty,
169
+ duration,
170
+ delay,
171
+ springDamping,
172
+ initialVelocity});
173
+ }
174
+
175
+ // Parse animation config from JS
176
+ static inline better::optional<LayoutAnimationConfig>
177
+ parseLayoutAnimationConfig(folly::dynamic const &config) {
178
+ if (config.empty() || !config.isObject()) {
179
+ return {};
180
+ }
181
+
182
+ const auto durationIt = config.find("duration");
183
+ if (durationIt == config.items().end() || !durationIt->second.isDouble()) {
184
+ return {};
185
+ }
186
+ const double duration = durationIt->second.asDouble();
187
+
188
+ const auto createConfigIt = config.find("create");
189
+ const auto createConfig = createConfigIt == config.items().end()
190
+ ? better::optional<AnimationConfig>(AnimationConfig{})
191
+ : parseAnimationConfig(createConfigIt->second, duration, true);
192
+
193
+ const auto updateConfigIt = config.find("update");
194
+ const auto updateConfig = updateConfigIt == config.items().end()
195
+ ? better::optional<AnimationConfig>(AnimationConfig{})
196
+ : parseAnimationConfig(updateConfigIt->second, duration, false);
197
+
198
+ const auto deleteConfigIt = config.find("delete");
199
+ const auto deleteConfig = deleteConfigIt == config.items().end()
200
+ ? better::optional<AnimationConfig>(AnimationConfig{})
201
+ : parseAnimationConfig(deleteConfigIt->second, duration, true);
202
+
203
+ if (!createConfig || !updateConfig || !deleteConfig) {
204
+ return {};
205
+ }
206
+
207
+ return LayoutAnimationConfig{
208
+ duration, *createConfig, *updateConfig, *deleteConfig};
209
+ }
210
+
211
+ } // namespace react
212
+ } // namespace facebook