react-native-windows 0.71.7 → 0.72.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 (620) hide show
  1. package/.flowconfig +13 -3
  2. package/Directory.Build.props +19 -19
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  4. package/Libraries/Alert/Alert.d.ts +4 -4
  5. package/Libraries/Alert/Alert.windows.js +2 -0
  6. package/Libraries/Alert/NativeDialogManagerWindows.js +1 -0
  7. package/Libraries/Animated/Animated.d.ts +17 -6
  8. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  9. package/Libraries/Animated/bezier.js +1 -1
  10. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  11. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  13. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  14. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  16. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  17. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  18. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  19. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  20. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  21. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  22. package/Libraries/Animated/useAnimatedProps.js +7 -10
  23. package/Libraries/AppTheme/AppTheme.js +1 -0
  24. package/Libraries/AppTheme/AppThemeTypes.d.ts +1 -1
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.windows.js +3 -2
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Flyout/Flyout.d.ts +55 -19
  40. package/Libraries/Components/Flyout/Flyout.js +110 -51
  41. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +45 -0
  42. package/Libraries/Components/Glyph/Glyph.d.ts +29 -12
  43. package/Libraries/Components/Glyph/Glyph.js +43 -30
  44. package/Libraries/Components/Glyph/GlyphNativeComponent.js +31 -0
  45. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  46. package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +2 -2
  47. package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
  48. package/Libraries/Components/Popup/Popup.d.ts +41 -19
  49. package/Libraries/Components/Popup/Popup.js +86 -52
  50. package/Libraries/Components/Popup/PopupNativeComponent.js +49 -0
  51. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  52. package/Libraries/Components/Pressable/Pressable.js +1 -1
  53. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  54. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -0
  55. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  56. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +1 -2
  57. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  58. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  59. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  60. package/Libraries/Components/ScrollView/ScrollView.windows.js +1939 -0
  61. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  62. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +175 -0
  63. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  64. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  65. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  66. package/Libraries/Components/Switch/Switch.js +3 -1
  67. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  68. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  69. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  70. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  71. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  72. package/Libraries/Components/TextInput/TextInput.js +130 -103
  73. package/Libraries/Components/TextInput/TextInput.windows.js +152 -115
  74. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
  75. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  76. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  77. package/Libraries/Components/Touchable/Touchable.js +6 -3
  78. package/Libraries/Components/Touchable/Touchable.windows.js +6 -3
  79. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  80. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +2 -1
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  82. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  83. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -0
  84. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  85. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  86. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -2
  87. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
  88. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  89. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  90. package/Libraries/Components/View/View.js +71 -45
  91. package/Libraries/Components/View/View.windows.js +40 -16
  92. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  93. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  94. package/Libraries/Components/View/ViewAccessibility.windows.js +9 -0
  95. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  96. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  97. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  98. package/Libraries/Components/View/ViewPropTypes.windows.js +3 -1
  99. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  100. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  101. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  102. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  103. package/Libraries/Core/ExceptionsManager.js +2 -2
  104. package/Libraries/Core/InitializeCore.js +2 -1
  105. package/Libraries/Core/ReactNativeVersion.js +3 -3
  106. package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
  107. package/Libraries/Core/Timers/JSTimers.js +1 -1
  108. package/Libraries/Core/Timers/immediateShim.js +1 -0
  109. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  110. package/Libraries/Core/setUpAlert.js +1 -1
  111. package/Libraries/Core/setUpDOM.js +18 -0
  112. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  113. package/Libraries/Core/setUpGlobals.js +5 -2
  114. package/Libraries/Core/setUpNavigator.js +6 -5
  115. package/Libraries/Core/setUpPerformance.js +23 -13
  116. package/Libraries/Core/setUpReactDevTools.js +2 -0
  117. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  118. package/Libraries/Core/setUpTimers.js +2 -2
  119. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  120. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  121. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  122. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  123. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  124. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  125. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  126. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  127. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  128. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  129. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  130. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  131. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +35 -0
  132. package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
  133. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  134. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  135. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  136. package/Libraries/Events/EventPolyfill.js +1 -1
  137. package/Libraries/Image/AssetRegistry.js +1 -1
  138. package/Libraries/Image/AssetSourceResolver.js +3 -3
  139. package/Libraries/Image/Image.android.js +4 -1
  140. package/Libraries/Image/Image.d.ts +63 -2
  141. package/Libraries/Image/Image.ios.js +3 -0
  142. package/Libraries/Image/Image.windows.js +3 -0
  143. package/Libraries/Image/ImageBackground.js +1 -0
  144. package/Libraries/Image/ImageProps.js +1 -1
  145. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  146. package/Libraries/Image/RelativeImageStub.js +1 -1
  147. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  148. package/Libraries/Image/resolveAssetSource.js +1 -1
  149. package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
  150. package/Libraries/Inspector/ElementBox.js +4 -1
  151. package/Libraries/Inspector/Inspector.js +5 -6
  152. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  153. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  154. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  155. package/Libraries/Interaction/PanResponder.js +5 -6
  156. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  157. package/Libraries/Linking/Linking.js +1 -4
  158. package/Libraries/Lists/FillRateHelper.js +4 -238
  159. package/Libraries/Lists/FlatList.d.ts +15 -22
  160. package/Libraries/Lists/FlatList.js +9 -6
  161. package/Libraries/Lists/SectionList.d.ts +10 -6
  162. package/Libraries/Lists/SectionList.js +5 -3
  163. package/Libraries/Lists/SectionListModern.js +3 -3
  164. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  165. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  166. package/Libraries/Lists/VirtualizedList.js +10 -1867
  167. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  168. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  169. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  170. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  171. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  172. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  173. package/Libraries/LogBox/LogBox.js +1 -1
  174. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  175. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +167 -0
  176. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +172 -0
  177. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +193 -0
  178. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  179. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  180. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +118 -0
  181. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  182. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  183. package/Libraries/Modal/Modal.js +2 -2
  184. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  185. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  186. package/Libraries/NativeComponent/BaseViewConfig.windows.js +77 -19
  187. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  188. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  189. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  190. package/Libraries/Network/RCTNetworking.android.js +2 -2
  191. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  192. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  193. package/Libraries/Network/XMLHttpRequest.js +1 -1
  194. package/Libraries/Pressability/Pressability.js +11 -5
  195. package/Libraries/Pressability/Pressability.windows.js +11 -4
  196. package/Libraries/ReactNative/AppContainer.js +7 -1
  197. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  198. package/Libraries/ReactNative/AppRegistry.js +10 -13
  199. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  200. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  201. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  202. package/Libraries/ReactNative/UIManager.js +142 -1
  203. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  204. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  205. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  206. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  207. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  208. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  209. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  210. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  211. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  212. package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
  213. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  214. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  215. package/Libraries/Share/Share.js +1 -1
  216. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  217. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  218. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  219. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  220. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  221. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  222. package/Libraries/StyleSheet/processColor.js +1 -1
  223. package/Libraries/Text/Text.d.ts +12 -2
  224. package/Libraries/Text/Text.js +50 -41
  225. package/Libraries/Text/Text.windows.js +48 -38
  226. package/Libraries/Text/TextProps.js +3 -4
  227. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  228. package/Libraries/Types/CodegenTypes.js +1 -0
  229. package/Libraries/UTFSequence.js +3 -1
  230. package/Libraries/Utilities/Appearance.d.ts +10 -0
  231. package/Libraries/Utilities/Appearance.js +13 -0
  232. package/Libraries/Utilities/Dimensions.js +1 -1
  233. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  234. package/Libraries/Utilities/HMRClient.js +16 -10
  235. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  236. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  237. package/Libraries/Utilities/LoadingView.android.js +28 -11
  238. package/Libraries/Utilities/NativeAppearance.js +1 -0
  239. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  240. package/Libraries/Utilities/PixelRatio.js +2 -2
  241. package/Libraries/Utilities/Platform.windows.js +1 -1
  242. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  243. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  244. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  245. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  246. package/Libraries/Utilities/stringifySafe.js +2 -7
  247. package/Libraries/Utilities/useColorScheme.js +1 -1
  248. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  249. package/Libraries/WebPerformance/EventCounts.js +78 -0
  250. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  251. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  252. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  253. package/Libraries/WebPerformance/Performance.js +312 -0
  254. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  255. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  256. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  257. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  258. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  259. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  260. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  261. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  262. package/Libraries/platform-types.d.ts +3 -5
  263. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  264. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  265. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  266. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +0 -15
  267. package/Microsoft.ReactNative/CompositionHwndHost.idl +6 -0
  268. package/Microsoft.ReactNative/CompositionRootView.idl +35 -0
  269. package/Microsoft.ReactNative/CompositionSwitcher.idl +19 -0
  270. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +174 -0
  271. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +91 -0
  272. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +48 -0
  273. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +48 -0
  274. package/Microsoft.ReactNative/Fabric/ComponentView.h +19 -2
  275. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +144 -0
  276. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +63 -0
  277. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +27 -6
  278. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +97 -0
  279. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +227 -0
  280. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +38 -0
  281. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +112 -95
  282. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +12 -8
  283. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +0 -2
  284. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +27 -6
  285. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +8 -0
  286. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +147 -0
  287. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +46 -0
  288. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +31 -4
  289. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +37 -0
  290. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +255 -50
  291. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +34 -15
  292. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +127 -47
  293. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +11 -7
  294. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +109 -39
  295. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +10 -7
  296. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +106 -0
  297. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +63 -0
  298. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +116 -0
  299. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +43 -0
  300. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +53 -38
  301. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +12 -8
  302. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +262 -0
  303. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +62 -0
  304. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +35 -30
  305. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +11 -9
  306. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +9 -0
  307. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -0
  308. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +2 -1
  309. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +72 -0
  310. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +16 -0
  311. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +168 -0
  312. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +49 -0
  313. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +19 -53
  314. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -3
  315. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +8 -9
  316. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +100 -0
  317. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +43 -0
  318. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +61 -0
  319. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +34 -0
  320. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +42 -0
  321. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +10 -0
  322. package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +248 -0
  323. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +5 -0
  324. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +135 -4
  325. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +18 -240
  326. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -17
  327. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +13 -2
  328. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +87 -0
  329. package/Microsoft.ReactNative/IReactContext.cpp +4 -0
  330. package/Microsoft.ReactNative/IReactContext.h +1 -0
  331. package/Microsoft.ReactNative/IReactContext.idl +5 -0
  332. package/Microsoft.ReactNative/IReactDispatcher.cpp +4 -0
  333. package/Microsoft.ReactNative/IReactDispatcher.h +1 -0
  334. package/Microsoft.ReactNative/IReactPackageBuilderFabric.idl +23 -0
  335. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +23 -0
  336. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +4 -118
  337. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -7
  338. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +2 -2
  339. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
  340. package/Microsoft.ReactNative/Modules/AlertModule.cpp +100 -4
  341. package/Microsoft.ReactNative/Modules/AlertModule.h +4 -0
  342. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedModule.cpp +9 -0
  343. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedModule.h +2 -0
  344. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +7 -5
  345. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +17 -3
  346. package/Microsoft.ReactNative/Modules/Animated/ValueAnimatedNode.h +1 -0
  347. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +4 -0
  348. package/Microsoft.ReactNative/Modules/AppearanceModule.h +3 -0
  349. package/Microsoft.ReactNative/Modules/ClipboardModule.cpp +4 -4
  350. package/Microsoft.ReactNative/Modules/ClipboardModule.h +2 -2
  351. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +27 -7
  352. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +9 -5
  353. package/Microsoft.ReactNative/Modules/LinkingManagerModule.cpp +10 -12
  354. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +4 -4
  355. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -1
  356. package/Microsoft.ReactNative/QuirkSettings.cpp +17 -0
  357. package/Microsoft.ReactNative/QuirkSettings.h +5 -0
  358. package/Microsoft.ReactNative/QuirkSettings.idl +6 -0
  359. package/Microsoft.ReactNative/ReactApplication.cpp +8 -0
  360. package/Microsoft.ReactNative/ReactApplication.h +3 -0
  361. package/Microsoft.ReactNative/ReactApplication.idl +3 -0
  362. package/Microsoft.ReactNative/ReactCoreInjection.cpp +29 -0
  363. package/Microsoft.ReactNative/ReactCoreInjection.h +6 -0
  364. package/Microsoft.ReactNative/ReactCoreInjection.idl +13 -0
  365. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +7 -0
  366. package/Microsoft.ReactNative/ReactHost/MsoReactContext.h +1 -0
  367. package/Microsoft.ReactNative/ReactHost/React.h +2 -0
  368. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +57 -16
  369. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -0
  370. package/Microsoft.ReactNative/ReactInstanceSettings.h +12 -0
  371. package/Microsoft.ReactNative/ReactInstanceSettings.idl +6 -0
  372. package/Microsoft.ReactNative/ReactNativeHost.cpp +17 -0
  373. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +18 -0
  374. package/Microsoft.ReactNative/ReactPackageBuilder.h +24 -1
  375. package/Microsoft.ReactNative/ReactRootView.cpp +2 -2
  376. package/Microsoft.ReactNative/RedBox.cpp +2 -1
  377. package/Microsoft.ReactNative/Utils/Helpers.cpp +0 -32
  378. package/Microsoft.ReactNative/Utils/Helpers.h +0 -8
  379. package/Microsoft.ReactNative/Utils/ImageUtils.cpp +69 -6
  380. package/Microsoft.ReactNative/Utils/ImageUtils.h +3 -1
  381. package/Microsoft.ReactNative/Utils/KeyboardUtils.cpp +416 -0
  382. package/Microsoft.ReactNative/Utils/KeyboardUtils.h +15 -0
  383. package/Microsoft.ReactNative/Utils/TransformableText.h +1 -0
  384. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -9
  385. package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -2
  386. package/Microsoft.ReactNative/ViewProps.idl +30 -0
  387. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +6 -2
  388. package/Microsoft.ReactNative/Views/DevMenu.cpp +369 -230
  389. package/Microsoft.ReactNative/Views/DevMenu.h +3 -15
  390. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +6 -3
  391. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +11 -3
  392. package/Microsoft.ReactNative/Views/Image/ImageViewManager.h +5 -1
  393. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +29 -22
  394. package/Microsoft.ReactNative/Views/Image/ReactImage.h +2 -2
  395. package/Microsoft.ReactNative/Views/KeyboardEventHandler.cpp +10 -405
  396. package/Microsoft.ReactNative/Views/KeyboardEventHandler.h +0 -3
  397. package/Microsoft.ReactNative/Views/PopupViewManager.cpp +1 -0
  398. package/Microsoft.ReactNative/Views/ScrollViewManager.cpp +2 -2
  399. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +7 -0
  400. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +3 -0
  401. package/Microsoft.ReactNative/Views/Text/TextHitTestUtils.cpp +6 -1
  402. package/Microsoft.ReactNative/Views/Text/TextPropertyChangedParentVisitor.cpp +1 -0
  403. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +38 -2
  404. package/Microsoft.ReactNative/Views/TextViewManager.cpp +3 -0
  405. package/Microsoft.ReactNative/Views/TouchEventHandler.h +0 -4
  406. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +0 -8
  407. package/Microsoft.ReactNative/Views/ViewPanel.cpp +1 -1
  408. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +12 -3
  409. package/Microsoft.ReactNative/XamlHelper.cpp +36 -0
  410. package/Microsoft.ReactNative/XamlHelper.h +27 -0
  411. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +4 -4
  412. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +4 -4
  413. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  414. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +10 -8
  415. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +3 -3
  416. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +4 -1
  417. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +3 -0
  418. package/Microsoft.ReactNative.Cxx/NativeModules.h +16 -1
  419. package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +2 -0
  420. package/Microsoft.ReactNative.Managed/packages.lock.json +5 -5
  421. package/PropertySheets/External/Microsoft.ReactNative.Cpp.ProjectReferences.props +3 -0
  422. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  423. package/PropertySheets/JSEngine.props +2 -3
  424. package/PropertySheets/Warnings.props +1 -1
  425. package/ReactCommon/ReactCommon.vcxproj +2 -4
  426. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  427. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +1 -1
  428. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.cpp +60 -0
  429. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.h +60 -0
  430. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +116 -0
  431. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +63 -0
  432. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -2
  433. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +237 -0
  434. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +59 -0
  435. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +159 -0
  436. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +94 -0
  437. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +465 -0
  438. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +116 -0
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +98 -0
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +362 -0
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +326 -0
  442. package/ReactCommon/Yoga.cpp +60 -127
  443. package/Scripts/OfficeReact.Win32.nuspec +1 -0
  444. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +1 -0
  445. package/Scripts/rnw-dependencies.ps1 +12 -4
  446. package/Shared/Composition/CompositionSwitcher.interop.h +1 -0
  447. package/Shared/DevServerHelper.h +11 -2
  448. package/Shared/DevSettings.h +1 -0
  449. package/Shared/DevSupportManager.cpp +11 -1
  450. package/Shared/DevSupportManager.h +1 -0
  451. package/Shared/HermesRuntimeHolder.cpp +53 -30
  452. package/Shared/HermesRuntimeHolder.h +26 -11
  453. package/Shared/HermesSamplingProfiler.cpp +61 -8
  454. package/Shared/HermesSamplingProfiler.h +6 -3
  455. package/Shared/HermesShim.cpp +86 -82
  456. package/Shared/HermesShim.h +28 -8
  457. package/Shared/JSI/ChakraRuntime.cpp +7 -4
  458. package/Shared/JSI/ChakraRuntime.h +4 -4
  459. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +2 -0
  460. package/Shared/JSI/RuntimeHolder.h +2 -2
  461. package/Shared/Logging.cpp +1 -1
  462. package/Shared/Modules/BlobModule.cpp +3 -4
  463. package/Shared/Modules/BlobModule.h +0 -4
  464. package/Shared/Networking/OriginPolicyHttpFilter.cpp +13 -17
  465. package/Shared/Networking/OriginPolicyHttpFilter.h +11 -12
  466. package/Shared/Networking/WinRTWebSocketResource.cpp +59 -45
  467. package/Shared/OInstance.cpp +9 -2
  468. package/Shared/Shared.vcxitems +265 -58
  469. package/Shared/Shared.vcxitems.filters +312 -42
  470. package/Shared/V8JSIRuntimeHolder.cpp +1 -0
  471. package/Shared/V8JSIRuntimeHolder.h +7 -2
  472. package/codegen/NativeAppearanceSpec.g.h +9 -3
  473. package/codegen/NativeClipboardSpec.g.h +3 -3
  474. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +51 -0
  475. package/codegen/NativeDialogManagerWindowsSpec.g.h +2 -0
  476. package/codegen/NativeFileReaderModuleSpec.g.h +6 -6
  477. package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +3 -3
  478. package/codegen/NativeImageLoaderAndroidSpec.g.h +25 -9
  479. package/codegen/NativeImageLoaderIOSSpec.g.h +20 -12
  480. package/codegen/NativeIntentAndroidSpec.g.h +15 -15
  481. package/codegen/NativeLinkingManagerSpec.g.h +12 -12
  482. package/codegen/NativePerformanceObserverSpec.g.h +48 -10
  483. package/codegen/NativePerformanceSpec.g.h +63 -0
  484. package/codegen/NativePermissionsAndroidSpec.g.h +9 -9
  485. package/codegen/NativePlatformConstantsWinSpec.g.h +1 -1
  486. package/codegen/NativePushNotificationManagerIOSSpec.g.h +6 -6
  487. package/codegen/NativeSampleTurboModuleSpec.g.h +25 -19
  488. package/codegen/NativeShareModuleSpec.g.h +9 -3
  489. package/codegen/NativeUIManagerSpec.g.h +12 -12
  490. package/codegen/react/components/rnwcore/ComponentDescriptors.h +1 -2
  491. package/codegen/react/components/rnwcore/EventEmitters.cpp +21 -29
  492. package/codegen/react/components/rnwcore/EventEmitters.h +30 -30
  493. package/codegen/react/components/rnwcore/Props.cpp +47 -48
  494. package/codegen/react/components/rnwcore/Props.h +59 -166
  495. package/codegen/react/components/rnwcore/ShadowNodes.cpp +1 -2
  496. package/codegen/react/components/rnwcore/ShadowNodes.h +11 -22
  497. package/codegen/react/components/rnwcore/States.h +15 -30
  498. package/codegen/rnwcoreJSI-generated.cpp +87 -25
  499. package/codegen/rnwcoreJSI.h +1077 -417
  500. package/generate.js +6 -1
  501. package/include/Include.vcxitems +0 -1
  502. package/include/Include.vcxitems.filters +0 -3
  503. package/index.js +56 -42
  504. package/index.windows.js +56 -42
  505. package/interface.js +1 -1
  506. package/jest/local-setup.js +33 -0
  507. package/jest/mockComponent.js +4 -2
  508. package/jest/mockNativeComponent.js +1 -1
  509. package/jest/mockScrollView.js +2 -1
  510. package/jest/react-native-env.js +1 -3
  511. package/jest/setup.js +11 -8
  512. package/just-task.js +12 -5
  513. package/package.json +32 -29
  514. package/rn-get-polyfills.js +1 -1
  515. package/template/metro.config.js +2 -0
  516. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  517. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  518. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  519. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  520. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  521. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  522. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  523. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  524. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  525. package/Libraries/Components/DatePicker/DatePickerIOS.windows.js +0 -47
  526. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  527. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  528. package/Libraries/Components/Flyout/Flyout.js.map +0 -1
  529. package/Libraries/Components/Flyout/FlyoutProps.d.ts +0 -25
  530. package/Libraries/Components/Flyout/FlyoutProps.js +0 -3
  531. package/Libraries/Components/Flyout/FlyoutProps.js.map +0 -1
  532. package/Libraries/Components/Glyph/Glyph.js.map +0 -1
  533. package/Libraries/Components/Glyph/GlyphProps.d.ts +0 -16
  534. package/Libraries/Components/Glyph/GlyphProps.js +0 -8
  535. package/Libraries/Components/Glyph/GlyphProps.js.map +0 -1
  536. package/Libraries/Components/Popup/Popup.js.map +0 -1
  537. package/Libraries/Components/Popup/PopupProps.d.ts +0 -27
  538. package/Libraries/Components/Popup/PopupProps.js +0 -8
  539. package/Libraries/Components/Popup/PopupProps.js.map +0 -1
  540. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  541. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  542. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  543. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.windows.js +0 -45
  544. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  545. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  546. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  547. package/Libraries/Components/Slider/Slider.js +0 -282
  548. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  549. package/Libraries/Interaction/Batchinator.js +0 -76
  550. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  551. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  552. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  553. package/Libraries/Lists/CellRenderMask.js +0 -155
  554. package/Libraries/Lists/ChildListCollection.js +0 -72
  555. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  556. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  557. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  558. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  559. package/Libraries/Performance/PureComponentDebug.js +0 -74
  560. package/Libraries/Reliability/UserFlow.js +0 -158
  561. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  562. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  563. package/Libraries/Utilities/MatrixMath.js +0 -748
  564. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  565. package/Libraries/Utilities/clamp.js +0 -23
  566. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  567. package/Libraries/Utilities/groupByEveryN.js +0 -51
  568. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  569. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  570. package/Libraries/Utilities/truncate.js +0 -51
  571. package/Microsoft.ReactNative/Fabric/platform/react/components/image/conversions.h +0 -5
  572. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ConcreteViewShadowNode.h +0 -5
  573. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ViewEventEmitter.h +0 -5
  574. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ViewProps.h +0 -5
  575. package/Microsoft.ReactNative/Fabric/platform/react/core/ConcreteComponentDescriptor.h +0 -5
  576. package/Microsoft.ReactNative/Fabric/platform/react/core/PropsParserContext.h +0 -5
  577. package/Microsoft.ReactNative/Fabric/platform/react/core/propsConversions.h +0 -5
  578. package/Microsoft.ReactNative/Fabric/platform/react/graphics/Color.h +0 -5
  579. package/Microsoft.ReactNative/Fabric/platform/react/imagemanager/primitives.h +0 -5
  580. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputEventEmitter.h +0 -5
  581. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputProps.h +0 -5
  582. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputShadowNode.h +0 -5
  583. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputState.h +0 -5
  584. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/conversions.h +0 -5
  585. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/primitives.h +0 -5
  586. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/propsConversions.h +0 -5
  587. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +0 -5
  588. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +0 -5
  589. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/States.h +0 -5
  590. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Float.h +0 -5
  591. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +0 -135
  592. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ConcreteComponentDescriptor.h +0 -217
  593. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/graphics/RectangleEdges.h +0 -100
  594. package/Shared/AsyncStorage/AsyncStorageManager.cpp +0 -149
  595. package/Shared/AsyncStorage/AsyncStorageManager.h +0 -71
  596. package/Shared/AsyncStorage/FollyDynamicConverter.cpp +0 -51
  597. package/Shared/AsyncStorage/FollyDynamicConverter.h +0 -24
  598. package/Shared/AsyncStorage/KeyValueStorage.cpp +0 -248
  599. package/Shared/AsyncStorage/KeyValueStorage.h +0 -50
  600. package/Shared/AsyncStorage/StorageFileIO.cpp +0 -160
  601. package/Shared/AsyncStorage/StorageFileIO.h +0 -40
  602. package/Shared/AsyncStorageModule.h +0 -25
  603. package/Shared/Modules/AsyncStorageModule.cpp +0 -87
  604. package/Shared/Modules/AsyncStorageModuleWin32.cpp +0 -496
  605. package/Shared/Modules/AsyncStorageModuleWin32.h +0 -75
  606. package/codegen/NativeDatePickerAndroidSpec.g.h +0 -33
  607. package/codegen/NativeDevSplitBundleLoaderSpec.g.h +0 -33
  608. package/include/Shared/AsyncStorageModuleWin32Config.h +0 -15
  609. package/types/index.d.ts +0 -216
  610. package/types/modules/BatchedBridge.d.ts +0 -32
  611. package/types/modules/Codegen.d.ts +0 -74
  612. package/types/modules/Devtools.d.ts +0 -31
  613. package/types/modules/LaunchScreen.d.ts +0 -18
  614. package/types/modules/globals.d.ts +0 -577
  615. package/types/private/TimerMixin.d.ts +0 -19
  616. package/types/private/Utilities.d.ts +0 -10
  617. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -205
  618. package/types/public/Insets.d.ts +0 -15
  619. package/types/public/ReactNativeRenderer.d.ts +0 -149
  620. package/types/public/ReactNativeTypes.d.ts +0 -143
