react-native-windows 0.68.1 → 0.69.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 (392) hide show
  1. package/.flowconfig +1 -3
  2. package/Chakra/ChakraHelpers.cpp +0 -1
  3. package/Directory.Build.props +3 -0
  4. package/Directory.Build.targets +1 -1
  5. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1411 -0
  6. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +336 -0
  7. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +182 -0
  8. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
  9. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  10. package/Libraries/Alert/Alert.windows.js +2 -2
  11. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  12. package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
  13. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  14. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  15. package/Libraries/Animated/animations/TimingAnimation.js +6 -11
  16. package/Libraries/Animated/createAnimatedComponent.js +2 -2
  17. package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
  19. package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
  20. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  21. package/Libraries/AppState/AppState.js +1 -1
  22. package/Libraries/Blob/URL.js +7 -1
  23. package/Libraries/Components/Button.js +3 -0
  24. package/Libraries/Components/Button.windows.js +4 -0
  25. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
  26. package/Libraries/Components/Pressable/Pressable.js +3 -3
  27. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  28. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
  29. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
  30. package/Libraries/Components/ScrollView/ScrollView.js +1 -1
  31. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
  32. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
  33. package/Libraries/Components/Slider/Slider.js +0 -2
  34. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
  35. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  36. package/Libraries/Components/Switch/Switch.js +11 -1
  37. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
  38. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
  39. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
  40. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
  41. package/Libraries/Components/TextInput/TextInput.js +1 -8
  42. package/Libraries/Components/TextInput/TextInput.windows.js +4 -9
  43. package/Libraries/Components/TextInput/TextInputState.js +10 -2
  44. package/Libraries/Components/TextInput/TextInputState.windows.js +10 -3
  45. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
  47. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
  48. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +6 -5
  49. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
  50. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
  51. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  52. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
  53. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -0
  54. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  55. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  56. package/Libraries/Components/View/View.windows.js +33 -1
  57. package/Libraries/Components/View/ViewNativeComponent.js +68 -8
  58. package/Libraries/Components/View/ViewPropTypes.js +36 -4
  59. package/Libraries/Components/View/ViewPropTypes.windows.js +36 -4
  60. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  61. package/Libraries/Core/ExceptionsManager.js +1 -1
  62. package/Libraries/Core/RawEventEmitter.js +38 -0
  63. package/Libraries/Core/ReactNativeVersion.js +2 -2
  64. package/Libraries/Core/polyfillPromise.js +32 -0
  65. package/Libraries/Core/setUpReactDevTools.js +3 -2
  66. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  67. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  68. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
  69. package/Libraries/Events/CustomEvent.js +32 -0
  70. package/Libraries/Events/EventPolyfill.js +239 -0
  71. package/Libraries/Image/Image.android.js +0 -6
  72. package/Libraries/Image/Image.ios.js +0 -6
  73. package/Libraries/Image/Image.windows.js +2 -8
  74. package/Libraries/Image/ImageViewNativeComponent.js +18 -3
  75. package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
  76. package/Libraries/Inspector/Inspector.js +2 -4
  77. package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
  78. package/Libraries/Interaction/InteractionManager.js +1 -12
  79. package/Libraries/Interaction/TaskQueue.js +5 -4
  80. package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
  81. package/Libraries/Linking/Linking.js +1 -1
  82. package/Libraries/Lists/FlatList.js +27 -6
  83. package/Libraries/Lists/VirtualizedList.js +71 -55
  84. package/Libraries/Lists/VirtualizedListContext.js +7 -3
  85. package/Libraries/Lists/VirtualizedSectionList.js +2 -2
  86. package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
  87. package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
  88. package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
  89. package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
  90. package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +91 -42
  91. package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +13 -13
  92. package/Libraries/LogBox/Data/LogBoxData.js +2 -2
  93. package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
  94. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  95. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  96. package/Libraries/LogBox/LogBox.js +2 -21
  97. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
  98. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
  99. package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
  101. package/Libraries/NativeComponent/BaseViewConfig.windows.js +334 -0
  102. package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
  103. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
  104. package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
  105. package/Libraries/NativeComponent/ViewConfig.js +4 -4
  106. package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
  107. package/Libraries/Network/FormData.js +7 -1
  108. package/Libraries/Pressability/Pressability.js +115 -46
  109. package/Libraries/Pressability/Pressability.windows.js +190 -74
  110. package/Libraries/Pressability/PressabilityDebug.js +5 -9
  111. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  112. package/Libraries/ReactNative/AppContainer.js +1 -1
  113. package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
  114. package/Libraries/ReactNative/PaperUIManager.windows.js +5 -5
  115. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
  116. package/Libraries/ReactNative/UIManager.js +2 -3
  117. package/Libraries/ReactNative/renderApplication.js +4 -0
  118. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
  119. package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
  120. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
  121. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
  123. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
  124. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
  125. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
  126. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
  127. package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
  128. package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
  129. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  130. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  131. package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
  132. package/Libraries/StyleSheet/processTransform.windows.js +272 -0
  133. package/Libraries/Text/Text.js +13 -7
  134. package/Libraries/Text/Text.windows.js +16 -7
  135. package/Libraries/Text/TextNativeComponent.js +2 -0
  136. package/Libraries/Text/TextProps.js +10 -0
  137. package/Libraries/Types/CoreEventTypes.js +13 -1
  138. package/Libraries/Types/CoreEventTypes.windows.js +26 -1
  139. package/Libraries/Utilities/Appearance.js +0 -8
  140. package/Libraries/Utilities/HMRClient.js +1 -1
  141. package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
  142. package/Libraries/Utilities/codegenNativeComponent.js +17 -6
  143. package/Libraries/Utilities/stringifySafe.js +4 -1
  144. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
  145. package/Libraries/WebSocket/WebSocket.js +1 -1
  146. package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
  147. package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
  148. package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
  149. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +1 -4
  150. package/Microsoft.ReactNative/DynamicReader.cpp +3 -3
  151. package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
  152. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
  153. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
  154. package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
  155. package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
  156. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
  157. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  158. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
  159. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
  160. package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
  161. package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
  162. package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
  163. package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
  164. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
  165. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
  166. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
  167. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
  168. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
  169. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
  170. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
  171. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
  172. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
  173. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
  174. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
  175. package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
  176. package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
  179. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
  180. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
  184. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
  185. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
  186. package/Microsoft.ReactNative/IViewManager.idl +3 -3
  187. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
  188. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
  189. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
  190. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
  191. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  192. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
  193. package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
  194. package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
  195. package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
  196. package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
  197. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +15 -2
  198. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  199. package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
  200. package/Microsoft.ReactNative/ReactInstanceSettings.idl +12 -2
  201. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +1 -1
  202. package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
  203. package/Microsoft.ReactNative/RedBox.cpp +3 -2
  204. package/Microsoft.ReactNative/TurboModulesProvider.cpp +3 -2
  205. package/Microsoft.ReactNative/TurboModulesProvider.h +4 -1
  206. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +41 -0
  207. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
  208. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
  209. package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
  210. package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
  211. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
  212. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
  213. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  214. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
  215. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
  216. package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
  217. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  218. package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
  219. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
  220. package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
  221. package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
  222. package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
  223. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
  224. package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
  225. package/Microsoft.ReactNative/XamlView.h +8 -3
  226. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
  227. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
  228. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
  229. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
  230. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +19 -14
  231. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
  232. package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
  233. package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
  234. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
  235. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
  236. package/Microsoft.ReactNative.Cxx/NativeModules.h +3 -3
  237. package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
  238. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
  239. package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
  240. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
  241. package/Mso/activeObject/activeObject.h +2 -2
  242. package/Mso/compilerAdapters/cppMacros.h +3 -5
  243. package/Mso/errorCode/errorProvider.h +2 -2
  244. package/Mso/errorCode/maybe.h +4 -4
  245. package/Mso/functional/functor.h +6 -6
  246. package/Mso/functional/functorRef.h +2 -2
  247. package/Mso/future/details/executor.h +2 -2
  248. package/Mso/future/details/futureFuncInl.h +4 -4
  249. package/Mso/future/details/ifuture.h +3 -3
  250. package/Mso/future/details/maybeInvoker.h +6 -6
  251. package/Mso/future/details/promiseGroupInl.h +4 -4
  252. package/Mso/future/details/promiseInl.h +4 -4
  253. package/Mso/future/details/resultTraits.h +4 -4
  254. package/Mso/future/details/whenAllInl.h +1 -1
  255. package/Mso/future/future.h +13 -13
  256. package/Mso/guid/msoGuidDetails.h +1 -1
  257. package/Mso/memoryApi/memoryApi.h +13 -7
  258. package/Mso/motifCpp/gTestAdapter.h +1 -1
  259. package/Mso/motifCpp/testInfo.h +7 -9
  260. package/Mso/object/make.h +8 -8
  261. package/Mso/object/objectRefCount.h +3 -5
  262. package/Mso/object/objectWithWeakRef.h +10 -14
  263. package/Mso/object/queryCast.h +4 -4
  264. package/Mso/object/refCountedObject.h +4 -4
  265. package/Mso/object/unknownObject.h +7 -7
  266. package/Mso/platformAdapters/windowsFirst.h +1 -1
  267. package/Mso/smartPtr/cntPtr.h +8 -8
  268. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +96 -4
  269. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
  270. package/Mso/src/future/futureImpl.h +1 -1
  271. package/Mso/src/memoryApi/memoryApi.cpp +4 -4
  272. package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
  273. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
  274. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
  275. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  276. package/PropertySheets/JSEngine.props +1 -1
  277. package/PropertySheets/React.Cpp.props +13 -0
  278. package/PropertySheets/WinUI.props +3 -6
  279. package/ReactCommon/ReactCommon.vcxproj +2 -4
  280. package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
  281. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
  282. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
  283. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
  284. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
  285. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
  286. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
  287. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
  288. package/ReactCommon/Yoga.cpp +1 -1
  289. package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
  290. package/Scripts/OfficeReact.Win32.nuspec +1 -3
  291. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
  292. package/Scripts/copyRNLibraries.js +8 -8
  293. package/Scripts/just.js +1 -1
  294. package/Scripts/rnw-dependencies.ps1 +41 -10
  295. package/Scripts/run-desktop-integration-tests.js +6 -6
  296. package/Shared/AbiSafe.h +3 -3
  297. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  298. package/Shared/CppRuntimeOptions.h +50 -0
  299. package/Shared/CreateModules.h +4 -0
  300. package/Shared/DevSupportManager.cpp +34 -33
  301. package/Shared/DevSupportManager.h +1 -2
  302. package/Shared/HermesRuntimeHolder.cpp +23 -14
  303. package/Shared/HermesRuntimeHolder.h +8 -2
  304. package/Shared/IDevSupportManager.h +1 -2
  305. package/Shared/InspectorPackagerConnection.cpp +7 -5
  306. package/Shared/InspectorPackagerConnection.h +2 -2
  307. package/Shared/JSI/ChakraApi.cpp +0 -1
  308. package/Shared/JSI/ChakraRuntime.cpp +1 -2
  309. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +1 -1
  310. package/Shared/JSI/RuntimeHolder.h +2 -0
  311. package/Shared/Modules/HttpModule.cpp +198 -0
  312. package/Shared/Modules/HttpModule.h +53 -0
  313. package/Shared/Modules/WebSocketModule.cpp +5 -1
  314. package/Shared/Modules/WebSocketModule.h +8 -5
  315. package/Shared/Networking/IHttpResource.h +53 -0
  316. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
  317. package/Shared/Networking/OriginPolicy.h +15 -0
  318. package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
  319. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  320. package/Shared/Networking/WinRTHttpResource.cpp +347 -0
  321. package/Shared/Networking/WinRTHttpResource.h +67 -0
  322. package/Shared/Networking/WinRTTypes.h +30 -0
  323. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
  324. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  325. package/Shared/OInstance.cpp +37 -11
  326. package/Shared/RuntimeOptions.cpp +93 -15
  327. package/Shared/RuntimeOptions.h +22 -9
  328. package/Shared/Shared.vcxitems +126 -5
  329. package/Shared/Shared.vcxitems.filters +55 -15
  330. package/Shared/Threading/BatchingQueueThread.cpp +1 -1
  331. package/Shared/Utils/WinRTConversions.cpp +22 -0
  332. package/Shared/Utils/WinRTConversions.h +15 -0
  333. package/Shared/tracing/fbsystrace.h +2 -2
  334. package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
  335. package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
  336. package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
  337. package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
  338. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  339. package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
  340. package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
  341. package/codegen/react/components/rnwcore/Props.cpp +0 -13
  342. package/codegen/react/components/rnwcore/Props.h +0 -16
  343. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  344. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
  345. package/include/Shared/cdebug.h +9 -9
  346. package/index.js +30 -25
  347. package/index.windows.js +30 -25
  348. package/jest/preprocessor.js +24 -107
  349. package/jest/preprocessor_DO_NOT_USE.js +122 -0
  350. package/metro.config.js +3 -70
  351. package/package.json +29 -28
  352. package/react-native.config.js +40 -6
  353. package/rntypes/index.d.ts +19 -7
  354. package/stubs/glog/logging.h +1 -1
  355. package/template/cpp-app/src/App.h +0 -4
  356. package/template/cs-app/src/App.xaml.cs +0 -5
  357. package/template/cs-app/src/MainPage.xaml.cs +1 -10
  358. package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
  359. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
  360. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
  361. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
  362. package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
  363. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
  364. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
  365. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
  366. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
  367. package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
  368. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
  369. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
  370. package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
  371. package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
  372. package/template/metro.devMode.config.js +2 -51
  373. package/typings-index.js +5 -1
  374. package/typings-index.js.map +1 -1
  375. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
  376. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
  377. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  378. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
  379. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
  380. package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
  381. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
  382. package/Libraries/ReactNative/UIManagerInjection.js +0 -15
  383. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
  384. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
  385. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
  386. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
  387. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
  388. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
  389. package/PropertySheets/CppEnablePackageReferences.props +0 -13
  390. package/Shared/IHttpResource.h +0 -34
  391. package/Shared/cdebug.cpp +0 -6
  392. package/include/Shared/ViewManager.h +0 -34
