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

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 (369) 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/NativeAnimatedAllowlist.windows.js +122 -0
  8. package/Libraries/Animated/animations/Animation.js +60 -25
  9. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  10. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  11. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  12. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  13. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  14. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  15. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  17. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  18. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  19. package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
  20. package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
  21. package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
  22. package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  26. package/Libraries/Animated/useAnimatedProps.js +41 -35
  27. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  28. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  29. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  30. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  31. package/Libraries/Components/Button.js +9 -4
  32. package/Libraries/Components/Button.windows.js +19 -5
  33. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  34. package/Libraries/Components/Glyph/Glyph.js +2 -1
  35. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  36. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  37. package/Libraries/Components/Pressable/Pressable.js +4 -4
  38. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  39. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  40. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  41. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  42. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  43. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  44. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  45. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  46. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  47. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  48. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  49. package/Libraries/Components/Switch/Switch.js +8 -6
  50. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  51. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  52. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  53. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  54. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  55. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  56. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  57. package/Libraries/Components/TextInput/TextInput.js +37 -13
  58. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  59. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  60. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  61. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  62. package/Libraries/Components/Touchable/Position.js +7 -2
  63. package/Libraries/Components/Touchable/Touchable.js +4 -0
  64. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  65. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  66. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  68. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  71. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  73. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  74. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  75. package/Libraries/Components/View/View.js +4 -4
  76. package/Libraries/Components/View/View.windows.js +12 -5
  77. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  78. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  79. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  80. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  81. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  82. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  83. package/Libraries/Core/ExceptionsManager.js +50 -29
  84. package/Libraries/Core/ReactNativeVersion.js +3 -3
  85. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  86. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  87. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  88. package/Libraries/Core/setUpErrorHandling.js +20 -18
  89. package/Libraries/Core/setUpReactDevTools.js +107 -8
  90. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  91. package/Libraries/Core/setUpTimers.js +21 -18
  92. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  93. package/Libraries/Image/AssetSourceResolver.js +12 -1
  94. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  95. package/Libraries/Image/Image.android.js +1 -5
  96. package/Libraries/Image/Image.d.ts +20 -29
  97. package/Libraries/Image/Image.ios.js +0 -2
  98. package/Libraries/Image/Image.windows.js +5 -1
  99. package/Libraries/Image/ImageBackground.js +2 -5
  100. package/Libraries/Image/ImageProps.js +7 -6
  101. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  102. package/Libraries/Image/ImageResizeMode.js +4 -1
  103. package/Libraries/Image/ImageSource.d.ts +0 -2
  104. package/Libraries/Image/ImageSource.js +0 -2
  105. package/Libraries/Image/ImageTypes.flow.js +11 -9
  106. package/Libraries/Image/ImageUtils.js +6 -3
  107. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  108. package/Libraries/Inspector/Inspector.js +1 -0
  109. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  110. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  111. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  112. package/Libraries/Interaction/InteractionManager.js +6 -1
  113. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  114. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  115. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  116. package/Libraries/Lists/FlatList.d.ts +1 -2
  117. package/Libraries/Lists/FlatList.js +2 -2
  118. package/Libraries/Lists/SectionListModern.js +7 -7
  119. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  120. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  121. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  122. package/Libraries/LogBox/LogBox.js +18 -5
  123. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  124. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  125. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  126. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  131. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  132. package/Libraries/Modal/Modal.d.ts +12 -0
  133. package/Libraries/Modal/Modal.js +31 -4
  134. package/Libraries/Modal/Modal.windows.js +18 -0
  135. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  136. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  137. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  138. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  139. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  140. package/Libraries/Network/XHRInterceptor.js +63 -14
  141. package/Libraries/Network/XMLHttpRequest.js +26 -1
  142. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  143. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  144. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  145. package/Libraries/Pressability/HoverState.js +2 -0
  146. package/Libraries/Pressability/Pressability.js +2 -3
  147. package/Libraries/Pressability/Pressability.windows.js +2 -3
  148. package/Libraries/Pressability/usePressability.js +4 -1
  149. package/Libraries/ReactNative/AppContainer.js +1 -1
  150. package/Libraries/ReactNative/AppRegistry.js +1 -11
  151. package/Libraries/ReactNative/DisplayMode.js +1 -1
  152. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  153. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  154. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  155. package/Libraries/ReactNative/renderApplication.js +9 -8
  156. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  157. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  158. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  159. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  160. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  161. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  162. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  163. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  166. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  167. package/Libraries/StyleSheet/processTransform.js +3 -34
  168. package/Libraries/Text/Text.js +248 -249
  169. package/Libraries/Text/Text.windows.js +298 -292
  170. package/Libraries/Text/TextNativeComponent.js +0 -1
  171. package/Libraries/Text/TextProps.windows.js +2 -0
  172. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  173. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  174. package/Libraries/Types/CoreEventTypes.js +4 -6
  175. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  176. package/Libraries/Utilities/Appearance.js +3 -1
  177. package/Libraries/Utilities/BackHandler.android.js +6 -18
  178. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  179. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  180. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  181. package/Libraries/Utilities/HMRClient.js +3 -4
  182. package/Libraries/Utilities/Platform.flow.js +2 -2
  183. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  184. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  185. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  186. package/Libraries/Utilities/useMergeRefs.js +26 -7
  187. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  188. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  189. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  190. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  191. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  192. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  193. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  194. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  196. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  198. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  200. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  201. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  202. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  203. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  204. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  205. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  206. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  207. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  208. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  209. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  210. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  211. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  212. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  213. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  214. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  215. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  222. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  223. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  228. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  229. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  230. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  231. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  232. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  233. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  234. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  236. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  237. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  239. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  240. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  242. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  245. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  248. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  249. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  250. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  256. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  257. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  259. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  260. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  261. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  262. package/PropertySheets/Bundle.Common.targets +1 -1
  263. package/PropertySheets/Bundle.props +3 -0
  264. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  265. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  266. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  267. package/ReactCommon/ReactCommon.vcxproj +5 -0
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  275. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
  276. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  277. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  278. package/Shared/InspectorPackagerConnection.cpp +3 -6
  279. package/Shared/InspectorPackagerConnection.h +2 -2
  280. package/Shared/InstanceManager.h +1 -1
  281. package/Shared/OInstance.h +1 -1
  282. package/Shared/Shared.vcxitems +17 -2
  283. package/Shared/Shared.vcxitems.filters +3 -1
  284. package/Shared/TurboModuleManager.cpp +29 -4
  285. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  286. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  287. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  288. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  289. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  290. package/codegen/NativePerformanceSpec.g.h +127 -3
  291. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  292. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  293. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  294. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  295. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  296. package/codegen/react/components/rnwcore/Props.h +1 -0
  297. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  298. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  299. package/codegen/react/components/rnwcore/States.h +0 -12
  300. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  301. package/codegen/rnwcoreJSI.h +942 -511
  302. package/index.js +10 -3
  303. package/index.windows.js +10 -3
  304. package/jest/setup.js +36 -1
  305. package/just-task.js +15 -0
  306. package/package.json +22 -22
  307. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  308. package/src/private/animated/useAnimatedPropsMemo.js +348 -0
  309. package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
  310. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  311. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  312. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  313. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  314. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  315. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  316. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  317. package/src/private/devmenu/DevMenu.d.ts +20 -0
  318. package/src/private/devmenu/DevMenu.js +31 -0
  319. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  320. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  321. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  322. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  323. package/src/private/setup/setUpDOM.js +14 -6
  324. package/src/private/setup/setUpMutationObserver.js +5 -0
  325. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  326. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  327. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  328. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  329. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  330. package/src/private/specs/modules/NativeAppearance.js +4 -10
  331. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  332. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  333. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  334. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  335. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  336. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  337. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  338. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  339. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  340. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  341. package/src/private/webapis/performance/EventTiming.js +13 -8
  342. package/src/private/webapis/performance/Performance.js +66 -73
  343. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  344. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  345. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  346. package/src/private/webapis/performance/UserTiming.js +11 -7
  347. package/src/private/webapis/performance/Utilities.js +18 -0
  348. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  349. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  350. package/templates/cpp-lib/template.config.js +13 -7
  351. package/templates/templateUtils.js +10 -0
  352. package/types/index.d.ts +1 -1
  353. package/types/public/ReactNativeTypes.d.ts +4 -8
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  356. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  357. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  358. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  359. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  360. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  361. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  362. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  363. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  364. package/src/private/components/useSyncOnScroll.js +0 -48
  365. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  366. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  367. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  368. package/types/experimental.d.ts +0 -59
  369. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -19,9 +19,11 @@ import * as React from 'react';
