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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -0,0 +1,151 @@
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
+
8
+ #pragma once
9
+
10
+ #include <react/bridging/Base.h>
11
+
12
+ #include <array>
13
+ #include <deque>
14
+ #include <initializer_list>
15
+ #include <list>
16
+ #include <set>
17
+ #include <tuple>
18
+ #include <utility>
19
+ #include <vector>
20
+
21
+ namespace facebook::react {
22
+
23
+ namespace array_detail {
24
+
25
+ template <typename T, size_t N>
26
+ struct BridgingStatic {
27
+ static jsi::Array toJs(
28
+ jsi::Runtime& rt,
29
+ const T& array,
30
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
31
+ return toJs(rt, array, jsInvoker, std::make_index_sequence<N>{});
32
+ }
33
+
34
+ private:
35
+ template <size_t... Index>
36
+ static jsi::Array toJs(
37
+ facebook::jsi::Runtime& rt,
38
+ const T& array,
39
+ const std::shared_ptr<CallInvoker>& jsInvoker,
40
+ std::index_sequence<Index...>) {
41
+ return jsi::Array::createWithElements(
42
+ rt, bridging::toJs(rt, std::get<Index>(array), jsInvoker)...);
43
+ }
44
+ };
45
+
46
+ template <typename T>
47
+ struct BridgingDynamic {
48
+ static jsi::Array toJs(
49
+ jsi::Runtime& rt,
50
+ const T& list,
51
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
52
+ jsi::Array result(rt, list.size());
53
+ size_t index = 0;
54
+
55
+ for (const auto& item : list) {
56
+ result.setValueAtIndex(rt, index++, bridging::toJs(rt, item, jsInvoker));
57
+ }
58
+
59
+ return result;
60
+ }
61
+ };
62
+
63
+ } // namespace array_detail
64
+
65
+ template <typename T, size_t N>
66
+ struct Bridging<std::array<T, N>>
67
+ : array_detail::BridgingStatic<std::array<T, N>, N> {
68
+ static std::array<T, N> fromJs(
69
+ facebook::jsi::Runtime& rt,
70
+ const jsi::Array& array,
71
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
72
+ size_t length = array.length(rt);
73
+
74
+ std::array<T, N> result;
75
+ for (size_t i = 0; i < length; i++) {
76
+ result[i] =
77
+ bridging::fromJs<T>(rt, array.getValueAtIndex(rt, i), jsInvoker);
78
+ }
79
+
80
+ return result;
81
+ }
82
+ };
83
+
84
+ template <typename T1, typename T2>
85
+ struct Bridging<std::pair<T1, T2>>
86
+ : array_detail::BridgingStatic<std::pair<T1, T2>, 2> {
87
+ static std::pair<T1, T1> fromJs(
88
+ facebook::jsi::Runtime& rt,
89
+ const jsi::Array& array,
90
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
91
+ return std::make_pair(
92
+ bridging::fromJs<T1>(rt, array.getValueAtIndex(rt, 0), jsInvoker),
93
+ bridging::fromJs<T2>(rt, array.getValueAtIndex(rt, 1), jsInvoker));
94
+ }
95
+ };
96
+
97
+ template <typename... Types>
98
+ struct Bridging<std::tuple<Types...>>
99
+ : array_detail::BridgingStatic<std::tuple<Types...>, sizeof...(Types)> {};
100
+
101
+ template <typename T>
102
+ struct Bridging<std::deque<T>> : array_detail::BridgingDynamic<std::deque<T>> {
103
+ };
104
+
105
+ template <typename T>
106
+ struct Bridging<std::initializer_list<T>>
107
+ : array_detail::BridgingDynamic<std::initializer_list<T>> {};
108
+
109
+ template <typename T>
110
+ struct Bridging<std::list<T>> : array_detail::BridgingDynamic<std::list<T>> {};
111
+
112
+ template <typename T>
113
+ struct Bridging<std::vector<T>>
114
+ : array_detail::BridgingDynamic<std::vector<T>> {
115
+ static std::vector<T> fromJs(
116
+ facebook::jsi::Runtime& rt,
117
+ const jsi::Array& array,
118
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
119
+ size_t length = array.length(rt);
120
+
121
+ std::vector<T> vector;
122
+ vector.reserve(length);
123
+
124
+ for (size_t i = 0; i < length; i++) {
125
+ vector.push_back(
126
+ bridging::fromJs<T>(rt, array.getValueAtIndex(rt, i), jsInvoker));
127
+ }
128
+
129
+ return vector;
130
+ }
131
+ };
132
+
133
+ template <typename T>
134
+ struct Bridging<std::set<T>> : array_detail::BridgingDynamic<std::set<T>> {
135
+ static std::set<T> fromJs(
136
+ facebook::jsi::Runtime& rt,
137
+ const jsi::Array& array,
138
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
139
+ size_t length = array.length(rt);
140
+
141
+ std::set<T> set;
142
+ for (size_t i = 0; i < length; i++) {
143
+ set.insert(
144
+ bridging::fromJs<T>(rt, array.getValueAtIndex(rt, i), jsInvoker));
145
+ }
146
+
147
+ return set;
148
+ }
149
+ };
150
+
151
+ } // namespace facebook::react
@@ -1,154 +1,177 @@
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
-
8
- // [Windows #13391]
9
-
10
- #pragma once
11
-
12
- #include <jsi/jsi.h>
13
- #include <Convert.h>
14
-
15
- #include <cstdint>
16
- #include <memory>
17
- #include <type_traits>
18
-
19
- namespace facebook::react {
20
-
21
- class CallInvoker;
22
-
23
- template <typename T, typename = void>
24
- struct Bridging;
25
-
26
- template <>
27
- struct Bridging<void> {
28
- // Highly generic code may result in "casting" to void.
29
- static void fromJs(jsi::Runtime&, const jsi::Value&) {}
30
- };
31
-
32
- namespace bridging {
33
- namespace detail {
34
-
35
- template <typename F>
36
- struct function_wrapper;
37
-
38
- template <typename C, typename R, typename... Args>
39
- struct function_wrapper<R (C::*)(Args...)> {
40
- using type = std::function<R(Args...)>;
41
- };
42
-
43
- template <typename C, typename R, typename... Args>
44
- struct function_wrapper<R (C::*)(Args...) const> {
45
- using type = std::function<R(Args...)>;
46
- };
47
-
48
- template <typename T, typename = void>
49
- struct bridging_wrapper {
50
- using type = remove_cvref_t<T>;
51
- };
52
-
53
- // Convert lambda types to move-only function types since we can't specialize
54
- // Bridging templates for arbitrary lambdas.
55
- template <typename T>
56
- struct bridging_wrapper<
57
- T,
58
- std::void_t<decltype(&remove_cvref_t<T>::operator())>>
59
- : function_wrapper<decltype(&remove_cvref_t<T>::operator())> {};
60
-
61
- } // namespace detail
62
-
63
- template <typename T>
64
- using bridging_t = typename detail::bridging_wrapper<T>::type;
65
-
66
- template <typename R, typename T, std::enable_if_t<is_jsi_v<T>, int> = 0>
67
- auto fromJs(jsi::Runtime& rt, T&& value, const std::shared_ptr<CallInvoker>&)
68
- -> decltype(static_cast<R>(convert(rt, std::forward<T>(value)))) {
69
- return convert(rt, std::forward<T>(value));
70
- }
71
-
72
- template <typename R, typename T>
73
- auto fromJs(jsi::Runtime& rt, T&& value, const std::shared_ptr<CallInvoker>&)
74
- -> decltype(Bridging<remove_cvref_t<R>>::fromJs(
75
- rt,
76
- convert(rt, std::forward<T>(value)))) {
77
- return Bridging<remove_cvref_t<R>>::fromJs(
78
- rt, convert(rt, std::forward<T>(value)));
79
- }
80
-
81
- template <typename R, typename T>
82
- auto fromJs(
83
- jsi::Runtime& rt,
84
- T&& value,
85
- const std::shared_ptr<CallInvoker>& jsInvoker)
86
- -> decltype(Bridging<remove_cvref_t<R>>::fromJs(
87
- rt,
88
- convert(rt, std::forward<T>(value)),
89
- jsInvoker)) {
90
- return Bridging<remove_cvref_t<R>>::fromJs(
91
- rt, convert(rt, std::forward<T>(value)), jsInvoker);
92
- }
93
-
94
- template <typename T, std::enable_if_t<is_jsi_v<T>, int> = 0>
95
- auto toJs(
96
- jsi::Runtime& rt,
97
- T&& value,
98
- const std::shared_ptr<CallInvoker>& = nullptr) -> remove_cvref_t<T> {
99
- return convert(rt, std::forward<T>(value));
100
- }
101
-
102
- template <typename T>
103
- auto toJs(
104
- jsi::Runtime& rt,
105
- T&& value,
106
- const std::shared_ptr<CallInvoker>& = nullptr)
107
- -> decltype(Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value))) {
108
- return Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value));
109
- }
110
-
111
- template <typename T>
112
- auto toJs(
113
- jsi::Runtime& rt,
114
- T&& value,
115
- const std::shared_ptr<CallInvoker>& jsInvoker)
116
- -> decltype(Bridging<bridging_t<T>>::toJs(
117
- rt,
118
- std::forward<T>(value),
119
- jsInvoker)) {
120
- return Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value), jsInvoker);
121
- }
122
-
123
- template <typename, typename = jsi::Value, typename = void>
124
- inline constexpr bool supportsFromJs = false;
125
-
126
- template <typename T, typename Arg = jsi::Value>
127
- inline constexpr bool supportsFromJs<
128
- T,
129
- Arg,
130
- std::void_t<decltype(fromJs<T>(
131
- std::declval<jsi::Runtime&>(),
132
- std::declval<Arg>(),
133
- nullptr))>> = true;
134
-
135
- template <typename, typename = jsi::Value, typename = void>
136
- inline constexpr bool supportsToJs = false;
137
-
138
- template <typename T, typename Ret = jsi::Value>
139
- inline constexpr bool supportsToJs<
140
- T,
141
- Ret,
142
- std::void_t<decltype(toJs(
143
- std::declval<jsi::Runtime&>(),
144
- std::declval<T>(),
145
- nullptr))>> =
146
- std::is_convertible_v<
147
- decltype(toJs(
148
- std::declval<jsi::Runtime&>(),
149
- std::declval<T>(),
150
- nullptr)),
151
- Ret>;
152
-
153
- } // namespace bridging
154
- } // namespace facebook::react
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
+
8
+ #pragma once
9
+
10
+ #include <jsi/jsi.h>
11
+ #include <react/bridging/Convert.h>
12
+
13
+ #include <cstdint>
14
+ #include <memory>
15
+ #include <type_traits>
16
+
17
+ namespace facebook::react {
18
+
19
+ class CallInvoker;
20
+
21
+ template <typename T, typename = void>
22
+ struct Bridging;
23
+
24
+ template <>
25
+ struct Bridging<void> {
26
+ // Highly generic code may result in "casting" to void.
27
+ static void fromJs(jsi::Runtime&, const jsi::Value&) {}
28
+ };
29
+
30
+ namespace bridging {
31
+ namespace detail {
32
+
33
+ template <typename F>
34
+ struct function_wrapper;
35
+
36
+ template <typename C, typename R, typename... Args>
37
+ struct function_wrapper<R (C::*)(Args...)> {
38
+ using type = std::function<R(Args...)>;
39
+ };
40
+
41
+ template <typename C, typename R, typename... Args>
42
+ struct function_wrapper<R (C::*)(Args...) const> {
43
+ using type = std::function<R(Args...)>;
44
+ };
45
+
46
+ template <typename T, typename = void>
47
+ struct bridging_wrapper {
48
+ using type = remove_cvref_t<T>;
49
+ };
50
+
51
+ // Convert lambda types to move-only function types since we can't specialize
52
+ // Bridging templates for arbitrary lambdas.
53
+ template <typename T>
54
+ struct bridging_wrapper<
55
+ T,
56
+ std::void_t<decltype(&remove_cvref_t<T>::operator())>>
57
+ : function_wrapper<decltype(&remove_cvref_t<T>::operator())> {};
58
+
59
+ } // namespace detail
60
+
61
+ template <typename T>
62
+ using bridging_t = typename detail::bridging_wrapper<T>::type;
63
+
64
+ template <typename R, typename T, std::enable_if_t<is_jsi_v<T>, int> = 0>
65
+ auto fromJs(jsi::Runtime& rt, T&& value, const std::shared_ptr<CallInvoker>&)
66
+ -> decltype(static_cast<R>(
67
+ std::move(convert(rt, std::forward<T>(value))))) {
68
+ return static_cast<R>(std::move(convert(rt, std::forward<T>(value))));
69
+ }
70
+
71
+ template <typename R, typename T>
72
+ auto fromJs(jsi::Runtime& rt, T&& value, const std::shared_ptr<CallInvoker>&)
73
+ -> decltype(Bridging<remove_cvref_t<R>>::fromJs(
74
+ rt,
75
+ convert(rt, std::forward<T>(value)))) {
76
+ return Bridging<remove_cvref_t<R>>::fromJs(
77
+ rt, convert(rt, std::forward<T>(value)));
78
+ }
79
+
80
+ template <typename R, typename T>
81
+ auto fromJs(
82
+ jsi::Runtime& rt,
83
+ T&& value,
84
+ const std::shared_ptr<CallInvoker>& jsInvoker)
85
+ -> decltype(Bridging<remove_cvref_t<R>>::fromJs(
86
+ rt,
87
+ convert(rt, std::forward<T>(value)),
88
+ jsInvoker)) {
89
+ return Bridging<remove_cvref_t<R>>::fromJs(
90
+ rt, convert(rt, std::forward<T>(value)), jsInvoker);
91
+ }
92
+
93
+ template <typename T, std::enable_if_t<is_jsi_v<T>, int> = 0>
94
+ auto toJs(
95
+ jsi::Runtime& rt,
96
+ T&& value,
97
+ const std::shared_ptr<CallInvoker>& = nullptr) -> remove_cvref_t<T> {
98
+ return convert(rt, std::forward<T>(value));
99
+ }
100
+
101
+ template <typename T>
102
+ auto toJs(
103
+ jsi::Runtime& rt,
104
+ T&& value,
105
+ const std::shared_ptr<CallInvoker>& = nullptr)
106
+ -> decltype(Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value))) {
107
+ return Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value));
108
+ }
109
+
110
+ template <typename T>
111
+ auto toJs(
112
+ jsi::Runtime& rt,
113
+ T&& value,
114
+ const std::shared_ptr<CallInvoker>& jsInvoker)
115
+ -> decltype(Bridging<bridging_t<T>>::toJs(
116
+ rt,
117
+ std::forward<T>(value),
118
+ jsInvoker)) {
119
+ return Bridging<bridging_t<T>>::toJs(rt, std::forward<T>(value), jsInvoker);
120
+ }
121
+
122
+ template <typename, typename = jsi::Value, typename = void>
123
+ inline constexpr bool supportsFromJs = false;
124
+
125
+ template <typename T, typename Arg>
126
+ inline constexpr bool supportsFromJs<
127
+ T,
128
+ Arg,
129
+ std::void_t<decltype(fromJs<T>(
130
+ std::declval<jsi::Runtime&>(),
131
+ std::declval<Arg>(),
132
+ nullptr))>> = true;
133
+
134
+ template <typename T>
135
+ inline constexpr bool supportsFromJs<
136
+ T,
137
+ jsi::Value,
138
+ std::void_t<decltype(fromJs<T>(
139
+ std::declval<jsi::Runtime&>(),
140
+ std::declval<jsi::Value>(),
141
+ nullptr))>> = true;
142
+
143
+ template <typename, typename = jsi::Value, typename = void>
144
+ inline constexpr bool supportsToJs = false;
145
+
146
+ template <typename T, typename Ret>
147
+ inline constexpr bool supportsToJs<
148
+ T,
149
+ Ret,
150
+ std::void_t<decltype(toJs(
151
+ std::declval<jsi::Runtime&>(),
152
+ std::declval<T>(),
153
+ nullptr))>> =
154
+ std::is_convertible_v<
155
+ decltype(toJs(
156
+ std::declval<jsi::Runtime&>(),
157
+ std::declval<T>(),
158
+ nullptr)),
159
+ Ret>;
160
+
161
+ template <typename T>
162
+ inline constexpr bool supportsToJs<
163
+ T,
164
+ jsi::Value,
165
+ std::void_t<decltype(toJs(
166
+ std::declval<jsi::Runtime&>(),
167
+ std::declval<T>(),
168
+ nullptr))>> =
169
+ std::is_convertible_v<
170
+ decltype(toJs(
171
+ std::declval<jsi::Runtime&>(),
172
+ std::declval<T>(),
173
+ nullptr)),
174
+ jsi::Value>;
175
+
176
+ } // namespace bridging
177
+ } // namespace facebook::react
@@ -0,0 +1,25 @@
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
+
8
+ #pragma once
9
+
10
+ #include <react/bridging/Base.h>
11
+
12
+ namespace facebook::react {
13
+
14
+ template <>
15
+ struct Bridging<bool> {
16
+ static bool fromJs(jsi::Runtime&, const jsi::Value& value) {
17
+ return value.asBool();
18
+ }
19
+
20
+ static jsi::Value toJs(jsi::Runtime&, bool value) {
21
+ return value;
22
+ }
23
+ };
24
+
25
+ } // namespace facebook::react
@@ -0,0 +1,21 @@
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
+
8
+ #pragma once
9
+
10
+ #include <react/bridging/AString.h>
11
+ #include <react/bridging/Array.h>
12
+ #include <react/bridging/Bool.h>
13
+ #include <react/bridging/Class.h>
14
+ // #include <react/bridging/Dynamic.h> // Line causes Error C1083 Cannot open include file: 'double-conversion/double-conversion.h' #11644
15
+ #include <react/bridging/Error.h>
16
+ #include <react/bridging/EventEmitter.h> // [Windows #13391]
17
+ #include <react/bridging/Function.h>
18
+ #include <react/bridging/Number.h>
19
+ #include <react/bridging/Object.h>
20
+ #include <react/bridging/Promise.h>
21
+ #include <react/bridging/Value.h> // [Windows #13391]
@@ -0,0 +1,67 @@
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
+
8
+ #pragma once
9
+
10
+ #include <jsi/jsi.h>
11
+
12
+ #include <memory>
13
+
14
+ #include <react/bridging/LongLivedObject.h>
15
+
16
+ namespace facebook::react {
17
+
18
+ class CallInvoker;
19
+
20
+ // Helper for passing jsi::Function arg to other methods.
21
+ class CallbackWrapper : public LongLivedObject {
22
+ private:
23
+ CallbackWrapper(
24
+ jsi::Function&& callback,
25
+ jsi::Runtime& runtime,
26
+ std::shared_ptr<CallInvoker> jsInvoker)
27
+ : LongLivedObject(runtime),
28
+ callback_(std::move(callback)),
29
+ jsInvoker_(std::move(jsInvoker)) {}
30
+
31
+ jsi::Function callback_;
32
+ std::shared_ptr<CallInvoker> jsInvoker_;
33
+
34
+ public:
35
+ static std::weak_ptr<CallbackWrapper> createWeak(
36
+ jsi::Function&& callback,
37
+ jsi::Runtime& runtime,
38
+ std::shared_ptr<CallInvoker> jsInvoker) {
39
+ auto wrapper = std::shared_ptr<CallbackWrapper>(new CallbackWrapper(
40
+ std::move(callback), runtime, std::move(jsInvoker)));
41
+ LongLivedObjectCollection::get(runtime).add(wrapper);
42
+ return wrapper;
43
+ }
44
+
45
+ // Delete the enclosed jsi::Function
46
+ void destroy() {
47
+ allowRelease();
48
+ }
49
+
50
+ jsi::Function& callback() noexcept {
51
+ return callback_;
52
+ }
53
+
54
+ jsi::Runtime& runtime() noexcept {
55
+ return runtime_;
56
+ }
57
+
58
+ CallInvoker& jsInvoker() noexcept {
59
+ return *(jsInvoker_);
60
+ }
61
+
62
+ std::shared_ptr<CallInvoker> jsInvokerPtr() noexcept {
63
+ return jsInvoker_;
64
+ }
65
+ };
66
+
67
+ } // namespace facebook::react