react-native-windows 0.75.4 → 0.76.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.
- package/.flowconfig +6 -4
- package/Directory.Build.props +4 -0
- package/Directory.Build.targets +5 -0
- package/Libraries/Alert/Alert.js +3 -0
- package/Libraries/Alert/Alert.windows.js +3 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +7 -7
- package/Libraries/Animated/NativeAnimatedAllowlist.js +111 -0
- package/Libraries/Animated/animations/Animation.js +11 -1
- package/Libraries/Animated/animations/DecayAnimation.js +1 -1
- package/Libraries/Animated/animations/SpringAnimation.js +1 -1
- package/Libraries/Animated/animations/TimingAnimation.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +3 -2
- package/Libraries/Animated/createAnimatedComponent.js +10 -9
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +3 -2
- package/Libraries/Animated/nodes/AnimatedNode.js +42 -33
- package/Libraries/Animated/nodes/AnimatedObject.js +56 -50
- package/Libraries/Animated/nodes/AnimatedProps.js +77 -40
- package/Libraries/Animated/nodes/AnimatedStyle.js +103 -59
- package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
- package/Libraries/Animated/nodes/AnimatedTransform.js +102 -67
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +21 -22
- package/Libraries/Animated/useAnimatedProps.js +142 -7
- package/Libraries/BatchedBridge/NativeModules.js +2 -0
- package/Libraries/Blob/FileReader.js +1 -1
- package/Libraries/Blob/URL.js +2 -62
- package/Libraries/Blob/URLSearchParams.js +71 -0
- package/Libraries/Components/Button.windows.js +0 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +17 -0
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.js +131 -169
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +3 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +3 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +32 -2
- package/Libraries/Components/TextInput/TextInput.js +230 -94
- package/Libraries/Components/TextInput/TextInput.windows.js +230 -105
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +23 -1
- package/Libraries/Components/View/ReactNativeViewAttributes.js +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +2 -0
- package/Libraries/Components/View/View.windows.js +32 -30
- package/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
- package/Libraries/Components/View/ViewNativeComponent.js +0 -1
- package/Libraries/Components/View/ViewPropTypes.js +14 -0
- package/Libraries/Components/View/ViewPropTypes.windows.js +14 -0
- package/Libraries/Core/ExceptionsManager.js +2 -0
- package/Libraries/Core/InitializeCore.js +3 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -0
- package/Libraries/Core/ReactNativeVersion.js +4 -4
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpErrorHandling.js +7 -1
- package/Libraries/Core/setUpGlobals.js +1 -0
- package/Libraries/Core/setUpReactRefresh.js +0 -4
- package/Libraries/Image/AssetSourceResolver.js +28 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +28 -1
- package/Libraries/Image/Image.android.js +9 -14
- package/Libraries/Image/Image.ios.js +11 -22
- package/Libraries/Image/Image.windows.js +11 -22
- package/Libraries/Image/ImageBackground.js +1 -8
- package/Libraries/Image/ImageUtils.js +9 -9
- package/Libraries/Image/ImageViewNativeComponent.js +1 -0
- package/Libraries/Inspector/Inspector.js +3 -2
- package/Libraries/Inspector/InspectorPanel.js +16 -10
- package/Libraries/Inspector/NetworkOverlay.js +1 -1
- package/Libraries/Interaction/TaskQueue.js +1 -0
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/Lists/SectionList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +3 -3
- package/Libraries/LogBox/Data/LogBoxData.js +24 -3
- package/Libraries/LogBox/LogBoxNotificationContainer.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +9 -8
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +9 -8
- package/Libraries/Modal/Modal.js +0 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +9 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +17 -1
- package/Libraries/NativeComponent/NativeComponentRegistry.js +22 -22
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -21
- package/Libraries/Network/XMLHttpRequest.js +4 -2
- package/Libraries/ReactNative/AppContainer-dev.js +1 -5
- package/Libraries/ReactNative/AppContainer-prod.js +1 -5
- package/Libraries/ReactNative/AppContainer.js +1 -2
- package/Libraries/ReactNative/AppRegistry.d.ts +0 -4
- package/Libraries/ReactNative/AppRegistry.js +1 -7
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +5 -5
- package/Libraries/ReactNative/RendererImplementation.js +26 -4
- package/Libraries/ReactNative/getNativeComponentAttributes.js +12 -0
- package/Libraries/ReactNative/renderApplication.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +11 -4
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +152 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +60 -5
- package/Libraries/StyleSheet/processBackgroundImage.js +384 -0
- package/Libraries/StyleSheet/processBoxShadow.js +209 -0
- package/Libraries/StyleSheet/processFilter.js +231 -42
- package/Libraries/Text/Text.js +394 -196
- package/Libraries/Text/Text.windows.js +476 -300
- package/Libraries/Text/TextNativeComponent.js +2 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +13 -50
- package/Libraries/Types/CodegenTypes.js +3 -1
- package/Libraries/Utilities/Appearance.js +108 -84
- package/Libraries/Utilities/DevLoadingView.js +2 -4
- package/Libraries/Utilities/HMRClient.js +8 -6
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +0 -9
- package/Libraries/Utilities/stringifyViewConfig.js +22 -0
- package/Libraries/Utilities/useColorScheme.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +6 -5
- package/Microsoft.ReactNative/ComponentView.idl +11 -0
- package/Microsoft.ReactNative/Composition.Input.idl +1 -0
- package/Microsoft.ReactNative/CompositionSwitcher.idl +3 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +9 -9
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +9 -9
- package/Microsoft.ReactNative/Fabric/ComponentView.cpp +7 -9
- package/Microsoft.ReactNative/Fabric/ComponentView.h +5 -6
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +4 -0
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +44 -13
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +42 -5
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +81 -63
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +2 -3
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +8 -6
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/FocusManager.cpp +20 -6
- package/Microsoft.ReactNative/Fabric/Composition/FocusManager.h +13 -6
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +2 -3
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +72 -54
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +14 -4
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +26 -8
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +5 -2
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -7
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +6 -6
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +97 -140
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +18 -11
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +5 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +0 -13
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +0 -3
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +29 -4
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +2 -0
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +1 -2
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +28 -12
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +33 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -9
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +10 -4
- package/Microsoft.ReactNative/IReactModuleBuilder.cpp +5 -0
- package/Microsoft.ReactNative/IReactModuleBuilder.h +1 -0
- package/Microsoft.ReactNative/IReactModuleBuilder.idl +9 -0
- package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +8 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +2 -0
- package/Microsoft.ReactNative/Modules/AlertModule.cpp +3 -1
- package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +1 -1
- package/Microsoft.ReactNative/Modules/AppearanceModule.h +7 -1
- package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +3 -3
- package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -1
- package/Microsoft.ReactNative/Modules/LinkingManagerModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +1 -1
- package/Microsoft.ReactNative/Modules/LogBoxModule.cpp +9 -0
- package/Microsoft.ReactNative/Modules/LogBoxModule.h +2 -0
- package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +121 -0
- package/Microsoft.ReactNative/Modules/SampleTurboModule.h +90 -0
- package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -7
- package/Microsoft.ReactNative/ReactHost/MsoReactContext.h +0 -5
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +5 -1
- package/Microsoft.ReactNative/ReactInstanceSettingsBuilder.cpp +59 -0
- package/Microsoft.ReactNative/ReactInstanceSettingsBuilder.h +23 -0
- package/Microsoft.ReactNative/ReactNativeAppBuilder.cpp +179 -0
- package/Microsoft.ReactNative/ReactNativeAppBuilder.h +35 -0
- package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +69 -0
- package/Microsoft.ReactNative/ReactNativeIsland.idl +2 -0
- package/Microsoft.ReactNative/ReactNativeWin32App.cpp +82 -0
- package/Microsoft.ReactNative/ReactNativeWin32App.h +38 -0
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +45 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -1
- package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +25 -16
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +3 -4
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +3 -0
- package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +2 -2
- package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +62 -4
- package/Microsoft.ReactNative.Cxx/NativeModules.h +131 -14
- package/Microsoft.ReactNative.Managed.CodeGen/ReactNativeNames.cs +10 -2
- package/PropertySheets/Autolink.props +1 -1
- package/PropertySheets/Bundle.props +1 -1
- package/PropertySheets/Codegen.props +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/NuGet.LockFile.props +18 -0
- package/README.md +29 -29
- package/ReactCommon/ReactCommon.vcxproj +5 -1
- package/ReactCommon/ReactCommon.vcxproj.filters +11 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -7
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +441 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +266 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h +56 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +3 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Convert.h +172 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +4 -5
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +2 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +3 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +9 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/LayoutableShadowNode.cpp +363 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +22 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +118 -51
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +8 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -2
- package/Shared/Modules/WebSocketModule.cpp +1 -2
- package/Shared/Networking/WinRTWebSocketResource.cpp +4 -1
- package/Shared/Shared.vcxitems +38 -2
- package/Shared/Shared.vcxitems.filters +6 -1
- package/Shared/TurboModuleManager.cpp +0 -3
- package/codegen/NativeLinkingManagerSpec.g.h +3 -3
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +198 -54
- package/codegen/NativeSampleTurboModuleSpec.g.h +35 -0
- package/codegen/rnwcoreJSI-generated.cpp +245 -101
- package/codegen/rnwcoreJSI.h +847 -548
- package/index.js +3 -1
- package/index.windows.js +3 -1
- package/jest/mockComponent.js +4 -1
- package/jest/mockModal.js +1 -3
- package/jest/mockScrollView.js +1 -1
- package/jest/renderer.js +2 -2
- package/jest/setup.js +16 -13
- package/package.json +34 -30
- package/src/private/animated/NativeAnimatedHelper.js +438 -0
- package/src/private/animated/NativeAnimatedValidation.js +64 -0
- package/src/private/components/HScrollViewNativeComponents.js +56 -0
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +29 -0
- package/src/private/components/VScrollViewNativeComponents.js +48 -0
- package/src/private/components/useSyncOnScroll.js +48 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +166 -16
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +29 -5
- package/src/private/fusebox/FuseboxSessionObserver.js +42 -0
- package/{Libraries/Core → src/private/renderer/errorhandling}/ErrorHandlers.js +14 -4
- package/src/private/setup/setUpDOM.js +28 -0
- package/src/private/setup/setUpIntersectionObserver.js +27 -0
- package/src/private/setup/setUpMutationObserver.js +26 -0
- package/src/private/setup/setUpPerformanceObserver.js +64 -0
- package/src/private/specs/modules/NativeAppearance.js +3 -3
- package/src/private/specs/modules/NativeLinkingManager.js +1 -1
- package/src/private/specs/modules/NativePlatformConstantsWindows.js +7 -0
- package/src/private/specs/modules/NativeSampleTurboModule.js +14 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +6 -4
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserver.js +5 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverEntry.js +3 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverManager.js +14 -17
- package/src/private/{specs/modules → webapis/intersectionobserver/specs}/NativeIntersectionObserver.js +2 -2
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver/specs}/__mocks__/NativeIntersectionObserver.js +4 -4
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserver.js +5 -3
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserverManager.js +24 -15
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationRecord.js +4 -6
- package/src/private/{specs/modules → webapis/mutationobserver/specs}/NativeMutationObserver.js +2 -2
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver/specs}/__mocks__/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/{EventCounts.js → EventTiming.js} +65 -3
- package/src/private/webapis/performance/LongTasks.js +39 -0
- package/src/private/webapis/performance/Performance.js +22 -9
- package/src/private/webapis/performance/PerformanceEntry.js +36 -18
- package/src/private/webapis/performance/PerformanceObserver.js +29 -43
- package/src/private/webapis/performance/RawPerformanceEntry.js +24 -1
- package/src/private/webapis/performance/UserTiming.js +17 -12
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +1 -1
- package/template/cpp-app/src/AutolinkedNativeModules.g.cpp +1 -1
- package/template/cpp-app/src/AutolinkedNativeModules.g.h +1 -1
- package/template/cs-app/src/AutolinkedNativeModules.g.cs +1 -1
- package/template/index.windows.bundle +1 -1
- package/template/metro.config.js +2 -2
- package/template/shared-app/src/AutolinkedNativeModules.g.props +1 -1
- package/template/shared-app/src/AutolinkedNativeModules.g.targets +1 -1
- package/templates/cpp-app/metro.config.js +2 -2
- package/templates/cpp-app/template.config.js +5 -5
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.cpp +1 -1
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.h +1 -1
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +2 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
- package/templates/cpp-lib/example/metro.config.js +2 -2
- package/templates/cpp-lib/template.config.js +3 -3
- package/templates/cpp-lib/windows/MyLib/MyLib.h +3 -3
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
- package/types/experimental.d.ts +12 -98
- package/Common/packages.lock.json +0 -26
- package/Folly/packages.lock.json +0 -23
- package/Libraries/Animated/NativeAnimatedHelper.js +0 -615
- package/Libraries/Core/setUpIntersectionObserver.js +0 -16
- package/Libraries/Core/setUpMutationObserver.js +0 -16
- package/Libraries/Core/setUpPerformanceObserver.js +0 -18
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +0 -13
- package/Libraries/MutationObserver/NativeMutationObserver.js +0 -13
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -135
- package/Microsoft.ReactNative/packages.lock.json +0 -132
- package/Microsoft.ReactNative.Managed/packages.lock.json +0 -373
- package/Microsoft.ReactNative.Managed.CodeGen/packages.lock.json +0 -3197
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2396
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -136
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -388
- package/ReactCommon/packages.lock.json +0 -30
- package/fmt/packages.lock.json +0 -13
- package/src/private/core/setUpDOM.js +0 -18
- package/src/private/webapis/performance/PerformanceEventTiming.js +0 -55
- /package/src/private/{core → styles}/composeStyles.js +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#include "pch.h"
|
|
2
|
+
#include "ReactNativeWin32App.h"
|
|
3
|
+
#include "ReactNativeWin32App.g.cpp"
|
|
4
|
+
#include "ReactNativeHost.h"
|
|
5
|
+
#include "winrt/Microsoft.UI.Composition.h"
|
|
6
|
+
#include "winrt/Microsoft.UI.Content.h"
|
|
7
|
+
#include "winrt/Microsoft.UI.Interop.h"
|
|
8
|
+
#include "winrt/Microsoft.UI.Windowing.h"
|
|
9
|
+
|
|
10
|
+
namespace winrt::Microsoft::ReactNative::implementation {
|
|
11
|
+
ReactNativeWin32App::ReactNativeWin32App() {}
|
|
12
|
+
|
|
13
|
+
ReactNativeWin32App::~ReactNativeWin32App() {
|
|
14
|
+
m_desktopChildSiteBridge = nullptr;
|
|
15
|
+
|
|
16
|
+
// Destroy all Composition objects
|
|
17
|
+
m_compositor.Close();
|
|
18
|
+
m_compositor = nullptr;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void ReactNativeWin32App::AppWindow(winrt::Microsoft::UI::Windowing::AppWindow const &appWindow) {
|
|
22
|
+
m_appWindow = appWindow;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
winrt::Microsoft::UI::Windowing::AppWindow ReactNativeWin32App::AppWindow() {
|
|
26
|
+
return m_appWindow;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
void ReactNativeWin32App::Compositor(winrt::Microsoft::UI::Composition::Compositor const &compositor) {
|
|
30
|
+
m_compositor = compositor;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
winrt::Microsoft::UI::Composition::Compositor ReactNativeWin32App::Compositor() {
|
|
34
|
+
return m_compositor;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
winrt::Microsoft::ReactNative::ReactNativeIsland ReactNativeWin32App::ReactNativeIsland() {
|
|
38
|
+
return m_reactNativeIsland;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void ReactNativeWin32App::ReactNativeIsland(winrt::Microsoft::ReactNative::ReactNativeIsland const &reactNativeIsland) {
|
|
42
|
+
m_reactNativeIsland = reactNativeIsland;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
winrt::Microsoft::UI::Content::DesktopChildSiteBridge ReactNativeWin32App::DesktopChildSiteBridge() {
|
|
46
|
+
return m_desktopChildSiteBridge;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
void ReactNativeWin32App::DesktopChildSiteBridge(
|
|
50
|
+
winrt::Microsoft::UI::Content::DesktopChildSiteBridge const &desktopChildSiteBridge) {
|
|
51
|
+
m_desktopChildSiteBridge = desktopChildSiteBridge;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
winrt::Microsoft::ReactNative::ReactNativeHost ReactNativeWin32App::ReactNativeHost() {
|
|
55
|
+
if (m_host == nullptr) {
|
|
56
|
+
m_host = winrt::make<winrt::Microsoft::ReactNative::implementation::ReactNativeHost>();
|
|
57
|
+
}
|
|
58
|
+
return m_host;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void ReactNativeWin32App::ReactNativeHost(winrt::Microsoft::ReactNative::ReactNativeHost const &host) {
|
|
62
|
+
m_host = host;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
void ReactNativeWin32App::DispatchQueueController(
|
|
66
|
+
winrt::Microsoft::UI::Dispatching::DispatcherQueueController const &dispatcherQueueController) {
|
|
67
|
+
m_dispatcherQueueController = dispatcherQueueController;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
void ReactNativeWin32App::Start() {
|
|
71
|
+
m_desktopChildSiteBridge.Show();
|
|
72
|
+
|
|
73
|
+
// Run the main application event loop
|
|
74
|
+
m_dispatcherQueueController.DispatcherQueue().RunEventLoop();
|
|
75
|
+
|
|
76
|
+
// Rundown the DispatcherQueue. This drains the queue and raises events to let components
|
|
77
|
+
// know the message loop has finished.
|
|
78
|
+
m_dispatcherQueueController.ShutdownQueue();
|
|
79
|
+
|
|
80
|
+
m_desktopChildSiteBridge.Close();
|
|
81
|
+
}
|
|
82
|
+
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include "ReactNativeWin32App.g.h"
|
|
3
|
+
#include "winrt/Microsoft.UI.Dispatching.h"
|
|
4
|
+
|
|
5
|
+
namespace winrt::Microsoft::ReactNative::implementation {
|
|
6
|
+
struct ReactNativeWin32App : ReactNativeWin32AppT<ReactNativeWin32App> {
|
|
7
|
+
ReactNativeWin32App();
|
|
8
|
+
~ReactNativeWin32App();
|
|
9
|
+
|
|
10
|
+
void AppWindow(winrt::Microsoft::UI::Windowing::AppWindow const &appWindow);
|
|
11
|
+
winrt::Microsoft::UI::Windowing::AppWindow AppWindow();
|
|
12
|
+
|
|
13
|
+
winrt::Microsoft::UI::Composition::Compositor Compositor();
|
|
14
|
+
void Compositor(winrt::Microsoft::UI::Composition::Compositor const &compositor);
|
|
15
|
+
|
|
16
|
+
winrt::Microsoft::ReactNative::ReactNativeIsland ReactNativeIsland();
|
|
17
|
+
void ReactNativeIsland(winrt::Microsoft::ReactNative::ReactNativeIsland const &reactNativeIsland);
|
|
18
|
+
|
|
19
|
+
winrt::Microsoft::UI::Content::DesktopChildSiteBridge DesktopChildSiteBridge();
|
|
20
|
+
void DesktopChildSiteBridge(winrt::Microsoft::UI::Content::DesktopChildSiteBridge const &desktopChildSiteBridge);
|
|
21
|
+
|
|
22
|
+
void DispatchQueueController(
|
|
23
|
+
winrt::Microsoft::UI::Dispatching::DispatcherQueueController const &dispatcherQueueController);
|
|
24
|
+
|
|
25
|
+
winrt::Microsoft::ReactNative::ReactNativeHost ReactNativeHost();
|
|
26
|
+
void ReactNativeHost(winrt::Microsoft::ReactNative::ReactNativeHost const &host);
|
|
27
|
+
|
|
28
|
+
void Start();
|
|
29
|
+
|
|
30
|
+
private:
|
|
31
|
+
winrt::Microsoft::UI::Windowing::AppWindow m_appWindow{nullptr};
|
|
32
|
+
winrt::Microsoft::UI::Composition::Compositor m_compositor{nullptr};
|
|
33
|
+
winrt::Microsoft::UI::Dispatching::DispatcherQueueController m_dispatcherQueueController{nullptr};
|
|
34
|
+
winrt::Microsoft::ReactNative::ReactNativeHost m_host{nullptr};
|
|
35
|
+
winrt::Microsoft::ReactNative::ReactNativeIsland m_reactNativeIsland{nullptr};
|
|
36
|
+
winrt::Microsoft::UI::Content::DesktopChildSiteBridge m_desktopChildSiteBridge{nullptr};
|
|
37
|
+
};
|
|
38
|
+
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
#include "pch.h"
|
|
9
9
|
#include "TurboModulesProvider.h"
|
|
10
10
|
#include <ReactCommon/TurboModuleUtils.h>
|
|
11
|
+
#include <react/bridging/EventEmitter.h>
|
|
11
12
|
#include "JSDispatcherWriter.h"
|
|
13
|
+
#include "JSValueWriter.h"
|
|
12
14
|
#include "JsiApi.h"
|
|
13
15
|
#include "JsiReader.h"
|
|
14
16
|
#include "JsiWriter.h"
|
|
@@ -51,6 +53,12 @@ struct TurboModuleBuilder : winrt::implements<TurboModuleBuilder, IReactModuleBu
|
|
|
51
53
|
m_methods.insert({key, {returnType, method}});
|
|
52
54
|
}
|
|
53
55
|
|
|
56
|
+
void AddEventEmitter(hstring const &name, EventEmitterInitializerDelegate const &emitter) noexcept {
|
|
57
|
+
auto key = to_string(name);
|
|
58
|
+
EnsureMemberNotSet(key, true);
|
|
59
|
+
m_eventEmitters.insert({key, emitter});
|
|
60
|
+
}
|
|
61
|
+
|
|
54
62
|
void AddSyncMethod(hstring const &name, SyncMethodDelegate const &method) noexcept {
|
|
55
63
|
auto key = to_string(name);
|
|
56
64
|
EnsureMemberNotSet(key, true);
|
|
@@ -70,10 +78,15 @@ struct TurboModuleBuilder : winrt::implements<TurboModuleBuilder, IReactModuleBu
|
|
|
70
78
|
return m_constantProviders;
|
|
71
79
|
}
|
|
72
80
|
|
|
81
|
+
const std::unordered_map<std::string, EventEmitterInitializerDelegate> &EventEmitters() const noexcept {
|
|
82
|
+
return m_eventEmitters;
|
|
83
|
+
}
|
|
84
|
+
|
|
73
85
|
private:
|
|
74
86
|
void EnsureMemberNotSet(const std::string &key, bool checkingMethod) noexcept {
|
|
75
87
|
VerifyElseCrash(m_methods.find(key) == m_methods.end());
|
|
76
88
|
VerifyElseCrash(m_syncMethods.find(key) == m_syncMethods.end());
|
|
89
|
+
VerifyElseCrash(m_eventEmitters.find(key) == m_eventEmitters.end());
|
|
77
90
|
if (checkingMethod && key == "getConstants") {
|
|
78
91
|
VerifyElseCrash(m_constantProviders.size() == 0);
|
|
79
92
|
}
|
|
@@ -81,6 +94,7 @@ struct TurboModuleBuilder : winrt::implements<TurboModuleBuilder, IReactModuleBu
|
|
|
81
94
|
|
|
82
95
|
private:
|
|
83
96
|
IReactContext m_reactContext;
|
|
97
|
+
std::unordered_map<std::string, EventEmitterInitializerDelegate> m_eventEmitters;
|
|
84
98
|
std::unordered_map<std::string, TurboModuleMethodInfo> m_methods;
|
|
85
99
|
std::unordered_map<std::string, SyncMethodDelegate> m_syncMethods;
|
|
86
100
|
std::vector<ConstantProviderDelegate> m_constantProviders;
|
|
@@ -373,6 +387,36 @@ class TurboModuleImpl : public facebook::react::TurboModule {
|
|
|
373
387
|
}
|
|
374
388
|
}
|
|
375
389
|
|
|
390
|
+
{
|
|
391
|
+
// try to find an event
|
|
392
|
+
auto it = m_moduleBuilder->EventEmitters().find(key);
|
|
393
|
+
if (it != m_moduleBuilder->EventEmitters().end()) {
|
|
394
|
+
// See if we have an existing eventEmitter
|
|
395
|
+
auto itEmitter = m_eventEmitters.find(key);
|
|
396
|
+
if (itEmitter == m_eventEmitters.end()) {
|
|
397
|
+
m_eventEmitters[key] = std::make_shared<facebook::react::AsyncEventEmitter<facebook::jsi::Value>>();
|
|
398
|
+
|
|
399
|
+
itEmitter = m_eventEmitters.find(key);
|
|
400
|
+
|
|
401
|
+
it->second([emitter = std::static_pointer_cast<facebook::react::AsyncEventEmitter<facebook::jsi::Value>>(
|
|
402
|
+
itEmitter->second),
|
|
403
|
+
jsInvoker = jsInvoker_](const JSValueArgWriter &eventDelegate) {
|
|
404
|
+
auto argWriter = MakeJSValueTreeWriter();
|
|
405
|
+
eventDelegate(argWriter);
|
|
406
|
+
emitter->emit(
|
|
407
|
+
[jsInvoker, eventDelegate, jsValue = std::make_shared<JSValue>(TakeJSValue(argWriter))](
|
|
408
|
+
facebook::jsi::Runtime &rt) -> facebook::jsi::Value {
|
|
409
|
+
auto argWriter = winrt::make<JsiWriter>(rt);
|
|
410
|
+
WriteValue(argWriter, *jsValue);
|
|
411
|
+
return argWriter.as<JsiWriter>()->MoveResult();
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
return itEmitter->second->get(runtime, jsInvoker_);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
376
420
|
// returns undefined if the expected member is not found
|
|
377
421
|
return facebook::jsi::Value::undefined();
|
|
378
422
|
}
|
|
@@ -408,6 +452,7 @@ class TurboModuleImpl : public facebook::react::TurboModule {
|
|
|
408
452
|
IReactContext m_reactContext;
|
|
409
453
|
winrt::com_ptr<TurboModuleBuilder> m_moduleBuilder;
|
|
410
454
|
IInspectable m_providedModule;
|
|
455
|
+
std::unordered_map<std::string, std::shared_ptr<facebook::react::IAsyncEventEmitter>> m_eventEmitters;
|
|
411
456
|
std::shared_ptr<implementation::HostObjectWrapper> m_hostObjectWrapper;
|
|
412
457
|
std::weak_ptr<facebook::react::LongLivedObjectCollection> m_longLivedObjectCollection;
|
|
413
458
|
};
|
|
@@ -257,7 +257,8 @@ winrt::IInspectable DynamicAutomationPeer::GetPatternCore(winrt::PatternInterfac
|
|
|
257
257
|
if (patternInterface == winrt::PatternInterface::Invoke &&
|
|
258
258
|
(accessibilityRole == winrt::Microsoft::ReactNative::AccessibilityRoles::Button ||
|
|
259
259
|
accessibilityRole == winrt::Microsoft::ReactNative::AccessibilityRoles::ImageButton ||
|
|
260
|
-
accessibilityRole == winrt::Microsoft::ReactNative::AccessibilityRoles::Radio
|
|
260
|
+
accessibilityRole == winrt::Microsoft::ReactNative::AccessibilityRoles::Radio ||
|
|
261
|
+
accessibilityRole == winrt::Microsoft::ReactNative::AccessibilityRoles::Link)) {
|
|
261
262
|
return *this;
|
|
262
263
|
} else if (
|
|
263
264
|
(patternInterface == winrt::PatternInterface::Selection ||
|
|
@@ -200,7 +200,10 @@ void FlyoutShadowNode::createView(const winrt::Microsoft::ReactNative::JSValueOb
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
OnFlyoutClosed(GetViewManager()->GetReactContext(), m_tag, false);
|
|
203
|
-
|
|
203
|
+
|
|
204
|
+
if (Is19H1OrHigher()) {
|
|
205
|
+
m_xamlRootChangedRevoker.revoke();
|
|
206
|
+
}
|
|
204
207
|
}
|
|
205
208
|
});
|
|
206
209
|
|
|
@@ -262,15 +265,17 @@ void FlyoutShadowNode::createView(const winrt::Microsoft::ReactNative::JSValueOb
|
|
|
262
265
|
});
|
|
263
266
|
|
|
264
267
|
// Set XamlRoot on the Flyout to handle XamlIsland/AppWindow scenarios.
|
|
265
|
-
if (
|
|
266
|
-
if (auto
|
|
267
|
-
if (auto
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
268
|
+
if (Is19H1OrHigher()) {
|
|
269
|
+
if (auto flyoutBase6 = m_flyout.try_as<winrt::IFlyoutBase6>()) {
|
|
270
|
+
if (auto uiManager = GetNativeUIManager(GetViewManager()->GetReactContext()).lock()) {
|
|
271
|
+
if (auto xamlRoot = uiManager->tryGetXamlRoot(m_rootTag)) {
|
|
272
|
+
flyoutBase6.XamlRoot(xamlRoot);
|
|
273
|
+
m_xamlRootChangedRevoker = xamlRoot.Changed(winrt::auto_revoke, [this](auto &&, auto &&) {
|
|
274
|
+
if (m_isLightDismissEnabled) {
|
|
275
|
+
onDropViewInstance();
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
274
279
|
}
|
|
275
280
|
}
|
|
276
281
|
}
|
|
@@ -403,12 +408,16 @@ winrt::Flyout FlyoutShadowNode::GetFlyout() {
|
|
|
403
408
|
void FlyoutShadowNode::OnShowFlyout() {
|
|
404
409
|
AdjustDefaultFlyoutStyle(50000, 50000);
|
|
405
410
|
if (m_isFlyoutShowOptionsSupported) {
|
|
406
|
-
if (
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
411
|
+
if (Is19H1OrHigher()) {
|
|
412
|
+
if (!m_flyout.XamlRoot()) {
|
|
413
|
+
LogErrorAndClose("The target view window was closed before flyout could be shown.");
|
|
414
|
+
} else if (!m_targetElement && m_targetTag > 0) {
|
|
415
|
+
LogErrorAndClose("The target view unmounted before flyout could be shown.");
|
|
416
|
+
} else if (m_targetElement && m_flyout.XamlRoot() != m_targetElement.XamlRoot()) {
|
|
417
|
+
LogErrorAndClose("The target view window lost focus before flyout could be shown.");
|
|
418
|
+
} else {
|
|
419
|
+
m_flyout.ShowAt(m_targetElement, m_showOptions);
|
|
420
|
+
}
|
|
412
421
|
} else {
|
|
413
422
|
m_flyout.ShowAt(m_targetElement, m_showOptions);
|
|
414
423
|
}
|
|
@@ -17,10 +17,6 @@
|
|
|
17
17
|
<TurboModule_SourcePath Condition="'$(TurboModule_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\TurboModule.h')">$(MSBuildThisFileDirectory)</TurboModule_SourcePath>
|
|
18
18
|
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\ReactCommon\react\bridging</Bridging_SourcePath>
|
|
19
19
|
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\CallbackWrapper.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
|
|
20
|
-
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\EventEmitter.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
|
|
21
|
-
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\Function.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
|
|
22
|
-
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\Base.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
|
|
23
|
-
<Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\Convert.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
|
|
24
20
|
|
|
25
21
|
<NodeApiJsiCommitHash>83cfef428a97627c9185c73da097e42742de56eb</NodeApiJsiCommitHash>
|
|
26
22
|
<NodeApiJsiLocal Condition="Exists('$(MSBuildThisFileDirectory)NodeApiJsiRuntime.cpp')">true</NodeApiJsiLocal>
|
|
@@ -65,6 +61,9 @@
|
|
|
65
61
|
<ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\LongLivedObject.h" />
|
|
66
62
|
<ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
|
|
67
63
|
<ClInclude Include="$(Bridging_SourcePath)\EventEmitter.h" />
|
|
64
|
+
<ClInclude Include="$(Bridging_SourcePath)\Function.h" />
|
|
65
|
+
<ClInclude Include="$(Bridging_SourcePath)\Base.h" />
|
|
66
|
+
<ClInclude Include="$(Bridging_SourcePath)\Convert.h" />
|
|
68
67
|
<ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\TurboModule.h" />
|
|
69
68
|
<ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\TurboModuleUtils.h" />
|
|
70
69
|
<ClInclude Include="$(MSBuildThisFileDirectory)CppWinRTIncludes.h" />
|
|
@@ -161,6 +161,9 @@
|
|
|
161
161
|
</ClInclude>
|
|
162
162
|
<ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
|
|
163
163
|
<ClInclude Include="$(Bridging_SourcePath)\EventEmitter.h" />
|
|
164
|
+
<ClInclude Include="$(Bridging_SourcePath)\Function.h" />
|
|
165
|
+
<ClInclude Include="$(Bridging_SourcePath)\Base.h" />
|
|
166
|
+
<ClInclude Include="$(Bridging_SourcePath)\Convert.h" />
|
|
164
167
|
<ClInclude Include="$(MSBuildThisFileDirectory)JSI\LongLivedJsiValue.h">
|
|
165
168
|
<Filter>TurboModule</Filter>
|
|
166
169
|
</ClInclude>
|
|
@@ -17,7 +17,7 @@ ModuleRegistration::ModuleRegistration(wchar_t const *moduleName) noexcept : m_m
|
|
|
17
17
|
|
|
18
18
|
void AddAttributedModules(IReactPackageBuilder const &packageBuilder, bool useTurboModules) noexcept {
|
|
19
19
|
for (auto const *reg = ModuleRegistration::Head(); reg != nullptr; reg = reg->Next()) {
|
|
20
|
-
if (useTurboModules)
|
|
20
|
+
if (useTurboModules || reg->ShouldRegisterAsTurboModule())
|
|
21
21
|
packageBuilder.AddTurboModule(reg->ModuleName(), reg->MakeModuleProvider());
|
|
22
22
|
else
|
|
23
23
|
packageBuilder.AddModule(reg->ModuleName(), reg->MakeModuleProvider());
|
|
@@ -30,7 +30,7 @@ bool TryAddAttributedModule(
|
|
|
30
30
|
bool useTurboModule) noexcept {
|
|
31
31
|
for (auto const *reg = ModuleRegistration::Head(); reg != nullptr; reg = reg->Next()) {
|
|
32
32
|
if (moduleName == reg->ModuleName()) {
|
|
33
|
-
if (useTurboModule) {
|
|
33
|
+
if (useTurboModule || reg->ShouldRegisterAsTurboModule()) {
|
|
34
34
|
packageBuilder.AddTurboModule(moduleName, reg->MakeModuleProvider());
|
|
35
35
|
} else {
|
|
36
36
|
packageBuilder.AddModule(moduleName, reg->MakeModuleProvider());
|
|
@@ -17,10 +17,20 @@
|
|
|
17
17
|
// The macros below are internal implementation details for macro defined in nativeModules.h
|
|
18
18
|
//
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
template <typename T>
|
|
21
|
+
struct IsReactTurboModule;
|
|
22
|
+
|
|
23
|
+
// Default to false if no specific override
|
|
24
|
+
template <typename T>
|
|
25
|
+
struct IsReactTurboModule : std::false_type {};
|
|
26
|
+
|
|
27
|
+
#define INTERNAL_REACT_MODULE_REGISTRATION_AND_PROVIDER( \
|
|
28
|
+
moduleStruct, moduleName, eventEmitterName, isReactTurboModule) \
|
|
22
29
|
struct moduleStruct; \
|
|
23
30
|
\
|
|
31
|
+
template <> \
|
|
32
|
+
struct IsReactTurboModule<moduleStruct> : std::isReactTurboModule##_type {}; \
|
|
33
|
+
\
|
|
24
34
|
template <class TDummy> \
|
|
25
35
|
struct moduleStruct##_ModuleRegistration final : winrt::Microsoft::ReactNative::ModuleRegistration { \
|
|
26
36
|
moduleStruct##_ModuleRegistration() noexcept : winrt::Microsoft::ReactNative::ModuleRegistration{moduleName} {} \
|
|
@@ -29,6 +39,8 @@
|
|
|
29
39
|
return winrt::Microsoft::ReactNative::MakeModuleProvider<moduleStruct>(); \
|
|
30
40
|
} \
|
|
31
41
|
\
|
|
42
|
+
bool ShouldRegisterAsTurboModule() const noexcept override { return isReactTurboModule; } \
|
|
43
|
+
\
|
|
32
44
|
static const moduleStruct##_ModuleRegistration Registration; \
|
|
33
45
|
}; \
|
|
34
46
|
\
|
|
@@ -42,6 +54,9 @@
|
|
|
42
54
|
moduleName, eventEmitterName, winrt::Microsoft::ReactNative::ReactAttributeId<__COUNTER__>{}); \
|
|
43
55
|
}
|
|
44
56
|
|
|
57
|
+
#define INTERNAL_REACT_MODULE_3_ARGS(moduleStruct, moduleName, eventEmitterName) \
|
|
58
|
+
INTERNAL_REACT_MODULE_REGISTRATION_AND_PROVIDER(moduleStruct, moduleName, eventEmitterName, false)
|
|
59
|
+
|
|
45
60
|
#define INTERNAL_REACT_MODULE_2_ARGS(moduleStruct, moduleName) \
|
|
46
61
|
INTERNAL_REACT_MODULE_3_ARGS(moduleStruct, moduleName, L"")
|
|
47
62
|
|
|
@@ -51,15 +66,23 @@
|
|
|
51
66
|
INTERNAL_REACT_RECOMPOSER_4( \
|
|
52
67
|
(__VA_ARGS__, INTERNAL_REACT_MODULE_3_ARGS, INTERNAL_REACT_MODULE_2_ARGS, INTERNAL_REACT_MODULE_1_ARG, ))
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
|
|
69
|
+
#define INTERNAL_REACT_MODULE_NO_REGISTRATION_AND_PROVIDER( \
|
|
70
|
+
moduleStruct, moduleName, eventEmitterName, isReactTurboModule) \
|
|
56
71
|
struct moduleStruct; \
|
|
72
|
+
\
|
|
73
|
+
template <> \
|
|
74
|
+
struct IsReactTurboModule<moduleStruct> : std::isReactTurboModule##_type {}; \
|
|
75
|
+
\
|
|
57
76
|
template <class TRegistry> \
|
|
58
77
|
constexpr void GetReactModuleInfo(moduleStruct *, TRegistry ®istry) noexcept { \
|
|
59
78
|
registry.RegisterModule( \
|
|
60
79
|
moduleName, eventEmitterName, winrt::Microsoft::ReactNative::ReactAttributeId<__COUNTER__>{}); \
|
|
61
80
|
}
|
|
62
81
|
|
|
82
|
+
// Another version of REACT_MODULE but does not do auto registration
|
|
83
|
+
#define INTERNAL_REACT_MODULE_NOREG_3_ARGS(moduleStruct, moduleName, eventEmitterName) \
|
|
84
|
+
INTERNAL_REACT_MODULE_NO_REGISTRATION_AND_PROVIDER(moduleStruct, moduleName, eventEmitterName, false)
|
|
85
|
+
|
|
63
86
|
#define INTERNAL_REACT_MODULE_NOREG_2_ARGS(moduleStruct, moduleName) \
|
|
64
87
|
INTERNAL_REACT_MODULE_NOREG_3_ARGS(moduleStruct, moduleName, L"")
|
|
65
88
|
|
|
@@ -73,6 +96,30 @@
|
|
|
73
96
|
INTERNAL_REACT_MODULE_NOREG_2_ARGS, \
|
|
74
97
|
INTERNAL_REACT_MODULE_NOREG_1_ARG, ))
|
|
75
98
|
|
|
99
|
+
#define INTERNAL_REACT_GET_ARG_3(arg1, arg2, arg3, ...) arg3
|
|
100
|
+
#define INTERNAL_REACT_RECOMPOSER_3(argsWithParentheses) INTERNAL_REACT_GET_ARG_3 argsWithParentheses
|
|
101
|
+
|
|
102
|
+
// Register struct as a ReactNative module.
|
|
103
|
+
#define INTERNAL_REACT_TURBO_MODULE_2_ARGS(moduleStruct, moduleName) \
|
|
104
|
+
INTERNAL_REACT_MODULE_REGISTRATION_AND_PROVIDER(moduleStruct, moduleName, L"", true)
|
|
105
|
+
|
|
106
|
+
#define INTERNAL_REACT_TURBO_MODULE_1_ARG(moduleStruct) \
|
|
107
|
+
INTERNAL_REACT_TURBO_MODULE_2_ARGS(moduleStruct, L## #moduleStruct)
|
|
108
|
+
|
|
109
|
+
#define INTERNAL_REACT_TURBO_MODULE(...) \
|
|
110
|
+
INTERNAL_REACT_RECOMPOSER_3((__VA_ARGS__, INTERNAL_REACT_TURBO_MODULE_2_ARGS, INTERNAL_REACT_TURBO_MODULE_1_ARG, ))
|
|
111
|
+
|
|
112
|
+
// Another version of REACT_MODULE but does not do auto registration
|
|
113
|
+
#define INTERNAL_REACT_TURBO_MODULE_NOREG_2_ARGS(moduleStruct, moduleName) \
|
|
114
|
+
INTERNAL_REACT_MODULE_NO_REGISTRATION_AND_PROVIDER(moduleStruct, moduleName, L"", true)
|
|
115
|
+
|
|
116
|
+
#define INTERNAL_REACT_TURBO_MODULE_NOREG_1_ARG(moduleStruct) \
|
|
117
|
+
INTERNAL_REACT_TURBO_MODULE_NOREG_2_ARGS(moduleStruct, L## #moduleStruct)
|
|
118
|
+
|
|
119
|
+
#define INTERNAL_REACT_TURBO_MODULE_NOREG(...) \
|
|
120
|
+
INTERNAL_REACT_RECOMPOSER_3( \
|
|
121
|
+
(__VA_ARGS__, INTERNAL_REACT_TURBO_MODULE_NOREG_2_ARGS, INTERNAL_REACT_TURBO_MODULE_NOREG_1_ARG, ))
|
|
122
|
+
|
|
76
123
|
// Provide meta data information about struct member.
|
|
77
124
|
// For each member with a 'custom attribute' macro we create a static method to provide meta data.
|
|
78
125
|
// The member Id is generated as a ReactMemberId<__COUNTER__> type.
|
|
@@ -102,6 +149,7 @@ struct ModuleRegistration {
|
|
|
102
149
|
ModuleRegistration(wchar_t const *moduleName) noexcept;
|
|
103
150
|
|
|
104
151
|
virtual ReactModuleProvider MakeModuleProvider() const noexcept = 0;
|
|
152
|
+
virtual bool ShouldRegisterAsTurboModule() const noexcept = 0;
|
|
105
153
|
|
|
106
154
|
static ModuleRegistration const *Head() noexcept {
|
|
107
155
|
return s_head;
|
|
@@ -122,6 +170,16 @@ struct ModuleRegistration {
|
|
|
122
170
|
static const ModuleRegistration *s_head;
|
|
123
171
|
};
|
|
124
172
|
|
|
173
|
+
// AddAttributedModules(IReactPackageBuilder const &packageBuilder, bool useTurboModules = false)
|
|
174
|
+
// Arguments:
|
|
175
|
+
// - packageBuilder (required).
|
|
176
|
+
// - useTurboModules (optional) - If set to true, all modules will be registered as TurboModules.
|
|
177
|
+
// Consider moving modules to use REACT_TURBO_MODULE instead.
|
|
178
|
+
//
|
|
179
|
+
// AddAttributedModules will add all modules attributed with REACT_MODULE or REACT_TURBO_MODULE into packageBuilder.
|
|
180
|
+
// if useTurboModules is specified, then all modules will be registered using packageBuilder.AddTurboModules
|
|
181
|
+
// Otherwise modules attributed with REACT_MODULE will use packageBuilder.AddModule, and modules attributed with
|
|
182
|
+
// REACT_TURBO_MODULE will use packageBuilder.AddTurboModule.
|
|
125
183
|
void AddAttributedModules(IReactPackageBuilder const &packageBuilder, bool useTurboModules = false) noexcept;
|
|
126
184
|
|
|
127
185
|
bool TryAddAttributedModule(
|