19
19
 
20
20
  const MAX_DEPTH = 5;
21
21
 
22
- /* $FlowIssue[incompatible-type-guard] - Flow does not know that the prototype
23
- and ReactElement checks preserve the type refinement of `value`. */
24
- function isPlainObject(value: mixed): value is $ReadOnly<{[string]: mixed}> {
22
+ export function isPlainObject(
23
+ value: mixed,
24
+ /* $FlowIssue[incompatible-type-guard] - Flow does not know that the prototype
25
+ and ReactElement checks preserve the type refinement of `value`. */
26
+ ): value is $ReadOnly<{[string]: mixed}> {
25
27
  return (
26
28
  value !== null &&
27
29
  typeof value === 'object' &&
@@ -109,6 +111,14 @@ export default class AnimatedObject extends AnimatedWithChildren {
109
111
  });
110
112
  }
111
113
 
114
+ __getValueWithStaticObject(staticObject: mixed): any {
115
+ const nodes = this.#nodes;
116
+ let index = 0;
117
+ // NOTE: We can depend on `this._value` and `staticObject` sharing a
118
+ // structure because of `useAnimatedPropsMemo`.
119
+ return mapAnimatedNodes(staticObject, () => nodes[index++].__getValue());
120
+ }
121
+
112
122
  __getAnimatedValue(): any {
113
123
  return mapAnimatedNodes(this._value, node => {
114
124
  return node.__getAnimatedValue();
@@ -8,42 +8,44 @@
8
8
  * @format
9
9
  */
10
10
 
11
- 'use strict';
12
-
13
11
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
12
+ import type {AnimatedStyleAllowlist} from './AnimatedStyle';
14
13
 
14
+ import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
15
15
  import {findNodeHandle} from '../../ReactNative/RendererProxy';
16
16
  import {AnimatedEvent} from '../AnimatedEvent';
17
- import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
18
17
  import AnimatedNode from './AnimatedNode';
19
18
  import AnimatedObject from './AnimatedObject';
20
19
  import AnimatedStyle from './AnimatedStyle';
21
20
  import invariant from 'invariant';
22
21
 
22
+ export type AnimatedPropsAllowlist = $ReadOnly<{
23
+ style?: ?AnimatedStyleAllowlist,
24
+ [string]: true,
25
+ }>;
26
+
23
27
  function createAnimatedProps(
24
- inputProps: Object,
25
- ): [$ReadOnlyArray<string>, $ReadOnlyArray<AnimatedNode>, Object] {
28
+ inputProps: {[string]: mixed},
29
+ allowlist: ?AnimatedPropsAllowlist,
30
+ ): [$ReadOnlyArray<string>, $ReadOnlyArray<AnimatedNode>, {[string]: mixed}] {
26
31
  const nodeKeys: Array<string> = [];
27
32
  const nodes: Array<AnimatedNode> = [];
28
- const props: Object = {};
33
+ const props: {[string]: mixed} = {};
29
34
 
30
35
  const keys = Object.keys(inputProps);
31
36
  for (let ii = 0, length = keys.length; ii < length; ii++) {
32
37
  const key = keys[ii];
33
38
  const value = inputProps[key];
34
39
 
35
- if (key === 'style') {
36
- const node = new AnimatedStyle(value);
37
- nodeKeys.push(key);
38
- nodes.push(node);
39
- props[key] = node;
40
- } else if (value instanceof AnimatedNode) {
41
- const node = value;
42
- nodeKeys.push(key);
43
- nodes.push(node);
44
- props[key] = node;
45
- } else {
46
- const node = AnimatedObject.from(value);
40
+ if (allowlist == null || Object.hasOwn(allowlist, key)) {
41
+ let node;
42
+ if (key === 'style') {
43
+ node = AnimatedStyle.from(value, allowlist?.style);
44
+ } else if (value instanceof AnimatedNode) {
45
+ node = value;
46
+ } else {
47
+ node = AnimatedObject.from(value);
48
+ }
47
49
  if (node == null) {
48
50
  props[key] = value;
49
51
  } else {
@@ -51,6 +53,20 @@ function createAnimatedProps(
51
53
  nodes.push(node);
52
54
  props[key] = node;
53
55
  }
56
+ } else {
57
+ if (__DEV__) {
58
+ // WARNING: This is a potentially expensive check that we should only
59
+ // do in development. Without this check in development, it might be
60
+ // difficult to identify which props need to be allowlisted.
61
+ if (AnimatedObject.from(inputProps[key]) != null) {
62
+ console.error(
63
+ `AnimatedProps: ${key} is not allowlisted for animation, but it ` +
64
+ 'contains AnimatedNode values; props allowing animation: ',
65
+ allowlist,
66
+ );
67
+ }
68
+ }
69
+ props[key] = value;
54
70
  }
55
71
  }
56
72
 
@@ -58,29 +74,32 @@ function createAnimatedProps(
58
74
  }
59
75
 
60
76
  export default class AnimatedProps extends AnimatedNode {
77
+ #animatedView: any = null;
78
+ #callback: () => void;
61
79
  #nodeKeys: $ReadOnlyArray<string>;
62
80
  #nodes: $ReadOnlyArray<AnimatedNode>;
81
+ #props: {[string]: mixed};
63
82
 
64
- _animatedView: any = null;
65
- _props: Object;
66
- _callback: () => void;
67
-
68
- constructor(inputProps: Object, callback: () => void) {
83
+ constructor(
84
+ inputProps: {[string]: mixed},
85
+ callback: () => void,
86
+ allowlist?: ?AnimatedPropsAllowlist,
87
+ ) {
69
88
  super();
70
- const [nodeKeys, nodes, props] = createAnimatedProps(inputProps);
89
+ const [nodeKeys, nodes, props] = createAnimatedProps(inputProps, allowlist);
71
90
  this.#nodeKeys = nodeKeys;
72
91
  this.#nodes = nodes;
73
- this._props = props;
74
- this._callback = callback;
92
+ this.#props = props;
93
+ this.#callback = callback;
75
94
  }
76
95
 
77
96
  __getValue(): Object {
78
- const props: {[string]: any | ((...args: any) => void)} = {};
97
+ const props: {[string]: mixed} = {};
79
98
 
80
- const keys = Object.keys(this._props);
99
+ const keys = Object.keys(this.#props);
81
100
  for (let ii = 0, length = keys.length; ii < length; ii++) {
82
101
  const key = keys[ii];
83
- const value = this._props[key];
102
+ const value = this.#props[key];
84
103
 
85
104
  if (value instanceof AnimatedNode) {
86
105
  props[key] = value.__getValue();
@@ -94,8 +113,33 @@ export default class AnimatedProps extends AnimatedNode {
94
113
  return props;
95
114
  }
96
115
 
116
+ /**
117
+ * Creates a new `props` object that contains the same props as the supplied
118
+ * `staticProps` object, except with animated nodes for any props that were
119
+ * created by this `AnimatedProps` instance.
120
+ */
121
+ __getValueWithStaticProps(staticProps: Object): Object {
122
+ const props: {[string]: mixed} = {...staticProps};
123
+
124
+ const keys = Object.keys(staticProps);
125
+ for (let ii = 0, length = keys.length; ii < length; ii++) {
126
+ const key = keys[ii];
127
+ const maybeNode = this.#props[key];
128
+
129
+ if (key === 'style' && maybeNode instanceof AnimatedStyle) {
130
+ props[key] = maybeNode.__getValueWithStaticStyle(staticProps.style);
131
+ } else if (maybeNode instanceof AnimatedNode) {
132
+ props[key] = maybeNode.__getValue();
133
+ } else if (maybeNode instanceof AnimatedEvent) {
134
+ props[key] = maybeNode.__getHandler();
135
+ }
136
+ }
137
+
138
+ return props;
139
+ }
140
+
97
141
  __getAnimatedValue(): Object {
98
- const props: {[string]: any} = {};
142
+ const props: {[string]: mixed} = {};
99
143
 
100
144
  const nodeKeys = this.#nodeKeys;
101
145
  const nodes = this.#nodes;
@@ -117,10 +161,10 @@ export default class AnimatedProps extends AnimatedNode {
117
161
  }
118
162
 
119
163
  __detach(): void {
120
- if (this.__isNative && this._animatedView) {
164
+ if (this.__isNative && this.#animatedView) {
121
165
  this.__disconnectAnimatedView();
122
166
  }
123
- this._animatedView = null;
167
+ this.#animatedView = null;
124
168
 
125
169
  const nodes = this.#nodes;
126
170
  for (let ii = 0, length = nodes.length; ii < length; ii++) {
@@ -132,7 +176,7 @@ export default class AnimatedProps extends AnimatedNode {
132
176
  }
133
177
 
134
178
  update(): void {
135
- this._callback();
179
+ this.#callback();
136
180
  }
137
181
 
138
182
  __makeNative(platformConfig: ?PlatformConfig): void {
@@ -150,17 +194,17 @@ export default class AnimatedProps extends AnimatedNode {
150
194
  // where it will be needed to traverse the graph of attached values.
151
195
  super.__setPlatformConfig(platformConfig);
152
196
 
153
- if (this._animatedView) {
197
+ if (this.#animatedView) {
154
198
  this.__connectAnimatedView();
155
199
  }
156
200
  }
157
201
  }
158
202
 
159
203
  setNativeView(animatedView: any): void {
160
- if (this._animatedView === animatedView) {
204
+ if (this.#animatedView === animatedView) {
161
205
  return;
162
206
  }
163
- this._animatedView = animatedView;
207
+ this.#animatedView = animatedView;
164
208
  if (this.__isNative) {
165
209
  this.__connectAnimatedView();
166
210
  }
@@ -168,11 +212,14 @@ export default class AnimatedProps extends AnimatedNode {
168
212
 
169
213
  __connectAnimatedView(): void {
170
214
  invariant(this.__isNative, 'Expected node to be marked as "native"');
171
- const nativeViewTag: ?number = findNodeHandle(this._animatedView);
172
- invariant(
173
- nativeViewTag != null,
174
- 'Unable to locate attached view in the native tree',
175
- );
215
+ let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
216
+ if (nativeViewTag == null) {
217
+ if (process.env.NODE_ENV === 'test') {
218
+ nativeViewTag = -1;
219
+ } else {
220
+ throw new Error('Unable to locate attached view in the native tree');
221
+ }
222
+ }
176
223
  NativeAnimatedHelper.API.connectAnimatedNodeToView(
177
224
  this.__getNativeTag(),
178
225
  nativeViewTag,
@@ -181,11 +228,14 @@ export default class AnimatedProps extends AnimatedNode {
181
228
 
182
229
  __disconnectAnimatedView(): void {
183
230
  invariant(this.__isNative, 'Expected node to be marked as "native"');
184
- const nativeViewTag: ?number = findNodeHandle(this._animatedView);
185
- invariant(
186
- nativeViewTag != null,
187
- 'Unable to locate attached view in the native tree',
188
- );
231
+ let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
232
+ if (nativeViewTag == null) {
233
+ if (process.env.NODE_ENV === 'test') {
234
+ nativeViewTag = -1;
235
+ } else {
236
+ throw new Error('Unable to locate attached view in the native tree');
237
+ }
238
+ }
189
239
  NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(
190
240
  this.__getNativeTag(),
191
241
  nativeViewTag,
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ * @format
9
+ */
10
+
11
+ import type {PlatformConfig} from '../AnimatedPlatformConfig';
12
+ import type {AnimatedStyleAllowlist} from './AnimatedStyle';
13
+
14
+ import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
15
+ import {findNodeHandle} from '../../ReactNative/RendererProxy';
16
+ import {AnimatedEvent} from '../AnimatedEvent';
17
+ import AnimatedNode from './AnimatedNode';
18
+ import AnimatedObject from './AnimatedObject';
19
+ import AnimatedStyle from './AnimatedStyle';
20
+ import invariant from 'invariant';
21
+
22
+ export type AnimatedPropsAllowlist = $ReadOnly<{
23
+ style?: ?AnimatedStyleAllowlist,
24
+ [string]: true,
25
+ }>;
26
+
27
+ function createAnimatedProps(
28
+ inputProps: {[string]: mixed},
29
+ allowlist: ?AnimatedPropsAllowlist,
30
+ ): [$ReadOnlyArray<string>, $ReadOnlyArray<AnimatedNode>, {[string]: mixed}] {
31
+ const nodeKeys: Array<string> = [];
32
+ const nodes: Array<AnimatedNode> = [];
33
+ const props: {[string]: mixed} = {};
34
+
35
+ const keys = Object.keys(inputProps);
36
+ for (let ii = 0, length = keys.length; ii < length; ii++) {
37
+ const key = keys[ii];
38
+ const value = inputProps[key];
39
+
40
+ if (allowlist == null || hasOwn(allowlist, key)) {
41
+ let node;
42
+ if (key === 'style') {
43
+ node = AnimatedStyle.from(value, allowlist?.style);
44
+ } else if (value instanceof AnimatedNode) {
45
+ node = value;
46
+ } else {
47
+ node = AnimatedObject.from(value);
48
+ }
49
+ if (node == null) {
50
+ props[key] = value;
51
+ } else {
52
+ nodeKeys.push(key);
53
+ nodes.push(node);
54
+ props[key] = node;
55
+ }
56
+ } else {
57
+ if (__DEV__) {
58
+ // WARNING: This is a potentially expensive check that we should only
59
+ // do in development. Without this check in development, it might be
60
+ // difficult to identify which props need to be allowlisted.
61
+ if (AnimatedObject.from(inputProps[key]) != null) {
62
+ console.error(
63
+ `AnimatedProps: ${key} is not allowlisted for animation, but it ` +
64
+ 'contains AnimatedNode values; props allowing animation: ',
65
+ allowlist,
66
+ );
67
+ }
68
+ }
69
+ props[key] = value;
70
+ }
71
+ }
72
+
73
+ return [nodeKeys, nodes, props];
74
+ }
75
+
76
+ export default class AnimatedProps extends AnimatedNode {
77
+ #animatedView: any = null;
78
+ #callback: () => void;
79
+ #nodeKeys: $ReadOnlyArray<string>;
80
+ #nodes: $ReadOnlyArray<AnimatedNode>;
81
+ #props: {[string]: mixed};
82
+
83
+ constructor(
84
+ inputProps: {[string]: mixed},
85
+ callback: () => void,
86
+ allowlist?: ?AnimatedPropsAllowlist,
87
+ ) {
88
+ super();
89
+ const [nodeKeys, nodes, props] = createAnimatedProps(inputProps, allowlist);
90
+ this.#nodeKeys = nodeKeys;
91
+ this.#nodes = nodes;
92
+ this.#props = props;
93
+ this.#callback = callback;
94
+ }
95
+
96
+ __getValue(): Object {
97
+ const props: {[string]: mixed} = {};
98
+
99
+ const keys = Object.keys(this.#props);
100
+ for (let ii = 0, length = keys.length; ii < length; ii++) {
101
+ const key = keys[ii];
102
+ const value = this.#props[key];
103
+
104
+ if (value instanceof AnimatedNode) {
105
+ props[key] = value.__getValue();
106
+ } else if (value instanceof AnimatedEvent) {
107
+ props[key] = value.__getHandler();
108
+ } else {
109
+ props[key] = value;
110
+ }
111
+ }
112
+
113
+ return props;
114
+ }
115
+
116
+ /**
117
+ * Creates a new `props` object that contains the same props as the supplied
118
+ * `staticProps` object, except with animated nodes for any props that were
119
+ * created by this `AnimatedProps` instance.
120
+ */
121
+ __getValueWithStaticProps(staticProps: Object): Object {
122
+ const props: {[string]: mixed} = {...staticProps};
123
+
124
+ const keys = Object.keys(staticProps);
125
+ for (let ii = 0, length = keys.length; ii < length; ii++) {
126
+ const key = keys[ii];
127
+ const maybeNode = this.#props[key];
128
+
129
+ if (key === 'style' && maybeNode instanceof AnimatedStyle) {
130
+ props[key] = maybeNode.__getValueWithStaticStyle(staticProps.style);
131
+ } else if (maybeNode instanceof AnimatedNode) {
132
+ props[key] = maybeNode.__getValue();
133
+ } else if (maybeNode instanceof AnimatedEvent) {
134
+ props[key] = maybeNode.__getHandler();
135
+ }
136
+ }
137
+
138
+ return props;
139
+ }
140
+
141
+ __getAnimatedValue(): Object {
142
+ const props: {[string]: mixed} = {};
143
+
144
+ const nodeKeys = this.#nodeKeys;
145
+ const nodes = this.#nodes;
146
+ for (let ii = 0, length = nodes.length; ii < length; ii++) {
147
+ const key = nodeKeys[ii];
148
+ const node = nodes[ii];
149
+ props[key] = node.__getAnimatedValue();
150
+ }
151
+
152
+ return props;
153
+ }
154
+
155
+ __attach(): void {
156
+ const nodes = this.#nodes;
157
+ for (let ii = 0, length = nodes.length; ii < length; ii++) {
158
+ const node = nodes[ii];
159
+ node.__addChild(this);
160
+ }
161
+ }
162
+
163
+ __detach(): void {
164
+ if (this.__isNative && this.#animatedView) {
165
+ this.__disconnectAnimatedView();
166
+ }
167
+ this.#animatedView = null;
168
+
169
+ const nodes = this.#nodes;
170
+ for (let ii = 0, length = nodes.length; ii < length; ii++) {
171
+ const node = nodes[ii];
172
+ node.__removeChild(this);
173
+ }
174
+
175
+ super.__detach();
176
+ }
177
+
178
+ update(): void {
179
+ this.#callback();
180
+ }
181
+
182
+ __makeNative(platformConfig: ?PlatformConfig): void {
183
+ const nodes = this.#nodes;
184
+ for (let ii = 0, length = nodes.length; ii < length; ii++) {
185
+ const node = nodes[ii];
186
+ node.__makeNative(platformConfig);
187
+ }
188
+
189
+ if (!this.__isNative) {
190
+ this.__isNative = true;
191
+
192
+ // Since this does not call the super.__makeNative, we need to store the
193
+ // supplied platformConfig here, before calling __connectAnimatedView
194
+ // where it will be needed to traverse the graph of attached values.
195
+ super.__setPlatformConfig(platformConfig);
196
+
197
+ if (this.#animatedView) {
198
+ this.__connectAnimatedView();
199
+ }
200
+ }
201
+ }
202
+
203
+ setNativeView(animatedView: any): void {
204
+ if (this.#animatedView === animatedView) {
205
+ return;
206
+ }
207
+ this.#animatedView = animatedView;
208
+ if (this.__isNative) {
209
+ this.__connectAnimatedView();
210
+ }
211
+ }
212
+
213
+ __connectAnimatedView(): void {
214
+ invariant(this.__isNative, 'Expected node to be marked as "native"');
215
+ let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
216
+ if (nativeViewTag == null) {
217
+ if (process.env.NODE_ENV === 'test') {
218
+ nativeViewTag = -1;
219
+ } else {
220
+ throw new Error('Unable to locate attached view in the native tree');
221
+ }
222
+ }
223
+ NativeAnimatedHelper.API.connectAnimatedNodeToView(
224
+ this.__getNativeTag(),
225
+ nativeViewTag,
226
+ );
227
+ }
228
+
229
+ __disconnectAnimatedView(): void {
230
+ invariant(this.__isNative, 'Expected node to be marked as "native"');
231
+ let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
232
+ if (nativeViewTag == null) {
233
+ if (process.env.NODE_ENV === 'test') {
234
+ nativeViewTag = -1;
235
+ } else {
236
+ throw new Error('Unable to locate attached view in the native tree');
237
+ }
238
+ }
239
+ NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(
240
+ this.__getNativeTag(),
241
+ nativeViewTag,
242
+ );
243
+ }
244
+
245
+ __restoreDefaultValues(): void {
246
+ // When using the native driver, view properties need to be restored to
247
+ // their default values manually since react no longer tracks them. This
248
+ // is needed to handle cases where a prop driven by native animated is removed
249
+ // after having been changed natively by an animation.
250
+ if (this.__isNative) {
251
+ NativeAnimatedHelper.API.restoreDefaultValues(this.__getNativeTag());
252
+ }
253
+ }
254
+
255
+ __getNativeConfig(): Object {
256
+ const platformConfig = this.__getPlatformConfig();
257
+ const propsConfig: {[string]: number} = {};
258
+
259
+ const nodeKeys = this.#nodeKeys;
260
+ const nodes = this.#nodes;
261
+ for (let ii = 0, length = nodes.length; ii < length; ii++) {
262
+ const key = nodeKeys[ii];
263
+ const node = nodes[ii];
264
+ node.__makeNative(platformConfig);
265
+ propsConfig[key] = node.__getNativeTag();
266
+ }
267
+
268
+ return {
269
+ type: 'props',
270
+ props: propsConfig,
271
+ };
272
+ }
273
+ }
274
+
275
+ // Supported versions of JSC do not implement the newer Object.hasOwn. Remove
276
+ // this shim when they do.
277
+ // $FlowIgnore[method-unbinding]
278
+ const _hasOwnProp = Object.prototype.hasOwnProperty;
279
+ const hasOwn: (obj: $ReadOnly<{...}>, prop: string) => boolean =
280
+ // $FlowIgnore[method-unbinding]
281
+ Object.hasOwn ?? ((obj, prop) => _hasOwnProp.call(obj, prop));