react-native-windows 0.76.3 → 0.77.0-preview.2

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 (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
package/.flowconfig CHANGED
@@ -85,6 +85,9 @@
85
85
  ; helloworld
86
86
  <PROJECT_ROOT>/packages/helloworld/ios/Pods/
87
87
 
88
+ ; Ignore rn-tester Pods
89
+ <PROJECT_ROOT>/packages/rn-tester/Pods/
90
+
88
91
  [untyped]
89
92
  .*/node_modules/@react-native-community/cli/.*/.*
90
93
 
@@ -131,6 +134,7 @@ suppress_type=$FlowFixMeProps
131
134
  suppress_type=$FlowFixMeState
132
135
  suppress_type=$FlowFixMeEmpty
133
136
 
137
+ ban_spread_key_props=true
134
138
  sharedmemory.hash_table_pow=21
135
139
 
136
140
  [lints]
@@ -154,4 +158,4 @@ untyped-import
154
158
  untyped-type-import
155
159
 
156
160
  [version]
157
- ^0.245.2
161
+ ^0.253.0
@@ -22,6 +22,7 @@ export interface ActionSheetIOSOptions {
22
22
  anchor?: number | undefined;
23
23
  tintColor?: ColorValue | ProcessedColorValue | undefined;
24
24
  cancelButtonTintColor?: ColorValue | ProcessedColorValue | undefined;
25
+ disabledButtonTintColor?: ColorValue | ProcessedColorValue | undefined;
25
26
  userInterfaceStyle?: 'light' | 'dark' | undefined;
26
27
  disabledButtonIndices?: number[] | undefined;
27
28
  }
@@ -49,6 +49,7 @@ const ActionSheetIOS = {
49
49
  +anchor?: ?number,
50
50
  +tintColor?: ColorValue | ProcessedColorValue,
51
51
  +cancelButtonTintColor?: ColorValue | ProcessedColorValue,
52
+ +disabledButtonTintColor?: ColorValue | ProcessedColorValue,
52
53
  +userInterfaceStyle?: string,
53
54
  +disabledButtonIndices?: Array<number>,
54
55
  |},
@@ -64,6 +65,7 @@ const ActionSheetIOS = {
64
65
  const {
65
66
  tintColor,
66
67
  cancelButtonTintColor,
68
+ disabledButtonTintColor,
67
69
  destructiveButtonIndex,
68
70
  ...remainingOptions
69
71
  } = options;
@@ -77,6 +79,10 @@ const ActionSheetIOS = {
77
79
 
78
80
  const processedTintColor = processColor(tintColor);
79
81
  const processedCancelButtonTintColor = processColor(cancelButtonTintColor);
82
+ const processedDisabledButtonTintColor = processColor(
83
+ disabledButtonTintColor,
84
+ );
85
+
80
86
  invariant(
81
87
  processedTintColor == null || typeof processedTintColor === 'number',
82
88
  'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions tintColor',
@@ -86,6 +92,11 @@ const ActionSheetIOS = {
86
92
  typeof processedCancelButtonTintColor === 'number',
87
93
  'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions cancelButtonTintColor',
88
94
  );
95
+ invariant(
96
+ processedDisabledButtonTintColor == null ||
97
+ typeof processedDisabledButtonTintColor === 'number',
98
+ 'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions disabledButtonTintColor',
99
+ );
89
100
  RCTActionSheetManager.showActionSheetWithOptions(
90
101
  {
91
102
  ...remainingOptions,
@@ -93,6 +104,8 @@ const ActionSheetIOS = {
93
104
  tintColor: processedTintColor,
94
105
  // $FlowFixMe[incompatible-call]
95
106
  cancelButtonTintColor: processedCancelButtonTintColor,
107
+ // $FlowFixMe[incompatible-call]
108
+ disabledButtonTintColor: processedDisabledButtonTintColor,
96
109
  destructiveButtonIndices,
97
110
  },
98
111
  callback,
@@ -12,8 +12,8 @@
12
12
 
13
13
  import type {PlatformConfig} from './AnimatedPlatformConfig';
14
14
 
15
- import {findNodeHandle} from '../ReactNative/RendererProxy';
16
15
  import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';
16
+ import {findNodeHandle} from '../ReactNative/RendererProxy';
17
17
  import AnimatedValue from './nodes/AnimatedValue';
18
18
  import AnimatedValueXY from './nodes/AnimatedValueXY';
19
19
  import invariant from 'invariant';
@@ -373,7 +373,7 @@ const parallel = function (
373
373
  const stopTogether = !(config && config.stopTogether === false);
374
374
 
375
375
  const result = {
376
- start: function (callback?: ?EndCallback) {
376
+ start: function (callback?: ?EndCallback, isLooping?: boolean) {
377
377
  if (doneCount === animations.length) {
378
378
  callback && callback({finished: true});
379
379
  return;
@@ -397,7 +397,7 @@ const parallel = function (
397
397
  if (!animation) {
398
398
  cb({finished: true});
399
399
  } else {
400
- animation.start(cb);
400
+ animation.start(cb, isLooping);
401
401
  }
402
402
  });
403
403
  },
@@ -8,6 +8,8 @@
8
8
  * @format
9
9
  */
10
10
 
11
+ import type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';
12
+
11
13
  import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
12
14
 
13
15
  /**
@@ -16,7 +18,7 @@ import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNa
16
18
  * In general native animated implementation should support any numeric or color property that
17
19
  * doesn't need to be updated through the shadow view hierarchy (all non-layout properties).
18
20
  */
19
- const SUPPORTED_COLOR_STYLES: {[string]: boolean} = {
21
+ const SUPPORTED_COLOR_STYLES: {[string]: true} = {
20
22
  backgroundColor: true,
21
23
  borderBottomColor: true,
22
24
  borderColor: true,
@@ -29,7 +31,7 @@ const SUPPORTED_COLOR_STYLES: {[string]: boolean} = {
29
31
  tintColor: true,
30
32
  };
31
33
 
32
- const SUPPORTED_STYLES: {[string]: boolean} = {
34
+ const SUPPORTED_STYLES: {[string]: true} = {
33
35
  ...SUPPORTED_COLOR_STYLES,
34
36
  borderBottomEndRadius: true,
35
37
  borderBottomLeftRadius: true,
@@ -58,7 +60,7 @@ const SUPPORTED_STYLES: {[string]: boolean} = {
58
60
  translateY: true,
59
61
  };
60
62
 
61
- const SUPPORTED_TRANSFORMS: {[string]: boolean} = {
63
+ const SUPPORTED_TRANSFORMS: {[string]: true} = {
62
64
  translateX: true,
63
65
  translateY: true,
64
66
  scale: true,
@@ -71,10 +73,12 @@ const SUPPORTED_TRANSFORMS: {[string]: boolean} = {
71
73
  perspective: true,
72
74
  skewX: true,
73
75
  skewY: true,
74
- matrix: ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform(),
76
+ ...(ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform()
77
+ ? {matrix: true}
78
+ : {}),
75
79
  };
76
80
 
77
- const SUPPORTED_INTERPOLATION_PARAMS: {[string]: boolean} = {
81
+ const SUPPORTED_INTERPOLATION_PARAMS: {[string]: true} = {
78
82
  inputRange: true,
79
83
  outputRange: true,
80
84
  extrapolate: true,
@@ -82,6 +86,13 @@ const SUPPORTED_INTERPOLATION_PARAMS: {[string]: boolean} = {
82
86
  extrapolateLeft: true,
83
87
  };
84
88
 
89
+ /**
90
+ * Default allowlist for component props that support native animated values.
91
+ */
92
+ export default {
93
+ style: SUPPORTED_STYLES,
94
+ } as AnimatedPropsAllowlist;
95
+
85
96
  export function allowInterpolationParam(param: string): void {
86
97
  SUPPORTED_INTERPOLATION_PARAMS[param] = true;
87
98
  }
@@ -95,17 +106,17 @@ export function allowTransformProp(prop: string): void {
95
106
  }
96
107
 
97
108
  export function isSupportedColorStyleProp(prop: string): boolean {
98
- return SUPPORTED_COLOR_STYLES[prop] === true;
109
+ return SUPPORTED_COLOR_STYLES.hasOwnProperty(prop);
99
110
  }
100
111
 
101
112
  export function isSupportedInterpolationParam(param: string): boolean {
102
- return SUPPORTED_INTERPOLATION_PARAMS[param] === true;
113
+ return SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(param);
103
114
  }
104
115
 
105
116
  export function isSupportedStyleProp(prop: string): boolean {
106
- return SUPPORTED_STYLES[prop] === true;
117
+ return SUPPORTED_STYLES.hasOwnProperty(prop);
107
118
  }
108
119
 
109
120
  export function isSupportedTransformProp(prop: string): boolean {
110
- return SUPPORTED_TRANSFORMS[prop] === true;
121
+ return SUPPORTED_TRANSFORMS.hasOwnProperty(prop);
111
122
  }
@@ -4,31 +4,30 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- 'use strict';
12
-
13
11
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
12
  import type AnimatedNode from '../nodes/AnimatedNode';
15
13
  import type AnimatedValue from '../nodes/AnimatedValue';
16
14
 
17
- import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
18
15
  import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
16
+ import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
19
17
  import AnimatedProps from '../nodes/AnimatedProps';
20
18
 
21
19
  export type EndResult = {finished: boolean, value?: number, ...};
22
20
  export type EndCallback = (result: EndResult) => void;
23
21
 
24
- export type AnimationConfig = {
22
+ export type AnimationConfig = $ReadOnly<{
25
23
  isInteraction?: boolean,
26
24
  useNativeDriver: boolean,
27
25
  platformConfig?: PlatformConfig,
28
26
  onComplete?: ?EndCallback,
29
27
  iterations?: number,
30
28
  isLooping?: boolean,
31
- };
29
+ ...
30
+ }>;
32
31
 
33
32
  let startNativeAnimationNextId = 1;
34
33
 
@@ -36,13 +35,23 @@ let startNativeAnimationNextId = 1;
36
35
  // Once an animation has been stopped or finished its course, it will
37
36
  // not be reused.
38
37
  export default class Animation {
38
+ #nativeID: ?number;
39
+ #onEnd: ?EndCallback;
40
+ #useNativeDriver: boolean;
41
+
39
42
  __active: boolean;
40
43
  __isInteraction: boolean;
41
- __onEnd: ?EndCallback;
42
- __iterations: number;
43
44
  __isLooping: ?boolean;
45
+ __iterations: number;
46
+
47
+ constructor(config: AnimationConfig) {
48
+ this.#useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
44
49
 
45
- _nativeId: number;
50
+ this.__active = false;
51
+ this.__isInteraction = config.isInteraction ?? !this.#useNativeDriver;
52
+ this.__isLooping = config.isLooping;
53
+ this.__iterations = config.iterations ?? 1;
54
+ }
46
55
 
47
56
  start(
48
57
  fromValue: number,
@@ -50,27 +59,35 @@ export default class Animation {
50
59
  onEnd: ?EndCallback,
51
60
  previousAnimation: ?Animation,
52
61
  animatedValue: AnimatedValue,
53
- ): void {}
62
+ ): void {
63
+ if (!this.#useNativeDriver && animatedValue.__isNative === true) {
64
+ throw new Error(
65
+ 'Attempting to run JS driven animation on animated node ' +
66
+ 'that has been moved to "native" earlier by starting an ' +
67
+ 'animation with `useNativeDriver: true`',
68
+ );
69
+ }
70
+
71
+ this.#onEnd = onEnd;
72
+ this.__active = true;
73
+ }
54
74
 
55
75
  stop(): void {
56
- if (this._nativeId) {
57
- NativeAnimatedHelper.API.stopAnimation(this._nativeId);
76
+ if (this.#nativeID != null) {
77
+ NativeAnimatedHelper.API.stopAnimation(this.#nativeID);
58
78
  }
79
+ this.__active = false;
59
80
  }
60
81
 
61
- __getNativeAnimationConfig(): any {
82
+ __getNativeAnimationConfig(): $ReadOnly<{
83
+ platformConfig: ?PlatformConfig,
84
+ ...
85
+ }> {
62
86
  // Subclasses that have corresponding animation implementation done in native
63
87
  // should override this method
64
88
  throw new Error('This animation type cannot be offloaded to native');
65
89
  }
66
90
 
67
- // Helper function for subclasses to make sure onEnd is only called once.
68
- __debouncedOnEnd(result: EndResult): void {
69
- const onEnd = this.__onEnd;
70
- this.__onEnd = null;
71
- onEnd && onEnd(result);
72
- }
73
-
74
91
  __findAnimatedPropsNodes(node: AnimatedNode): Array<AnimatedProps> {
75
92
  const result = [];
76
93
 
@@ -86,7 +103,11 @@ export default class Animation {
86
103
  return result;
87
104
  }
88
105
 
89
- __startNativeAnimation(animatedValue: AnimatedValue): void {
106
+ __startAnimationIfNative(animatedValue: AnimatedValue): boolean {
107
+ if (!this.#useNativeDriver) {
108
+ return false;
109
+ }
110
+
90
111
  const startNativeAnimationWaitId = `${startNativeAnimationNextId}:startAnimation`;
91
112
  startNativeAnimationNextId += 1;
92
113
  NativeAnimatedHelper.API.setWaitingForIdentifier(
@@ -95,13 +116,13 @@ export default class Animation {
95
116
  try {
96
117
  const config = this.__getNativeAnimationConfig();
97
118
  animatedValue.__makeNative(config.platformConfig);
98
- this._nativeId = NativeAnimatedHelper.generateNewAnimationId();
119
+ this.#nativeID = NativeAnimatedHelper.generateNewAnimationId();
99
120
  NativeAnimatedHelper.API.startAnimatingNode(
100
- this._nativeId,
121
+ this.#nativeID,
101
122
  animatedValue.__getNativeTag(),
102
123
  config,
103
124
  result => {
104
- this.__debouncedOnEnd(result);
125
+ this.__notifyAnimationEnd(result);
105
126
 
106
127
  // When using natively driven animations, once the animation completes,
107
128
  // we need to ensure that the JS side nodes are synced with the updated
@@ -112,7 +133,7 @@ export default class Animation {
112
133
 
113
134
  if (
114
135
  ReactNativeFeatureFlags.shouldSkipStateUpdatesForLoopingAnimations() &&
115
- this.__isLooping
136
+ this.__isLooping === true
116
137
  ) {
117
138
  return;
118
139
  }
@@ -125,6 +146,8 @@ export default class Animation {
125
146
  }
126
147
  },
127
148
  );
149
+
150
+ return true;
128
151
  } catch (e) {
129
152
  throw e;
130
153
  } finally {
@@ -133,4 +156,16 @@ export default class Animation {
133
156
  );
134
157
  }
135
158
  }
159
+
160
+ /**
161
+ * Notify the completion callback that the animation has ended. The completion
162
+ * callback will never be called more than once.
163
+ */
164
+ __notifyAnimationEnd(result: EndResult): void {
165
+ const callback = this.#onEnd;
166
+ if (callback != null) {
167
+ this.#onEnd = null;
168
+ callback(result);
169
+ }
170
+ }
136
171
  }
@@ -4,36 +4,35 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- 'use strict';
12
-
13
11
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
12
  import type AnimatedValue from '../nodes/AnimatedValue';
15
13
  import type {AnimationConfig, EndCallback} from './Animation';
16
14
 
17
- import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
18
15
  import Animation from './Animation';
19
16
 
20
- export type DecayAnimationConfig = {
17
+ export type DecayAnimationConfig = $ReadOnly<{
21
18
  ...AnimationConfig,
22
19
  velocity:
23
20
  | number
24
- | {
21
+ | $ReadOnly<{
25
22
  x: number,
26
23
  y: number,
27
24
  ...
28
- },
25
+ }>,
29
26
  deceleration?: number,
30
- };
27
+ ...
28
+ }>;
31
29
 
32
- export type DecayAnimationConfigSingle = {
30
+ export type DecayAnimationConfigSingle = $ReadOnly<{
33
31
  ...AnimationConfig,
34
32
  velocity: number,
35
33
  deceleration?: number,
36
- };
34
+ ...
35
+ }>;
37
36
 
38
37
  export default class DecayAnimation extends Animation {
39
38
  _startTime: number;
@@ -42,27 +41,25 @@ export default class DecayAnimation extends Animation {
42
41
  _deceleration: number;
43
42
  _velocity: number;
44
43
  _onUpdate: (value: number) => void;
45
- _animationFrame: any;
46
- _useNativeDriver: boolean;
44
+ _animationFrame: ?AnimationFrameID;
47
45
  _platformConfig: ?PlatformConfig;
48
46
 
49
47
  constructor(config: DecayAnimationConfigSingle) {
50
- super();
48
+ super(config);
49
+
51
50
  this._deceleration = config.deceleration ?? 0.998;
52
51
  this._velocity = config.velocity;
53
- this._useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
54
52
  this._platformConfig = config.platformConfig;
55
- this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;
56
- this.__iterations = config.iterations ?? 1;
57
53
  }
58
54
 
59
- __getNativeAnimationConfig(): {|
55
+ __getNativeAnimationConfig(): $ReadOnly<{
60
56
  deceleration: number,
61
57
  iterations: number,
62
58
  platformConfig: ?PlatformConfig,
63
- type: $TEMPORARY$string<'decay'>,
59
+ type: 'decay',
64
60
  velocity: number,
65
- |} {
61
+ ...
62
+ }> {
66
63
  return {
67
64
  type: 'decay',
68
65
  deceleration: this._deceleration,
@@ -79,26 +76,16 @@ export default class DecayAnimation extends Animation {
79
76
  previousAnimation: ?Animation,
80
77
  animatedValue: AnimatedValue,
81
78
  ): void {
82
- this.__active = true;
79
+ super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);
80
+
83
81
  this._lastValue = fromValue;
84
82
  this._fromValue = fromValue;
85
83
  this._onUpdate = onUpdate;
86
- this.__onEnd = onEnd;
87
84
  this._startTime = Date.now();
88
85
 
89
- if (!this._useNativeDriver && animatedValue.__isNative === true) {
90
- throw new Error(
91
- 'Attempting to run JS driven animation on animated node ' +
92
- 'that has been moved to "native" earlier by starting an ' +
93
- 'animation with `useNativeDriver: true`',
94
- );
95
- }
96
-
97
- if (this._useNativeDriver) {
98
- this.__startNativeAnimation(animatedValue);
99
- } else {
100
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
101
- this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));
86
+ const useNativeDriver = this.__startAnimationIfNative(animatedValue);
87
+ if (!useNativeDriver) {
88
+ this._animationFrame = requestAnimationFrame(() => this.onUpdate());
102
89
  }
103
90
  }
104
91
 
@@ -113,7 +100,7 @@ export default class DecayAnimation extends Animation {
113
100
  this._onUpdate(value);
114
101
 
115
102
  if (Math.abs(this._lastValue - value) < 0.1) {
116
- this.__debouncedOnEnd({finished: true});
103
+ this.__notifyAnimationEnd({finished: true});
117
104
  return;
118
105
  }
119
106
 
@@ -126,8 +113,9 @@ export default class DecayAnimation extends Animation {
126
113
 
127
114
  stop(): void {
128
115
  super.stop();
129
- this.__active = false;
130
- global.cancelAnimationFrame(this._animationFrame);
131
- this.__debouncedOnEnd({finished: false});
116
+ if (this._animationFrame != null) {
117
+ global.cancelAnimationFrame(this._animationFrame);
118
+ }
119
+ this.__notifyAnimationEnd({finished: false});
132
120
  }
133
121
  }
@@ -4,25 +4,22 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- 'use strict';
12
-
13
11
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
12
  import type AnimatedInterpolation from '../nodes/AnimatedInterpolation';
15
13
  import type AnimatedValue from '../nodes/AnimatedValue';
16
14
  import type AnimatedValueXY from '../nodes/AnimatedValueXY';
17
15
  import type {AnimationConfig, EndCallback} from './Animation';
18
16
 
19
- import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
20
17
  import AnimatedColor from '../nodes/AnimatedColor';
21
18
  import * as SpringConfig from '../SpringConfig';
22
19
  import Animation from './Animation';
23
20
  import invariant from 'invariant';
24
21
 
25
- export type SpringAnimationConfig = {
22
+ export type SpringAnimationConfig = $ReadOnly<{
26
23
  ...AnimationConfig,
27
24
  toValue:
28
25
  | number
@@ -47,11 +44,11 @@ export type SpringAnimationConfig = {
47
44
  restSpeedThreshold?: number,
48
45
  velocity?:
49
46
  | number
50
- | {
47
+ | $ReadOnly<{
51
48
  x: number,
52
49
  y: number,
53
50
  ...
54
- },
51
+ }>,
55
52
  bounciness?: number,
56
53
  speed?: number,
57
54
  tension?: number,
@@ -60,9 +57,10 @@ export type SpringAnimationConfig = {
60
57
  damping?: number,
61
58
  mass?: number,
62
59
  delay?: number,
63
- };
60
+ ...
61
+ }>;
64
62
 
65
- export type SpringAnimationConfigSingle = {
63
+ export type SpringAnimationConfigSingle = $ReadOnly<{
66
64
  ...AnimationConfig,
67
65
  toValue: number,
68
66
  overshootClamping?: boolean,
@@ -77,7 +75,14 @@ export type SpringAnimationConfigSingle = {
77
75
  damping?: number,
78
76
  mass?: number,
79
77
  delay?: number,
80
- };
78
+ ...
79
+ }>;
80
+
81
+ opaque type SpringAnimationInternalState = $ReadOnly<{
82
+ lastPosition: number,
83
+ lastVelocity: number,
84
+ lastTime: number,
85
+ }>;
81
86
 
82
87
  export default class SpringAnimation extends Animation {
83
88
  _overshootClamping: boolean;
@@ -93,17 +98,16 @@ export default class SpringAnimation extends Animation {
93
98
  _mass: number;
94
99
  _initialVelocity: number;
95
100
  _delay: number;
96
- _timeout: any;
101
+ _timeout: ?TimeoutID;
97
102
  _startTime: number;
98
103
  _lastTime: number;
99
104
  _frameTime: number;
100
105
  _onUpdate: (value: number) => void;
101
- _animationFrame: any;
102
- _useNativeDriver: boolean;
106
+ _animationFrame: ?AnimationFrameID;
103
107
  _platformConfig: ?PlatformConfig;
104
108
 
105
109
  constructor(config: SpringAnimationConfigSingle) {
106
- super();
110
+ super(config);
107
111
 
108
112
  this._overshootClamping = config.overshootClamping ?? false;
109
113
  this._restDisplacementThreshold = config.restDisplacementThreshold ?? 0.001;
@@ -112,10 +116,7 @@ export default class SpringAnimation extends Animation {
112
116
  this._lastVelocity = config.velocity ?? 0;
113
117
  this._toValue = config.toValue;
114
118
  this._delay = config.delay ?? 0;
115
- this._useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);
116
119
  this._platformConfig = config.platformConfig;
117
- this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;
118
- this.__iterations = config.iterations ?? 1;
119
120
 
120
121
  if (
121
122
  config.stiffness !== undefined ||
@@ -167,7 +168,7 @@ export default class SpringAnimation extends Animation {
167
168
  invariant(this._mass > 0, 'Mass value must be greater than 0');
168
169
  }
169
170
 
170
- __getNativeAnimationConfig(): {|
171
+ __getNativeAnimationConfig(): $ReadOnly<{
171
172
  damping: number,
172
173
  initialVelocity: number,
173
174
  iterations: number,
@@ -177,9 +178,10 @@ export default class SpringAnimation extends Animation {
177
178
  restDisplacementThreshold: number,
178
179
  restSpeedThreshold: number,
179
180
  stiffness: number,
180
- toValue: any,
181
- type: $TEMPORARY$string<'spring'>,
182
- |} {
181
+ toValue: number,
182
+ type: 'spring',
183
+ ...
184
+ }> {
183
185
  return {
184
186
  type: 'spring',
185
187
  overshootClamping: this._overshootClamping,
@@ -202,12 +204,12 @@ export default class SpringAnimation extends Animation {
202
204
  previousAnimation: ?Animation,
203
205
  animatedValue: AnimatedValue,
204
206
  ): void {
205
- this.__active = true;
207
+ super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);
208
+
206
209
  this._startPosition = fromValue;
207
210
  this._lastPosition = this._startPosition;
208
211
 
209
212
  this._onUpdate = onUpdate;
210
- this.__onEnd = onEnd;
211
213
  this._lastTime = Date.now();
212
214
  this._frameTime = 0.0;
213
215
 
@@ -221,17 +223,8 @@ export default class SpringAnimation extends Animation {
221
223
  }
222
224
 
223
225
  const start = () => {
224
- if (!this._useNativeDriver && animatedValue.__isNative === true) {
225
- throw new Error(
226
- 'Attempting to run JS driven animation on animated node ' +
227
- 'that has been moved to "native" earlier by starting an ' +
228
- 'animation with `useNativeDriver: true`',
229
- );
230
- }
231
-
232
- if (this._useNativeDriver) {
233
- this.__startNativeAnimation(animatedValue);
234
- } else {
226
+ const useNativeDriver = this.__startAnimationIfNative(animatedValue);
227
+ if (!useNativeDriver) {
235
228
  this.onUpdate();
236
229
  }
237
230
  };
@@ -244,7 +237,7 @@ export default class SpringAnimation extends Animation {
244
237
  }
245
238
  }
246
239
 
247
- getInternalState(): Object {
240
+ getInternalState(): SpringAnimationInternalState {
248
241
  return {
249
242
  lastPosition: this._lastPosition,
250
243
  lastVelocity: this._lastVelocity,
@@ -361,7 +354,7 @@ export default class SpringAnimation extends Animation {
361
354
  this._onUpdate(this._toValue);
362
355
  }
363
356
 
364
- this.__debouncedOnEnd({finished: true});
357
+ this.__notifyAnimationEnd({finished: true});
365
358
  return;
366
359
  }
367
360
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
@@ -370,9 +363,10 @@ export default class SpringAnimation extends Animation {
370
363
 
371
364
  stop(): void {
372
365
  super.stop();
373
- this.__active = false;
374
366
  clearTimeout(this._timeout);
375
- global.cancelAnimationFrame(this._animationFrame);
376
- this.__debouncedOnEnd({finished: false});
367
+ if (this._animationFrame != null) {
368
+ global.cancelAnimationFrame(this._animationFrame);
369
+ }
370
+ this.__notifyAnimationEnd({finished: false});
377
371
  }
378
372
  }