@@ -18,7 +18,7 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig';
18
18
  import normalizeColor from '../../StyleSheet/normalizeColor';
19
19
  import {processColorObject} from '../../StyleSheet/PlatformColorValueTypes';
20
20
  import NativeAnimatedHelper from '../NativeAnimatedHelper';
21
- import AnimatedValue from './AnimatedValue';
21
+ import AnimatedValue, {flushValue} from './AnimatedValue';
22
22
  import AnimatedWithChildren from './AnimatedWithChildren';
23
23
 
24
24
  export type AnimatedColorConfig = $ReadOnly<{
@@ -43,10 +43,11 @@ type RgbaAnimatedValue = {
43
43
  ...
44
44
  };
45
45
 
46
+ export type InputValue = ?(RgbaValue | RgbaAnimatedValue | ColorValue);
47
+
46
48
  const NativeAnimatedAPI = NativeAnimatedHelper.API;
47
49
 
48
50
  const defaultColor: RgbaValue = {r: 0, g: 0, b: 0, a: 1.0};
49
- let _uniqueId = 1;
50
51
 
51
52
  /* eslint no-bitwise: 0 */
52
53
  function processColor(
@@ -113,22 +114,12 @@ export default class AnimatedColor extends AnimatedWithChildren {
113
114
  b: AnimatedValue;
114
115
  a: AnimatedValue;
115
116
  nativeColor: ?NativeColorValue;
116
- _listeners: {
117
- [key: string]: {
118
- r: string,
119
- g: string,
120
- b: string,
121
- a: string,
122
- ...
123
- },
124
- ...
125
- } = {};
126
-
127
- constructor(
128
- valueIn?: ?(RgbaValue | RgbaAnimatedValue | ColorValue),
129
- config?: ?AnimatedColorConfig,
130
- ) {
117
+
118
+ _suspendCallbacks: number = 0;
119
+
120
+ constructor(valueIn?: InputValue, config?: ?AnimatedColorConfig) {
131
121
  super();
122
+
132
123
  let value: RgbaValue | RgbaAnimatedValue | ColorValue =
133
124
  valueIn ?? defaultColor;
134
125
  if (isRgbaAnimatedValue(value)) {
@@ -156,7 +147,8 @@ export default class AnimatedColor extends AnimatedWithChildren {
156
147
  this.b = new AnimatedValue(initColor.b);
157
148
  this.a = new AnimatedValue(initColor.a);
158
149
  }
159
- if (this.nativeColor || (config && config.useNativeDriver)) {
150
+
151
+ if (config?.useNativeDriver) {
160
152
  this.__makeNative();
161
153
  }
162
154
  }
@@ -174,25 +166,27 @@ export default class AnimatedColor extends AnimatedWithChildren {
174
166
 
175
167
  const processedColor: RgbaValue | NativeColorValue =
176
168
  processColor(value) ?? defaultColor;
177
- if (isRgbaValue(processedColor)) {
178
- // $FlowIgnore[incompatible-type] - Type is verified above
179
- const rgbaValue: RgbaValue = processedColor;
180
- this.r.setValue(rgbaValue.r);
181
- this.g.setValue(rgbaValue.g);
182
- this.b.setValue(rgbaValue.b);
183
- this.a.setValue(rgbaValue.a);
184
- if (this.nativeColor != null) {
185
- this.nativeColor = null;
186
- shouldUpdateNodeConfig = true;
187
- }
188
- } else {
189
- // $FlowIgnore[incompatible-type] - Type is verified above
190
- const nativeColor: NativeColorValue = processedColor;
191
- if (this.nativeColor !== nativeColor) {
192
- this.nativeColor = nativeColor;
193
- shouldUpdateNodeConfig = true;
169
+ this._withSuspendedCallbacks(() => {
170
+ if (isRgbaValue(processedColor)) {
171
+ // $FlowIgnore[incompatible-type] - Type is verified above
172
+ const rgbaValue: RgbaValue = processedColor;
173
+ this.r.setValue(rgbaValue.r);
174
+ this.g.setValue(rgbaValue.g);
175
+ this.b.setValue(rgbaValue.b);
176
+ this.a.setValue(rgbaValue.a);
177
+ if (this.nativeColor != null) {
178
+ this.nativeColor = null;
179
+ shouldUpdateNodeConfig = true;
180
+ }
181
+ } else {
182
+ // $FlowIgnore[incompatible-type] - Type is verified above
183
+ const nativeColor: NativeColorValue = processedColor;
184
+ if (this.nativeColor !== nativeColor) {
185
+ this.nativeColor = nativeColor;
186
+ shouldUpdateNodeConfig = true;
187
+ }
194
188
  }
195
- }
189
+ });
196
190
 
197
191
  if (this.__isNative) {
198
192
  const nativeTag = this.__getNativeTag();
@@ -203,7 +197,12 @@ export default class AnimatedColor extends AnimatedWithChildren {
203
197
  );
204
198
  }
205
199
  NativeAnimatedAPI.unsetWaitingForIdentifier(nativeTag.toString());
200
+ } else {
201
+ flushValue(this);
206
202
  }
203
+
204
+ // $FlowFixMe[incompatible-call]
205
+ this.__callListeners(this.__getValue());
207
206
  }
208
207
 
209
208
  /**
@@ -240,50 +239,6 @@ export default class AnimatedColor extends AnimatedWithChildren {
240
239
  this.a.extractOffset();
241
240
  }
242
241
 
243
- /**
244
- * Adds an asynchronous listener to the value so you can observe updates from
245
- * animations. This is useful because there is no way to synchronously read
246
- * the value because it might be driven natively.
247
- *
248
- * Returns a string that serves as an identifier for the listener.
249
- */
250
- addListener(callback: ColorListenerCallback): string {
251
- const id = String(_uniqueId++);
252
- const jointCallback = ({value: number}: any) => {
253
- callback(this.__getValue());
254
- };
255
- this._listeners[id] = {
256
- r: this.r.addListener(jointCallback),
257
- g: this.g.addListener(jointCallback),
258
- b: this.b.addListener(jointCallback),
259
- a: this.a.addListener(jointCallback),
260
- };
261
- return id;
262
- }
263
-
264
- /**
265
- * Unregister a listener. The `id` param shall match the identifier
266
- * previously returned by `addListener()`.
267
- */
268
- removeListener(id: string): void {
269
- this.r.removeListener(this._listeners[id].r);
270
- this.g.removeListener(this._listeners[id].g);
271
- this.b.removeListener(this._listeners[id].b);
272
- this.a.removeListener(this._listeners[id].a);
273
- delete this._listeners[id];
274
- }
275
-
276
- /**
277
- * Remove all registered listeners.
278
- */
279
- removeAllListeners(): void {
280
- this.r.removeAllListeners();
281
- this.g.removeAllListeners();
282
- this.b.removeAllListeners();
283
- this.a.removeAllListeners();
284
- this._listeners = {};
285
- }
286
-
287
242
  /**
288
243
  * Stops any running animation or tracking. `callback` is invoked with the
289
244
  * final value after stopping the animation, which is useful for updating
@@ -332,6 +287,18 @@ export default class AnimatedColor extends AnimatedWithChildren {
332
287
  super.__detach();
333
288
  }
334
289
 
290
+ _withSuspendedCallbacks(callback: () => void) {
291
+ this._suspendCallbacks++;
292
+ callback();
293
+ this._suspendCallbacks--;
294
+ }
295
+
296
+ __callListeners(value: number): void {
297
+ if (this._suspendCallbacks === 0) {
298
+ super.__callListeners(value);
299
+ }
300
+ }
301
+
335
302
  __makeNative(platformConfig: ?PlatformConfig) {
336
303
  this.r.__makeNative(platformConfig);
337
304
  this.g.__makeNative(platformConfig);
@@ -16,6 +16,8 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig';
16
16
  import type AnimatedNode from './AnimatedNode';
17
17
 
18
18
  import normalizeColor from '../../StyleSheet/normalizeColor';
19
+ import processColor from '../../StyleSheet/processColor';
20
+ import Easing from '../Easing';
19
21
  import NativeAnimatedHelper from '../NativeAnimatedHelper';
20
22
  import AnimatedWithChildren from './AnimatedWithChildren';
21
23
  import invariant from 'invariant';
@@ -31,39 +33,17 @@ export type InterpolationConfigType<OutputT: number | string> = $ReadOnly<{
31
33
  extrapolateRight?: ExtrapolateType,
32
34
  }>;
33
35
 
34
- const linear = (t: number) => t;
35
-
36
36
  /**
37
37
  * Very handy helper to map input ranges to output ranges with an easing
38
38
  * function and custom behavior outside of the ranges.
39
39
  */
40
- function createInterpolation<OutputT: number | string>(
41
- config: InterpolationConfigType<OutputT>,
42
- ): (input: number) => OutputT {
43
- if (config.outputRange && typeof config.outputRange[0] === 'string') {
44
- return (createInterpolationFromStringOutputRange((config: any)): any);
45
- }
46
-
40
+ function createNumericInterpolation(
41
+ config: InterpolationConfigType<number>,
42
+ ): (input: number) => number {
47
43
  const outputRange: $ReadOnlyArray<number> = (config.outputRange: any);
48
-
49
44
  const inputRange = config.inputRange;
50
45
 
51
- if (__DEV__) {
52
- checkInfiniteRange('outputRange', outputRange);
53
- checkInfiniteRange('inputRange', inputRange);
54
- checkValidInputRange(inputRange);
55
-
56
- invariant(
57
- inputRange.length === outputRange.length,
58
- 'inputRange (' +
59
- inputRange.length +
60
- ') and outputRange (' +
61
- outputRange.length +
62
- ') must have the same length',
63
- );
64
- }
65
-
66
- const easing = config.easing || linear;
46
+ const easing = config.easing || Easing.linear;
67
47
 
68
48
  let extrapolateLeft: ExtrapolateType = 'extend';
69
49
  if (config.extrapolateLeft !== undefined) {
@@ -167,24 +147,49 @@ function interpolate(
167
147
  return result;
168
148
  }
169
149
 
170
- function colorToRgba(input: string): string {
171
- let normalizedColor = normalizeColor(input);
172
- if (normalizedColor === null || typeof normalizedColor !== 'number') {
173
- return input;
174
- }
150
+ const numericComponentRegex = /[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;
175
151
 
176
- normalizedColor = normalizedColor || 0;
177
-
178
- const r = (normalizedColor & 0xff000000) >>> 24;
179
- const g = (normalizedColor & 0x00ff0000) >>> 16;
180
- const b = (normalizedColor & 0x0000ff00) >>> 8;
181
- const a = (normalizedColor & 0x000000ff) / 255;
152
+ // Maps string inputs an RGBA color or an array of numeric components
153
+ function mapStringToNumericComponents(
154
+ input: string,
155
+ ):
156
+ | {isColor: true, components: [number, number, number, number]}
157
+ | {isColor: false, components: $ReadOnlyArray<number | string>} {
158
+ let normalizedColor = normalizeColor(input);
159
+ invariant(
160
+ normalizedColor == null || typeof normalizedColor !== 'object',
161
+ 'PlatformColors are not supported',
162
+ );
182
163
 
183
- return `rgba(${r}, ${g}, ${b}, ${a})`;
164
+ if (typeof normalizedColor === 'number') {
165
+ normalizedColor = normalizedColor || 0;
166
+ const r = (normalizedColor & 0xff000000) >>> 24;
167
+ const g = (normalizedColor & 0x00ff0000) >>> 16;
168
+ const b = (normalizedColor & 0x0000ff00) >>> 8;
169
+ const a = (normalizedColor & 0x000000ff) / 255;
170
+ return {isColor: true, components: [r, g, b, a]};
171
+ } else {
172
+ const components: Array<string | number> = [];
173
+ let lastMatchEnd = 0;
174
+ let match: RegExp$matchResult;
175
+ while ((match = (numericComponentRegex.exec(input): any)) != null) {
176
+ if (match.index > lastMatchEnd) {
177
+ components.push(input.substring(lastMatchEnd, match.index));
178
+ }
179
+ components.push(parseFloat(match[0]));
180
+ lastMatchEnd = match.index + match[0].length;
181
+ }
182
+ invariant(
183
+ components.length > 0,
184
+ 'outputRange must contain color or value with numeric component',
185
+ );
186
+ if (lastMatchEnd < input.length) {
187
+ components.push(input.substring(lastMatchEnd, input.length));
188
+ }
189
+ return {isColor: false, components};
190
+ }
184
191
  }
185
192
 
186
- const stringShapeRegex = /[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;
187
-
188
193
  /**
189
194
  * Supports string shapes by extracting numbers so new values can be computed,
190
195
  * and recombines those values into new strings of the same shape. Supports
@@ -193,77 +198,70 @@ const stringShapeRegex = /[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;
193
198
  * rgba(123, 42, 99, 0.36) // colors
194
199
  * -45deg // values with units
195
200
  */
196
- function createInterpolationFromStringOutputRange(
201
+ function createStringInterpolation(
197
202
  config: InterpolationConfigType<string>,
198
203
  ): (input: number) => string {
199
- let outputRange: Array<string> = (config.outputRange: any);
200
- invariant(outputRange.length >= 2, 'Bad output range');
201
- outputRange = outputRange.map(colorToRgba);
202
- checkPattern(outputRange);
203
-
204
- // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']
205
- // ->
206
- // [
207
- // [0, 50],
208
- // [100, 150],
209
- // [200, 250],
210
- // [0, 0.5],
211
- // ]
212
- /* $FlowFixMe[incompatible-use] (>=0.18.0): `outputRange[0].match()` can
213
- * return `null`. Need to guard against this possibility. */
214
- const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);
215
- outputRange.forEach(value => {
216
- /* $FlowFixMe[incompatible-use] (>=0.18.0): `value.match()` can return
217
- * `null`. Need to guard against this possibility. */
218
- value.match(stringShapeRegex).forEach((number, i) => {
219
- outputRanges[i].push(+number);
220
- });
221
- });
222
-
223
- const interpolations = outputRange[0]
224
- .match(stringShapeRegex)
225
- /* $FlowFixMe[incompatible-use] (>=0.18.0): `outputRange[0].match()` can
226
- * return `null`. Need to guard against this possibility. */
227
- /* $FlowFixMe[incompatible-call] (>=0.18.0): `outputRange[0].match()` can
228
- * return `null`. Need to guard against this possibility. */
229
- .map((value, i) => {
230
- return createInterpolation({
231
- ...config,
232
- outputRange: outputRanges[i],
233
- });
234
- });
204
+ invariant(config.outputRange.length >= 2, 'Bad output range');
205
+ const outputRange = config.outputRange.map(mapStringToNumericComponents);
235
206
 
236
- // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to
237
- // round the opacity (4th column).
238
- const shouldRound = isRgbOrRgba(outputRange[0]);
239
-
240
- return input => {
241
- let i = 0;
242
- // 'rgba(0, 100, 200, 0)'
243
- // ->
244
- // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'
245
- return outputRange[0].replace(stringShapeRegex, () => {
246
- let val = +interpolations[i++](input);
247
- if (shouldRound) {
248
- val = i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000;
249
- }
250
- return String(val);
251
- });
252
- };
253
- }
254
-
255
- function isRgbOrRgba(range: string) {
256
- return typeof range === 'string' && range.startsWith('rgb');
257
- }
258
-
259
- function checkPattern(arr: $ReadOnlyArray<string>) {
260
- const pattern = arr[0].replace(stringShapeRegex, '');
261
- for (let i = 1; i < arr.length; ++i) {
207
+ const isColor = outputRange[0].isColor;
208
+ if (__DEV__) {
262
209
  invariant(
263
- pattern === arr[i].replace(stringShapeRegex, ''),
264
- 'invalid pattern ' + arr[0] + ' and ' + arr[i],
210
+ outputRange.every(output => output.isColor === isColor),
211
+ 'All elements of output range should either be a color or a string with numeric components',
212
+ );
213
+ const firstOutput = outputRange[0].components;
214
+ invariant(
215
+ outputRange.every(
216
+ output => output.components.length === firstOutput.length,
217
+ ),
218
+ 'All elements of output range should have the same number of components',
219
+ );
220
+ invariant(
221
+ outputRange.every(output =>
222
+ output.components.every(
223
+ (component, i) =>
224
+ // $FlowIgnoreMe[invalid-compare]
225
+ typeof component === 'number' || component === firstOutput[i],
226
+ ),
227
+ ),
228
+ 'All elements of output range should have the same non-numeric components',
265
229
  );
266
230
  }
231
+
232
+ const numericComponents: $ReadOnlyArray<$ReadOnlyArray<number>> =
233
+ outputRange.map(output =>
234
+ isColor
235
+ ? // $FlowIgnoreMe[incompatible-call]
236
+ output.components
237
+ : // $FlowIgnoreMe[incompatible-call]
238
+ output.components.filter(c => typeof c === 'number'),
239
+ );
240
+ const interpolations = numericComponents[0].map((_, i) =>
241
+ createNumericInterpolation({
242
+ ...config,
243
+ outputRange: numericComponents.map(components => components[i]),
244
+ }),
245
+ );
246
+ if (!isColor) {
247
+ return input => {
248
+ const values = interpolations.map(interpolation => interpolation(input));
249
+ let i = 0;
250
+ return outputRange[0].components
251
+ .map(c => (typeof c === 'number' ? values[i++] : c))
252
+ .join('');
253
+ };
254
+ } else {
255
+ return input => {
256
+ const result = interpolations.map((interpolation, i) => {
257
+ const value = interpolation(input);
258
+ // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to
259
+ // round the opacity (4th column).
260
+ return i < 3 ? Math.round(value) : Math.round(value * 1000) / 1000;
261
+ });
262
+ return `rgba(${result[0]}, ${result[1]}, ${result[2]}, ${result[3]})`;
263
+ };
264
+ }
267
265
  }
268
266
 
269
267
  function findRange(input: number, inputRange: $ReadOnlyArray<number>) {
@@ -276,6 +274,24 @@ function findRange(input: number, inputRange: $ReadOnlyArray<number>) {
276
274
  return i - 1;
277
275
  }
278
276
 
277
+ function checkValidRanges<OutputT: number | string>(
278
+ inputRange: $ReadOnlyArray<number>,
279
+ outputRange: $ReadOnlyArray<OutputT>,
280
+ ) {
281
+ checkInfiniteRange('outputRange', outputRange);
282
+ checkInfiniteRange('inputRange', inputRange);
283
+ checkValidInputRange(inputRange);
284
+
285
+ invariant(
286
+ inputRange.length === outputRange.length,
287
+ 'inputRange (' +
288
+ inputRange.length +
289
+ ') and outputRange (' +
290
+ outputRange.length +
291
+ ') must have the same length',
292
+ );
293
+ }
294
+
279
295
  function checkValidInputRange(arr: $ReadOnlyArray<number>) {
280
296
  invariant(arr.length >= 2, 'inputRange must have at least 2 elements');
281
297
  const message =
@@ -285,7 +301,10 @@ function checkValidInputRange(arr: $ReadOnlyArray<number>) {
285
301
  }
286
302
  }
287
303
 
288
- function checkInfiniteRange(name: string, arr: $ReadOnlyArray<number>) {
304
+ function checkInfiniteRange<OutputT: number | string>(
305
+ name: string,
306
+ arr: $ReadOnlyArray<OutputT>,
307
+ ) {
289
308
  invariant(arr.length >= 2, name + ' must have at least 2 elements');
290
309
  invariant(
291
310
  arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,
@@ -294,6 +313,7 @@ function checkInfiniteRange(name: string, arr: $ReadOnlyArray<number>) {
294
313
  * doesn't cleanly convert to a string, like undefined, null, and object,
295
314
  * etc. If you really mean this implicit string conversion, you can do
296
315
  * something like String(myThing) */
316
+ // $FlowFixMe[unsafe-addition]
297
317
  name + 'cannot be ]-infinity;+infinity[ ' + arr,
298
318
  );
299
319
  }
@@ -301,20 +321,34 @@ function checkInfiniteRange(name: string, arr: $ReadOnlyArray<number>) {
301
321
  export default class AnimatedInterpolation<
302
322
  OutputT: number | string,
303
323
  > extends AnimatedWithChildren {
304
- // Export for testing.
305
- static __createInterpolation: (
306
- config: InterpolationConfigType<OutputT>,
307
- ) => (input: number) => OutputT = createInterpolation;
308
-
309
324
  _parent: AnimatedNode;
310
325
  _config: InterpolationConfigType<OutputT>;
311
- _interpolation: (input: number) => OutputT;
326
+ _interpolation: ?(input: number) => OutputT;
312
327
 
313
328
  constructor(parent: AnimatedNode, config: InterpolationConfigType<OutputT>) {
314
329
  super();
315
330
  this._parent = parent;
316
331
  this._config = config;
317
- this._interpolation = createInterpolation(config);
332
+
333
+ if (__DEV__) {
334
+ checkValidRanges(config.inputRange, config.outputRange);
335
+
336
+ // Create interpolation eagerly in dev, so we can signal errors faster
337
+ // even when using the native driver
338
+ this._getInterpolation();
339
+ }
340
+ }
341
+
342
+ _getInterpolation(): number => OutputT {
343
+ if (!this._interpolation) {
344
+ const config = this._config;
345
+ if (config.outputRange && typeof config.outputRange[0] === 'string') {
346
+ this._interpolation = (createStringInterpolation((config: any)): any);
347
+ } else {
348
+ this._interpolation = (createNumericInterpolation((config: any)): any);
349
+ }
350
+ }
351
+ return this._interpolation;
318
352
  }
319
353
 
320
354
  __makeNative(platformConfig: ?PlatformConfig) {
@@ -322,13 +356,13 @@ export default class AnimatedInterpolation<
322
356
  super.__makeNative(platformConfig);
323
357
  }
324
358
 
325
- __getValue(): number | string {
359
+ __getValue(): OutputT {
326
360
  const parentValue: number = this._parent.__getValue();
327
361
  invariant(
328
362
  typeof parentValue === 'number',
329
363
  'Cannot interpolate an input which is not a number.',
330
364
  );
331
- return this._interpolation(parentValue);
365
+ return this._getInterpolation()(parentValue);
332
366
  }
333
367
 
334
368
  interpolate<NewOutputT: number | string>(
@@ -346,19 +380,31 @@ export default class AnimatedInterpolation<
346
380
  super.__detach();
347
381
  }
348
382
 
349
- __transformDataType(range: $ReadOnlyArray<OutputT>): Array<any> {
350
- return range.map(NativeAnimatedHelper.transformDataType);
351
- }
352
-
353
383
  __getNativeConfig(): any {
354
384
  if (__DEV__) {
355
385
  NativeAnimatedHelper.validateInterpolation(this._config);
356
386
  }
357
387
 
388
+ // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here
389
+ let outputRange = this._config.outputRange;
390
+ let outputType = null;
391
+ if (typeof outputRange[0] === 'string') {
392
+ // $FlowIgnoreMe[incompatible-cast]
393
+ outputRange = ((outputRange: $ReadOnlyArray<string>).map(value => {
394
+ const processedColor = processColor(value);
395
+ if (typeof processedColor === 'number') {
396
+ outputType = 'color';
397
+ return processedColor;
398
+ } else {
399
+ return NativeAnimatedHelper.transformDataType(value);
400
+ }
401
+ }): any);
402
+ }
403
+
358
404
  return {
359
405
  inputRange: this._config.inputRange,
360
- // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here
361
- outputRange: this.__transformDataType(this._config.outputRange),
406
+ outputRange,
407
+ outputType,
362
408
  extrapolateLeft:
363
409
  this._config.extrapolateLeft || this._config.extrapolate || 'extend',
364
410
  extrapolateRight:
@@ -12,7 +12,6 @@
12
12
 
13
13
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
14
 
15
- import ReactNativeFeatureFlags from '../../ReactNative/ReactNativeFeatureFlags';
16
15
  import NativeAnimatedHelper from '../NativeAnimatedHelper';
17
16
  import invariant from 'invariant';
18
17
 
@@ -30,9 +29,7 @@ export default class AnimatedNode {
30
29
  __nativeAnimatedValueListener: ?any;
31
30
  __attach(): void {}
32
31
  __detach(): void {
33
- if (ReactNativeFeatureFlags.removeListenersOnDetach()) {
34
- this.removeAllListeners();
35
- }
32
+ this.removeAllListeners();
36
33
  if (this.__isNative && this.__nativeTag != null) {
37
34
  NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag);
38
35
  this.__nativeTag = undefined;
@@ -44,7 +41,7 @@ export default class AnimatedNode {
44
41
  }
45
42
  __addChild(child: AnimatedNode) {}
46
43
  __removeChild(child: AnimatedNode) {}
47
- __getChildren(): Array<AnimatedNode> {
44
+ __getChildren(): $ReadOnlyArray<AnimatedNode> {
48
45
  return [];
49
46
  }
50
47
 
@@ -186,6 +183,7 @@ export default class AnimatedNode {
186
183
  'This JS animated node type cannot be used as native animated node',
187
184
  );
188
185
  }
186
+
189
187
  toJSON(): any {
190
188
  return this.__getValue();
191
189
  }
@@ -90,14 +90,15 @@ export default class AnimatedProps extends AnimatedNode {
90
90
  }
91
91
 
92
92
  __makeNative(platformConfig: ?PlatformConfig): void {
93
+ for (const key in this._props) {
94
+ const value = this._props[key];
95
+ if (value instanceof AnimatedNode) {
96
+ value.__makeNative(platformConfig);
97
+ }
98
+ }
99
+
93
100
  if (!this.__isNative) {
94
101
  this.__isNative = true;
95
- for (const key in this._props) {
96
- const value = this._props[key];
97
- if (value instanceof AnimatedNode) {
98
- value.__makeNative(platformConfig);
99
- }
100
- }
101
102
 
102
103
  // Since this does not call the super.__makeNative, we need to store the
103
104
  // supplied platformConfig here, before calling __connectAnimatedView