@@ -0,0 +1,239 @@
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
+ * @format
8
+ * @flow strict-local
9
+ */
10
+
11
+ // https://dom.spec.whatwg.org/#dictdef-eventinit
12
+ type Event$Init = {
13
+ bubbles?: boolean,
14
+ cancelable?: boolean,
15
+ composed?: boolean,
16
+ /** Non-standard. See `composed` instead. */
17
+ scoped?: boolean,
18
+ ...
19
+ };
20
+
21
+ /**
22
+ * This is a copy of the Event interface defined in Flow:
23
+ * https://github.com/facebook/flow/blob/741104e69c43057ebd32804dd6bcc1b5e97548ea/lib/dom.js
24
+ * which is itself a faithful interface of the W3 spec:
25
+ * https://dom.spec.whatwg.org/#interface-event
26
+ *
27
+ * Since Flow assumes that Event is provided and is on the global object,
28
+ * we must provide an implementation of Event for CustomEvent (and future
29
+ * alignment of React Native's event system with the W3 spec).
30
+ */
31
+ interface IEvent {
32
+ constructor(type: string, eventInitDict?: Event$Init): void;
33
+ /**
34
+ * Returns the type of event, e.g. "click", "hashchange", or "submit".
35
+ */
36
+ +type: string;
37
+ /**
38
+ * Returns the object to which event is dispatched (its target).
39
+ */
40
+ +target: EventTarget; // TODO: nullable
41
+ /** @deprecated */
42
+ +srcElement: Element; // TODO: nullable
43
+ /**
44
+ * Returns the object whose event listener's callback is currently being invoked.
45
+ */
46
+ +currentTarget: EventTarget; // TODO: nullable
47
+ /**
48
+ * Returns the invocation target objects of event's path (objects on which
49
+ * listeners will be invoked), except for any nodes in shadow trees of which
50
+ * the shadow root's mode is "closed" that are not reachable from event's
51
+ * currentTarget.
52
+ */
53
+ composedPath(): Array<EventTarget>;
54
+
55
+ +NONE: number;
56
+ +AT_TARGET: number;
57
+ +BUBBLING_PHASE: number;
58
+ +CAPTURING_PHASE: number;
59
+ /**
60
+ * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET,
61
+ * and BUBBLING_PHASE.
62
+ */
63
+ +eventPhase: number;
64
+
65
+ /**
66
+ * When dispatched in a tree, invoking this method prevents event from reaching
67
+ * any objects other than the current object.
68
+ */
69
+ stopPropagation(): void;
70
+ /**
71
+ * Invoking this method prevents event from reaching any registered event
72
+ * listeners after the current one finishes running and, when dispatched in a
73
+ * tree, also prevents event from reaching any other objects.
74
+ */
75
+ stopImmediatePropagation(): void;
76
+
77
+ /**
78
+ * Returns true or false depending on how event was initialized. True if
79
+ * event goes through its target's ancestors in reverse tree order, and
80
+ * false otherwise.
81
+ */
82
+ +bubbles: boolean;
83
+ /**
84
+ * Returns true or false depending on how event was initialized. Its
85
+ * return value does not always carry meaning, but true can indicate
86
+ * that part of the operation during which event was dispatched, can
87
+ * be canceled by invoking the preventDefault() method.
88
+ */
89
+ +cancelable: boolean;
90
+ // returnValue: boolean; // legacy, and some subclasses still define it as a string!
91
+ /**
92
+ * If invoked when the cancelable attribute value is true, and while
93
+ * executing a listener for the event with passive set to false, signals to
94
+ * the operation that caused event to be dispatched that it needs to be
95
+ * canceled.
96
+ */
97
+ preventDefault(): void;
98
+ /**
99
+ * Returns true if preventDefault() was invoked successfully to indicate
100
+ * cancelation, and false otherwise.
101
+ */
102
+ +defaultPrevented: boolean;
103
+ /**
104
+ * Returns true or false depending on how event was initialized. True if
105
+ * event invokes listeners past a ShadowRoot node that is the root of its
106
+ * target, and false otherwise.
107
+ */
108
+ +composed: boolean;
109
+
110
+ /**
111
+ * Returns true if event was dispatched by the user agent, and false otherwise.
112
+ */
113
+ +isTrusted: boolean;
114
+ /**
115
+ * Returns the event's timestamp as the number of milliseconds measured relative
116
+ * to the time origin.
117
+ */
118
+ +timeStamp: number;
119
+
120
+ /** Non-standard. See Event.prototype.composedPath */
121
+ +deepPath?: () => EventTarget[];
122
+ /** Non-standard. See Event.prototype.composed */
123
+ +scoped: boolean;
124
+
125
+ /**
126
+ * @deprecated
127
+ */
128
+ initEvent(type: string, bubbles: boolean, cancelable: boolean): void;
129
+ }
130
+
131
+ class EventPolyfill implements IEvent {
132
+ type: string;
133
+ bubbles: boolean;
134
+ cancelable: boolean;
135
+ composed: boolean;
136
+ // Non-standard. See `composed` instead.
137
+ scoped: boolean;
138
+ isTrusted: boolean;
139
+ defaultPrevented: boolean;
140
+ timeStamp: number;
141
+
142
+ // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
143
+ NONE: number;
144
+ AT_TARGET: number;
145
+ BUBBLING_PHASE: number;
146
+ CAPTURING_PHASE: number;
147
+
148
+ eventPhase: number;
149
+
150
+ currentTarget: EventTarget; // TODO: nullable
151
+ target: EventTarget; // TODO: nullable
152
+ /** @deprecated */
153
+ srcElement: Element; // TODO: nullable
154
+
155
+ // React Native-specific: proxy data to a SyntheticEvent when
156
+ // certain methods are called.
157
+ // SyntheticEvent will also have a reference to this instance -
158
+ // it is circular - and both classes use this reference to keep
159
+ // data with the other in sync.
160
+ _syntheticEvent: mixed;
161
+
162
+ constructor(type: string, eventInitDict?: Event$Init): void {
163
+ this.type = type;
164
+ this.bubbles = !!(eventInitDict?.bubbles || false);
165
+ this.cancelable = !!(eventInitDict?.cancelable || false);
166
+ this.composed = !!(eventInitDict?.composed || false);
167
+ this.scoped = !!(eventInitDict?.scoped || false);
168
+
169
+ // TODO: somehow guarantee that only "private" instantiations of Event
170
+ // can set this to true
171
+ this.isTrusted = false;
172
+
173
+ // TODO: in the future we'll want to make sure this has the same
174
+ // time-basis as events originating from native
175
+ this.timeStamp = Date.now();
176
+
177
+ this.defaultPrevented = false;
178
+
179
+ // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
180
+ this.NONE = 0;
181
+ this.AT_TARGET = 1;
182
+ this.BUBBLING_PHASE = 2;
183
+ this.CAPTURING_PHASE = 3;
184
+ this.eventPhase = this.NONE;
185
+
186
+ // $FlowFixMe
187
+ this.currentTarget = null;
188
+ // $FlowFixMe
189
+ this.target = null;
190
+ // $FlowFixMe
191
+ this.srcElement = null;
192
+ }
193
+
194
+ composedPath(): Array<EventTarget> {
195
+ throw new Error('TODO: not yet implemented');
196
+ }
197
+
198
+ preventDefault(): void {
199
+ this.defaultPrevented = true;
200
+
201
+ if (this._syntheticEvent != null) {
202
+ // $FlowFixMe
203
+ this._syntheticEvent.preventDefault();
204
+ }
205
+ }
206
+
207
+ initEvent(type: string, bubbles: boolean, cancelable: boolean): void {
208
+ throw new Error(
209
+ 'TODO: not yet implemented. This method is also deprecated.',
210
+ );
211
+ }
212
+
213
+ stopImmediatePropagation(): void {
214
+ throw new Error('TODO: not yet implemented');
215
+ }
216
+
217
+ stopPropagation(): void {
218
+ if (this._syntheticEvent != null) {
219
+ // $FlowFixMe
220
+ this._syntheticEvent.stopPropagation();
221
+ }
222
+ }
223
+
224
+ setSyntheticEvent(value: mixed): void {
225
+ this._syntheticEvent = value;
226
+ }
227
+ }
228
+
229
+ // Assertion magic for polyfill follows.
230
+ declare var checkEvent: Event;
231
+
232
+ /*::
233
+ // This can be a strict mode error at runtime so put it in a Flow comment.
234
+ (checkEvent: IEvent);
235
+ */
236
+
237
+ global.Event = EventPolyfill;
238
+
239
+ export default EventPolyfill;
@@ -306,12 +306,6 @@ Image.queryCache = queryCache;
306
306
  * comment and run Flow. */
307
307
  Image.resolveAssetSource = resolveAssetSource;
308
308
 
309
- /**
310
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
311
- * releases. This is deprecated and will be removed in the future.
312
- */
313
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
314
-
315
309
  const styles = StyleSheet.create({
316
310
  base: {
317
311
  overflow: 'hidden',
@@ -232,12 +232,6 @@ Image.queryCache = queryCache;
232
232
  * delete this comment and run Flow. */
233
233
  Image.resolveAssetSource = resolveAssetSource;
234
234
 
235
- /**
236
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
237
- * releases. This is deprecated and will be removed in the future.
238
- */
239
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
240
-
241
235
  const styles = StyleSheet.create({
242
236
  base: {
243
237
  overflow: 'hidden',
@@ -145,7 +145,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
145
145
  return (
146
146
  // [Windows
147
147
  <TextAncestor.Consumer>
148
- {(hasTextAncestor) => {
148
+ {hasTextAncestor => {
149
149
  invariant(
150
150
  !hasTextAncestor,
151
151
  'Nesting of <Image> within <Text> is not currently supported.',
@@ -154,7 +154,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
154
154
 
155
155
  return (
156
156
  <ImageAnalyticsTagContext.Consumer>
157
- {(analyticTag) => {
157
+ {analyticTag => {
158
158
  return (
159
159
  <ImageViewNativeComponent
160
160
  {...props}
@@ -248,12 +248,6 @@ Image.queryCache = queryCache;
248
248
  * delete this comment and run Flow. */
249
249
  Image.resolveAssetSource = resolveAssetSource;
250
250
 
251
- /**
252
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
253
- * releases. This is deprecated and will be removed in the future.
254
- */
255
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
256
-
257
251
  const styles = StyleSheet.create({
258
252
  base: {
259
253
  overflow: 'hidden',
@@ -12,7 +12,11 @@ import type {ResolvedAssetSource} from './AssetSourceResolver';
12
12
  import type {ImageProps} from './ImageProps';
13
13
  import type {ViewProps} from '../Components/View/ViewPropTypes';
14
14
  import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
15
- import type {HostComponent} from '../Renderer/shims/ReactNativeTypes';
15
+ import {ConditionallyIgnoredEventHandlers} from '../NativeComponent/ViewConfigIgnore';
16
+ import type {
17
+ HostComponent,
18
+ PartialViewConfig,
19
+ } from '../Renderer/shims/ReactNativeTypes';
16
20
  import type {
17
21
  ColorValue,
18
22
  DangerouslyImpreciseStyle,
@@ -37,7 +41,7 @@ type Props = $ReadOnly<{
37
41
  loadingIndicatorSrc?: ?string,
38
42
  }>;
39
43
 
40
- const ImageViewViewConfig =
44
+ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
41
45
  Platform.OS === 'android'
42
46
  ? {
43
47
  uiViewClassName: 'RCTImageView',
@@ -125,10 +129,21 @@ const ImageViewViewConfig =
125
129
  tintColor: {
126
130
  process: require('../StyleSheet/processColor'),
127
131
  },
132
+ ...ConditionallyIgnoredEventHandlers({
133
+ onLoadStart: true,
134
+ onLoad: true,
135
+ onLoadEnd: true,
136
+ onProgress: true,
137
+ onError: true,
138
+ onPartialLoad: true,
139
+ }),
128
140
  },
129
141
  };
130
142
 
131
143
  const ImageViewNativeComponent: HostComponent<Props> =
132
- NativeComponentRegistry.get<Props>('RCTImageView', () => ImageViewViewConfig);
144
+ NativeComponentRegistry.get<Props>(
145
+ 'RCTImageView',
146
+ () => __INTERNAL_VIEW_CONFIG,
147
+ );
133
148
 
134
149
  export default ImageViewNativeComponent;
@@ -10,7 +10,10 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {HostComponent} from '../Renderer/shims/ReactNativeTypes';
13
+ import type {
14
+ HostComponent,
15
+ PartialViewConfig,
16
+ } from '../Renderer/shims/ReactNativeTypes';
14
17
  import type {ViewProps} from '../Components/View/ViewPropTypes';
15
18
  import type {ImageResizeMode} from './ImageResizeMode';
16
19
  import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
@@ -24,19 +27,24 @@ type NativeProps = $ReadOnly<{
24
27
  headers?: ?{[string]: string},
25
28
  }>;
26
29
 
27
- const TextInlineImage: HostComponent<NativeProps> =
28
- NativeComponentRegistry.get<NativeProps>('RCTTextInlineImage', () => ({
29
- uiViewClassName: 'RCTTextInlineImage',
30
- bubblingEventTypes: {},
31
- directEventTypes: {},
32
- validAttributes: {
33
- resizeMode: true,
34
- src: true,
35
- tintColor: {
36
- process: require('../StyleSheet/processColor'),
37
- },
38
- headers: true,
30
+ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
31
+ uiViewClassName: 'RCTTextInlineImage',
32
+ bubblingEventTypes: {},
33
+ directEventTypes: {},
34
+ validAttributes: {
35
+ resizeMode: true,
36
+ src: true,
37
+ tintColor: {
38
+ process: require('../StyleSheet/processColor'),
39
39
  },
40
- }));
40
+ headers: true,
41
+ },
42
+ };
43
+
44
+ const TextInlineImage: HostComponent<NativeProps> =
45
+ NativeComponentRegistry.get<NativeProps>(
46
+ 'RCTTextInlineImage',
47
+ () => __INTERNAL_VIEW_CONFIG,
48
+ );
41
49
 
42
- module.exports = TextInlineImage;
50
+ export default TextInlineImage;
@@ -19,6 +19,7 @@ const React = require('react');
19
19
  const ReactNative = require('../Renderer/shims/ReactNative');
20
20
  const StyleSheet = require('../StyleSheet/StyleSheet');
21
21
  const View = require('../Components/View/View');
22
+ const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
22
23
 
23
24
  const invariant = require('invariant');
24
25
 
@@ -47,10 +48,7 @@ const renderers = findRenderers();
47
48
  // Required for React DevTools to view/edit React Native styles in Flipper.
48
49
  // Flipper doesn't inject these values when initializing DevTools.
49
50
  hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
50
- const viewConfig = require('../Components/View/ReactNativeViewViewConfig');
51
- hook.nativeStyleEditorValidAttributes = Object.keys(
52
- viewConfig.validAttributes.style,
53
- );
51
+ hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
54
52
 
55
53
  function findRenderers(): $ReadOnlyArray<ReactRenderer> {
56
54
  const allRenderers = Array.from(hook.renderers.values());
@@ -10,14 +10,15 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {SpyData} from '../BatchedBridge/MessageQueue';
13
14
  const JSEventLoopWatchdog = require('./JSEventLoopWatchdog');
14
- const MessageQueue = require('../BatchedBridge/MessageQueue');
15
15
 
16
+ const MessageQueue = require('../BatchedBridge/MessageQueue');
16
17
  const infoLog = require('../Utilities/infoLog');
17
18
 
18
19
  const BridgeSpyStallHandler = {
19
20
  register: function () {
20
- let spyBuffer = [];
21
+ let spyBuffer: Array<SpyData> = [];
21
22
  MessageQueue.spy(data => {
22
23
  spyBuffer.push(data);
23
24
  });
@@ -27,7 +28,7 @@ const BridgeSpyStallHandler = {
27
28
  infoLog(
28
29
  spyBuffer.length + ' bridge messages during stall: ',
29
30
  spyBuffer.map(info => {
30
- let args = '<args>';
31
+ let args: string | Array<?string> = '<args>';
31
32
  try {
32
33
  args = JSON.stringify(info.args);
33
34
  } catch (e1) {
@@ -91,7 +91,6 @@ const InteractionManager = {
91
91
  onFulfill?: ?(void) => ?(Promise<U> | U),
92
92
  onReject?: ?(error: mixed) => ?(Promise<U> | U),
93
93
  ) => Promise<U>,
94
- done: () => void,
95
94
  cancel: () => void,
96
95
  ...
97
96
  } {
@@ -110,16 +109,6 @@ const InteractionManager = {
110
109
  return {
111
110
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
112
111
  then: promise.then.bind(promise),
113
- done: (...args) => {
114
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
115
- if (promise.done) {
116
- return promise.done(...args);
117
- } else {
118
- console.warn(
119
- 'Tried to call done when not supported by current Promise implementation.',
120
- );
121
- }
122
- },
123
112
  cancel: function () {
124
113
  _taskQueue.cancelTasks(tasks);
125
114
  },
@@ -165,7 +154,7 @@ const _interactionSet = new Set();
165
154
  const _addInteractionSet = new Set();
166
155
  const _deleteInteractionSet = new Set();
167
156
  const _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});
168
- let _nextUpdateHandle = 0;
157
+ let _nextUpdateHandle: $FlowFixMe | TimeoutID = 0;
169
158
  let _inc = 0;
170
159
  let _deadline = -1;
171
160
 
@@ -171,10 +171,11 @@ class TaskQueue {
171
171
  this.hasTasksToProcess() && this._onMoreTasks();
172
172
  })
173
173
  .catch(ex => {
174
- ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;
175
- throw ex;
176
- })
177
- .done();
174
+ setTimeout(() => {
175
+ ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;
176
+ throw ex;
177
+ }, 0);
178
+ });
178
179
  }
179
180
  }
180
181
 
@@ -19,6 +19,7 @@ import type {
19
19
  } from '../Renderer/shims/ReactNativeTypes';
20
20
 
21
21
  import Platform from '../Utilities/Platform';
22
+ import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
22
23
 
23
24
  // Reexport type
24
25
  export type LayoutAnimationConfig = LayoutAnimationConfig_;
@@ -26,6 +27,13 @@ export type LayoutAnimationConfig = LayoutAnimationConfig_;
26
27
  type OnAnimationDidEndCallback = () => void;
27
28
  type OnAnimationDidFailCallback = () => void;
28
29
 
30
+ let isLayoutAnimationEnabled: boolean =
31
+ ReactNativeFeatureFlags.isLayoutAnimationEnabled();
32
+
33
+ function setEnabled(value: boolean) {
34
+ isLayoutAnimationEnabled = isLayoutAnimationEnabled;
35
+ }
36
+
29
37
  /**
30
38
  * Configures the next commit to be animated.
31
39
  *
@@ -43,6 +51,10 @@ function configureNext(
43
51
  return;
44
52
  }
45
53
 
54
+ if (!isLayoutAnimationEnabled) {
55
+ return;
56
+ }
57
+
46
58
  // Since LayoutAnimations may possibly be disabled for now on iOS (Fabric),
47
59
  // or Android (non-Fabric) we race a setTimeout with animation completion,
48
60
  // in case onComplete is never called
@@ -181,6 +193,7 @@ const LayoutAnimation = {
181
193
  spring: (configureNext.bind(null, Presets.spring): (
182
194
  onAnimationDidEnd?: OnAnimationDidEndCallback,
183
195
  ) => void),
196
+ setEnabled,
184
197
  };
185
198
 
186
199
  module.exports = LayoutAnimation;
@@ -8,7 +8,7 @@
8
8
  * @flow strict-local
9
9
  */
10
10
 
11
- import {type EventSubscription} from '../vendor/emitter/EventEmitter';
11
+ import type {EventSubscription} from '../vendor/emitter/EventEmitter';
12
12
  import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
13
13
  import InteractionManager from '../Interaction/InteractionManager';
14
14
  import Platform from '../Utilities/Platform';
@@ -26,6 +26,7 @@ import type {
26
26
  } from './ViewabilityHelper';
27
27
  import type {RenderItemType, RenderItemProps} from './VirtualizedList';
28
28
  import {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';
29
+ import memoizeOne from 'memoize-one';
29
30
 
30
31
  type RequiredProps<ItemT> = {|
31
32
  /**
@@ -141,6 +142,10 @@ type OptionalProps<ItemT> = {|
141
142
  * See `ScrollView` for flow type and further documentation.
142
143
  */
143
144
  fadingEdgeLength?: ?number,
145
+ /**
146
+ * Enable an optimization to memoize the item renderer to prevent unnecessary rerenders.
147
+ */
148
+ strictMode?: boolean,
144
149
  |};
145
150
 
146
151
  /**
@@ -578,9 +583,14 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
578
583
  };
579
584
  }
580
585
 
581
- _renderer = () => {
582
- const {ListItemComponent, renderItem, columnWrapperStyle} = this.props;
583
- const numColumns = numColumnsOrDefault(this.props.numColumns);
586
+ _renderer = (
587
+ ListItemComponent: ?(React.ComponentType<any> | React.Element<any>),
588
+ renderItem: ?RenderItemType<ItemT>,
589
+ columnWrapperStyle: ?ViewStyleProp,
590
+ numColumns: ?number,
591
+ extraData: ?any,
592
+ ) => {
593
+ const cols = numColumnsOrDefault(numColumns);
584
594
 
585
595
  let virtualizedListRenderKey = ListItemComponent
586
596
  ? 'ListItemComponent'
@@ -605,7 +615,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
605
615
  * This comment suppresses an error found when Flow v0.111 was deployed.
606
616
  * To see the error, delete this comment and run Flow. */
607
617
  [virtualizedListRenderKey]: (info: RenderItemProps<ItemT>) => {
608
- if (numColumns > 1) {
618
+ if (cols > 1) {
609
619
  const {item, index} = info;
610
620
  invariant(
611
621
  Array.isArray(item),
@@ -616,7 +626,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
616
626
  {item.map((it, kk) => {
617
627
  const element = renderer({
618
628
  item: it,
619
- index: index * numColumns + kk,
629
+ index: index * cols + kk,
620
630
  separators: info.separators,
621
631
  });
622
632
  return element != null ? (
@@ -632,14 +642,19 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
632
642
  };
633
643
  };
634
644
 
645
+ _memoizedRenderer = memoizeOne(this._renderer);
646
+
635
647
  render(): React.Node {
636
648
  const {
637
649
  numColumns,
638
650
  columnWrapperStyle,
639
651
  removeClippedSubviews: _removeClippedSubviews,
652
+ strictMode = false,
640
653
  ...restProps
641
654
  } = this.props;
642
655
 
656
+ const renderer = strictMode ? this._memoizedRenderer : this._renderer;
657
+
643
658
  return (
644
659
  <VirtualizedList
645
660
  {...restProps}
@@ -651,7 +666,13 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
651
666
  removeClippedSubviews={removeClippedSubviewsOrDefault(
652
667
  _removeClippedSubviews,
653
668
  )}
654
- {...this._renderer()}
669
+ {...renderer(
670
+ this.props.ListItemComponent,
671
+ this.props.renderItem,
672
+ columnWrapperStyle,
673
+ numColumns,
674
+ this.props.extraData,
675
+ )}
655
676
  />
656
677
  );
657
678
  }