react-native-windows 0.68.3 → 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.
- package/.flowconfig +1 -3
- package/Chakra/ChakraHelpers.cpp +0 -1
- package/Directory.Build.props +3 -0
- package/Directory.Build.targets +1 -1
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1411 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +336 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +182 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.windows.js +2 -2
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +6 -11
- package/Libraries/Animated/createAnimatedComponent.js +2 -2
- package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
- package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/Blob/URL.js +7 -1
- package/Libraries/Components/Button.js +3 -0
- package/Libraries/Components/Button.windows.js +4 -0
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -3
- package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
- package/Libraries/Components/ScrollView/ScrollView.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
- package/Libraries/Components/Slider/Slider.js +0 -2
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
- package/Libraries/Components/StatusBar/StatusBar.js +6 -1
- package/Libraries/Components/Switch/Switch.js +11 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.js +1 -8
- package/Libraries/Components/TextInput/TextInput.windows.js +4 -9
- package/Libraries/Components/TextInput/TextInputState.js +10 -2
- package/Libraries/Components/TextInput/TextInputState.windows.js +10 -3
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +6 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
- package/Libraries/Components/View/View.windows.js +33 -1
- package/Libraries/Components/View/ViewNativeComponent.js +68 -8
- package/Libraries/Components/View/ViewPropTypes.js +36 -4
- package/Libraries/Components/View/ViewPropTypes.windows.js +36 -4
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +1 -1
- package/Libraries/Core/RawEventEmitter.js +38 -0
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/polyfillPromise.js +32 -0
- package/Libraries/Core/setUpReactDevTools.js +3 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
- package/Libraries/Events/CustomEvent.js +32 -0
- package/Libraries/Events/EventPolyfill.js +239 -0
- package/Libraries/Image/Image.android.js +0 -6
- package/Libraries/Image/Image.ios.js +0 -6
- package/Libraries/Image/Image.windows.js +2 -8
- package/Libraries/Image/ImageViewNativeComponent.js +18 -3
- package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
- package/Libraries/Inspector/Inspector.js +2 -4
- package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
- package/Libraries/Interaction/InteractionManager.js +1 -12
- package/Libraries/Interaction/TaskQueue.js +5 -4
- package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +27 -6
- package/Libraries/Lists/VirtualizedList.js +71 -55
- package/Libraries/Lists/VirtualizedListContext.js +7 -3
- package/Libraries/Lists/VirtualizedSectionList.js +2 -2
- package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
- package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
- package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
- package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
- package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +91 -42
- package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +13 -13
- package/Libraries/LogBox/Data/LogBoxData.js +2 -2
- package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBox.js +2 -21
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +334 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
- package/Libraries/NativeComponent/ViewConfig.js +4 -4
- package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
- package/Libraries/Network/FormData.js +7 -1
- package/Libraries/Pressability/Pressability.js +115 -46
- package/Libraries/Pressability/Pressability.windows.js +190 -74
- package/Libraries/Pressability/PressabilityDebug.js +5 -9
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
- package/Libraries/ReactNative/PaperUIManager.windows.js +5 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
- package/Libraries/ReactNative/UIManager.js +2 -3
- package/Libraries/ReactNative/renderApplication.js +4 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
- package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
- package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
- package/Libraries/StyleSheet/processTransform.windows.js +272 -0
- package/Libraries/Text/Text.js +13 -7
- package/Libraries/Text/Text.windows.js +16 -7
- package/Libraries/Text/TextNativeComponent.js +2 -0
- package/Libraries/Text/TextProps.js +10 -0
- package/Libraries/Types/CoreEventTypes.js +13 -1
- package/Libraries/Types/CoreEventTypes.windows.js +26 -1
- package/Libraries/Utilities/Appearance.js +0 -8
- package/Libraries/Utilities/HMRClient.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
- package/Libraries/Utilities/codegenNativeComponent.js +17 -6
- package/Libraries/Utilities/stringifySafe.js +4 -1
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
- package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
- package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
- package/Microsoft.ReactNative/DynamicReader.cpp +3 -3
- package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
- package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
- package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
- package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
- package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
- package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
- package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
- package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
- package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
- package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
- package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
- package/Microsoft.ReactNative/IViewManager.idl +3 -3
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
- package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
- package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
- package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
- package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
- package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +14 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
- package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
- package/Microsoft.ReactNative/RedBox.cpp +3 -2
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
- package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
- package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
- package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
- package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
- package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
- package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
- package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
- package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
- package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
- package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
- package/Microsoft.ReactNative/XamlView.h +8 -3
- package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
- package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +10 -1
- package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
- package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
- package/Microsoft.ReactNative.Cxx/NativeModules.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
- package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
- package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
- package/Mso/activeObject/activeObject.h +2 -2
- package/Mso/compilerAdapters/cppMacros.h +3 -5
- package/Mso/errorCode/errorProvider.h +2 -2
- package/Mso/errorCode/maybe.h +4 -4
- package/Mso/functional/functor.h +6 -6
- package/Mso/functional/functorRef.h +2 -2
- package/Mso/future/details/executor.h +2 -2
- package/Mso/future/details/futureFuncInl.h +4 -4
- package/Mso/future/details/ifuture.h +3 -3
- package/Mso/future/details/maybeInvoker.h +6 -6
- package/Mso/future/details/promiseGroupInl.h +4 -4
- package/Mso/future/details/promiseInl.h +4 -4
- package/Mso/future/details/resultTraits.h +4 -4
- package/Mso/future/details/whenAllInl.h +1 -1
- package/Mso/future/future.h +13 -13
- package/Mso/guid/msoGuidDetails.h +1 -1
- package/Mso/memoryApi/memoryApi.h +13 -7
- package/Mso/motifCpp/gTestAdapter.h +1 -1
- package/Mso/motifCpp/testInfo.h +7 -9
- package/Mso/object/make.h +8 -8
- package/Mso/object/objectRefCount.h +3 -5
- package/Mso/object/objectWithWeakRef.h +10 -14
- package/Mso/object/queryCast.h +4 -4
- package/Mso/object/refCountedObject.h +4 -4
- package/Mso/object/unknownObject.h +7 -7
- package/Mso/platformAdapters/windowsFirst.h +1 -1
- package/Mso/smartPtr/cntPtr.h +8 -8
- package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
- package/Mso/src/future/futureImpl.h +1 -1
- package/Mso/src/memoryApi/memoryApi.cpp +4 -4
- package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/React.Cpp.props +13 -0
- package/PropertySheets/WinUI.props +3 -6
- package/ReactCommon/ReactCommon.vcxproj +2 -4
- package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
- package/ReactCommon/Yoga.cpp +1 -1
- package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
- package/Scripts/OfficeReact.Win32.nuspec +1 -3
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
- package/Scripts/copyRNLibraries.js +8 -8
- package/Scripts/just.js +1 -1
- package/Scripts/rnw-dependencies.ps1 +41 -10
- package/Scripts/run-desktop-integration-tests.js +6 -6
- package/Shared/AbiSafe.h +3 -3
- package/Shared/BaseScriptStoreImpl.cpp +1 -1
- package/Shared/CppRuntimeOptions.h +50 -0
- package/Shared/DevSupportManager.cpp +32 -36
- package/Shared/DevSupportManager.h +1 -2
- package/Shared/HermesRuntimeHolder.cpp +23 -14
- package/Shared/HermesRuntimeHolder.h +8 -2
- package/Shared/IDevSupportManager.h +1 -2
- package/Shared/InspectorPackagerConnection.cpp +7 -5
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/JSI/ChakraApi.cpp +0 -1
- package/Shared/JSI/ChakraRuntime.cpp +1 -2
- package/Shared/JSI/RuntimeHolder.h +2 -0
- package/Shared/Modules/HttpModule.cpp +1 -1
- package/Shared/Modules/HttpModule.h +2 -2
- package/Shared/Modules/WebSocketModule.cpp +1 -1
- package/Shared/Modules/WebSocketModule.h +8 -5
- package/Shared/{IHttpResource.h → Networking/IHttpResource.h} +4 -4
- package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +2 -2
- package/Shared/Networking/OriginPolicy.h +15 -0
- package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
- package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
- package/Shared/{WinRTHttpResource.cpp → Networking/WinRTHttpResource.cpp} +129 -99
- package/Shared/{WinRTHttpResource.h → Networking/WinRTHttpResource.h} +8 -12
- package/Shared/Networking/WinRTTypes.h +30 -0
- package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +2 -2
- package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
- package/Shared/OInstance.cpp +5 -5
- package/Shared/RuntimeOptions.cpp +93 -15
- package/Shared/RuntimeOptions.h +22 -9
- package/Shared/Shared.vcxitems +122 -7
- package/Shared/Shared.vcxitems.filters +40 -21
- package/Shared/Threading/BatchingQueueThread.cpp +1 -1
- package/Shared/tracing/fbsystrace.h +2 -2
- package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
- package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
- package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
- package/codegen/react/components/rnwcore/Props.cpp +0 -13
- package/codegen/react/components/rnwcore/Props.h +0 -16
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
- package/include/Shared/cdebug.h +9 -9
- package/index.js +30 -25
- package/index.windows.js +30 -25
- package/jest/preprocessor.js +24 -107
- package/jest/preprocessor_DO_NOT_USE.js +122 -0
- package/metro.config.js +3 -70
- package/package.json +29 -28
- package/react-native.config.js +40 -6
- package/rntypes/index.d.ts +19 -7
- package/stubs/glog/logging.h +1 -1
- package/template/cpp-app/src/App.h +0 -4
- package/template/cs-app/src/App.xaml.cs +0 -5
- package/template/cs-app/src/MainPage.xaml.cs +1 -10
- package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
- package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
- package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
- package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
- package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
- package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
- package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
- package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
- package/template/metro.devMode.config.js +2 -51
- package/typings-index.js +5 -1
- package/typings-index.js.map +1 -1
- package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
- package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
- package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
- package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
- package/Libraries/ReactNative/UIManagerInjection.js +0 -15
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
- package/PropertySheets/CppEnablePackageReferences.props +0 -13
- package/Shared/cdebug.cpp +0 -6
- package/include/Shared/ViewManager.h +0 -34
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include <WindowsNumerics.h>
|
|
18
18
|
#include <winrt/Windows.Foundation.h>
|
|
19
19
|
|
|
20
|
+
#include <UI.Xaml.Automation.Peers.h>
|
|
20
21
|
#include <UI.Xaml.Automation.h>
|
|
21
22
|
#include <UI.Xaml.Controls.h>
|
|
22
23
|
#include "Utils/PropertyHandlerUtils.h"
|
|
@@ -99,6 +100,21 @@ static void GetAccessibilityValueProps(const winrt::Microsoft::ReactNative::IJSV
|
|
|
99
100
|
writer.WriteObjectEnd();
|
|
100
101
|
}
|
|
101
102
|
|
|
103
|
+
inline float ToRadians(const winrt::Microsoft::ReactNative::JSValue &value) {
|
|
104
|
+
if ((value.Type() == winrt::Microsoft::ReactNative::JSValueType::Double)) {
|
|
105
|
+
return value.AsSingle();
|
|
106
|
+
}
|
|
107
|
+
assert(value.Type() == winrt::Microsoft::ReactNative::JSValueType::String);
|
|
108
|
+
|
|
109
|
+
auto stringValue = value.AsString();
|
|
110
|
+
char *suffixStart;
|
|
111
|
+
double num = strtod(stringValue.c_str(), &suffixStart);
|
|
112
|
+
if (0 == strncmp(suffixStart, "deg", 3)) {
|
|
113
|
+
return static_cast<float>(num * M_PI / 180.0f);
|
|
114
|
+
}
|
|
115
|
+
return static_cast<float>(num); // assume suffix is "rad"
|
|
116
|
+
}
|
|
117
|
+
|
|
102
118
|
void FrameworkElementViewManager::GetNativeProps(const winrt::Microsoft::ReactNative::IJSValueWriter &writer) const {
|
|
103
119
|
Super::GetNativeProps(writer);
|
|
104
120
|
|
|
@@ -139,27 +155,84 @@ bool FrameworkElementViewManager::UpdateProperty(
|
|
|
139
155
|
if (element.try_as<xaml::IUIElement10>()) // Works on 19H1+
|
|
140
156
|
{
|
|
141
157
|
if (propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Array) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
winrt::Windows::Foundation::Numerics::float4x4 transformMatrix{
|
|
159
|
+
winrt::Windows::Foundation::Numerics::float4x4::identity()};
|
|
160
|
+
for (const auto &transform : propertyValue.AsArray()) {
|
|
161
|
+
for (const auto &operation : transform.AsObject()) {
|
|
162
|
+
const std::string &transformType = operation.first;
|
|
163
|
+
const auto &innerValue = operation.second;
|
|
164
|
+
|
|
165
|
+
if (transformType == "matrix") {
|
|
166
|
+
assert(innerValue.AsArray().size() == 16);
|
|
167
|
+
winrt::Windows::Foundation::Numerics::float4x4 innerMatrix;
|
|
168
|
+
innerMatrix.m11 = static_cast<float>(innerValue[0].AsDouble());
|
|
169
|
+
innerMatrix.m12 = static_cast<float>(innerValue[1].AsDouble());
|
|
170
|
+
innerMatrix.m13 = static_cast<float>(innerValue[2].AsDouble());
|
|
171
|
+
innerMatrix.m14 = static_cast<float>(innerValue[3].AsDouble());
|
|
172
|
+
innerMatrix.m21 = static_cast<float>(innerValue[4].AsDouble());
|
|
173
|
+
innerMatrix.m22 = static_cast<float>(innerValue[5].AsDouble());
|
|
174
|
+
innerMatrix.m23 = static_cast<float>(innerValue[6].AsDouble());
|
|
175
|
+
innerMatrix.m24 = static_cast<float>(innerValue[7].AsDouble());
|
|
176
|
+
innerMatrix.m31 = static_cast<float>(innerValue[8].AsDouble());
|
|
177
|
+
innerMatrix.m32 = static_cast<float>(innerValue[9].AsDouble());
|
|
178
|
+
innerMatrix.m33 = static_cast<float>(innerValue[10].AsDouble());
|
|
179
|
+
innerMatrix.m34 = static_cast<float>(innerValue[11].AsDouble());
|
|
180
|
+
innerMatrix.m41 = static_cast<float>(innerValue[12].AsDouble());
|
|
181
|
+
innerMatrix.m42 = static_cast<float>(innerValue[13].AsDouble());
|
|
182
|
+
innerMatrix.m43 = static_cast<float>(innerValue[14].AsDouble());
|
|
183
|
+
innerMatrix.m44 = static_cast<float>(innerValue[15].AsDouble());
|
|
184
|
+
transformMatrix = transformMatrix * innerMatrix;
|
|
185
|
+
} else if (transformType == "perspective") {
|
|
186
|
+
auto innerMatrix = winrt::Windows::Foundation::Numerics::float4x4::identity();
|
|
187
|
+
innerMatrix.m34 = -1 / innerValue.AsSingle();
|
|
188
|
+
transformMatrix = transformMatrix * innerMatrix;
|
|
189
|
+
} else if (transformType == "rotateX") {
|
|
190
|
+
transformMatrix = transformMatrix *
|
|
191
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_rotation_x(ToRadians(innerValue));
|
|
192
|
+
} else if (transformType == "rotateY") {
|
|
193
|
+
transformMatrix = transformMatrix *
|
|
194
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_rotation_y(ToRadians(innerValue));
|
|
195
|
+
} else if (transformType == "rotate" || transformType == "rotateZ") {
|
|
196
|
+
transformMatrix = transformMatrix *
|
|
197
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_rotation_z(ToRadians(innerValue));
|
|
198
|
+
} else if (transformType == "scale") {
|
|
199
|
+
transformMatrix = transformMatrix *
|
|
200
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_scale(
|
|
201
|
+
innerValue.AsSingle(), innerValue.AsSingle(), 1);
|
|
202
|
+
} else if (transformType == "scaleX") {
|
|
203
|
+
transformMatrix = transformMatrix *
|
|
204
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_scale(innerValue.AsSingle(), 1, 1);
|
|
205
|
+
} else if (transformType == "scaleY") {
|
|
206
|
+
transformMatrix = transformMatrix *
|
|
207
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_scale(1, innerValue.AsSingle(), 1);
|
|
208
|
+
} else if (transformType == "translate") {
|
|
209
|
+
auto ¶ms = innerValue.AsArray();
|
|
210
|
+
transformMatrix =
|
|
211
|
+
transformMatrix *
|
|
212
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_translation(
|
|
213
|
+
params[0].AsSingle(), params[1].AsSingle(), params.size() > 2 ? params[2].AsSingle() : 0.f);
|
|
214
|
+
} else if (transformType == "translateX") {
|
|
215
|
+
transformMatrix = transformMatrix *
|
|
216
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_translation(innerValue.AsSingle(), 0.f, 0.f);
|
|
217
|
+
} else if (transformType == "translateY") {
|
|
218
|
+
transformMatrix = transformMatrix *
|
|
219
|
+
winrt::Windows::Foundation::Numerics::make_float4x4_translation(0.f, innerValue.AsSingle(), 0.f);
|
|
220
|
+
} else if (transformType == "skewX") {
|
|
221
|
+
transformMatrix =
|
|
222
|
+
transformMatrix *
|
|
223
|
+
winrt::Windows::Foundation::Numerics::float4x4(
|
|
224
|
+
winrt::Windows::Foundation::Numerics::make_float3x2_skew(innerValue.AsSingle(), 0.f));
|
|
225
|
+
} else if (transformType == "skewY") {
|
|
226
|
+
transformMatrix =
|
|
227
|
+
transformMatrix *
|
|
228
|
+
winrt::Windows::Foundation::Numerics::float4x4(
|
|
229
|
+
winrt::Windows::Foundation::Numerics::make_float3x2_skew(0.f, innerValue.AsSingle()));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
160
233
|
|
|
161
234
|
if (!element.IsLoaded()) {
|
|
162
|
-
element.Loaded([=](auto sender, auto &&) -> auto
|
|
235
|
+
element.Loaded([=](auto sender, auto &&) -> auto{
|
|
163
236
|
ApplyTransformMatrix(sender.as<xaml::UIElement>(), nodeToUpdate, transformMatrix);
|
|
164
237
|
});
|
|
165
238
|
} else {
|
|
@@ -344,13 +417,30 @@ bool FrameworkElementViewManager::UpdateProperty(
|
|
|
344
417
|
const std::string &innerName = pair.first;
|
|
345
418
|
const auto &innerValue = pair.second;
|
|
346
419
|
|
|
347
|
-
|
|
420
|
+
auto peer = xaml::Automation::Peers::FrameworkElementAutomationPeer::FromElement(element);
|
|
421
|
+
|
|
422
|
+
if (innerName == "selected") {
|
|
348
423
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Selected)] =
|
|
349
424
|
innerValue.AsBoolean();
|
|
350
|
-
|
|
425
|
+
const auto prevSelectedState = DynamicAutomationProperties::GetAccessibilityStateSelected(element);
|
|
426
|
+
if (peer != nullptr && prevSelectedState != innerValue.AsBoolean()) {
|
|
427
|
+
peer.RaisePropertyChangedEvent(
|
|
428
|
+
winrt::SelectionItemPatternIdentifiers::IsSelectedProperty(),
|
|
429
|
+
winrt::box_value(prevSelectedState),
|
|
430
|
+
winrt::box_value(innerValue.AsBoolean()));
|
|
431
|
+
}
|
|
432
|
+
} else if (innerName == "disabled") {
|
|
351
433
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Disabled)] =
|
|
352
434
|
innerValue.AsBoolean();
|
|
353
|
-
|
|
435
|
+
const auto prevDisabledState = DynamicAutomationProperties::GetAccessibilityStateDisabled(element);
|
|
436
|
+
|
|
437
|
+
if (peer != nullptr && prevDisabledState != innerValue.AsBoolean()) {
|
|
438
|
+
peer.RaisePropertyChangedEvent(
|
|
439
|
+
winrt::AutomationElementIdentifiers::IsEnabledProperty(),
|
|
440
|
+
winrt::box_value(!prevDisabledState),
|
|
441
|
+
winrt::box_value(!innerValue.AsBoolean()));
|
|
442
|
+
}
|
|
443
|
+
} else if (innerName == "checked") {
|
|
354
444
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Checked)] =
|
|
355
445
|
innerValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Boolean && innerValue.AsBoolean();
|
|
356
446
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Unchecked)] =
|
|
@@ -358,6 +448,30 @@ bool FrameworkElementViewManager::UpdateProperty(
|
|
|
358
448
|
// If the state is "mixed" we'll just set both Checked and Unchecked to false,
|
|
359
449
|
// then later in the IToggleProvider implementation it will return the Intermediate state
|
|
360
450
|
// due to both being set to false (see DynamicAutomationPeer::ToggleState()).
|
|
451
|
+
const auto prevCheckedState = DynamicAutomationProperties::GetAccessibilityStateChecked(element);
|
|
452
|
+
const auto prevUncheckedState = DynamicAutomationProperties::GetAccessibilityStateUnchecked(element);
|
|
453
|
+
|
|
454
|
+
if (peer != nullptr) {
|
|
455
|
+
if (prevCheckedState !=
|
|
456
|
+
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Checked)] ||
|
|
457
|
+
prevUncheckedState !=
|
|
458
|
+
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Unchecked)]) {
|
|
459
|
+
// Checking if either state has changed here to catch changes involving "mixed" state.
|
|
460
|
+
const auto oldValue = prevCheckedState ? winrt::ToggleState::On : winrt::ToggleState::Off;
|
|
461
|
+
if (innerValue.Type() != winrt::Microsoft::ReactNative::JSValueType::Boolean) {
|
|
462
|
+
peer.RaisePropertyChangedEvent(
|
|
463
|
+
winrt::TogglePatternIdentifiers::ToggleStateProperty(),
|
|
464
|
+
winrt::box_value(oldValue),
|
|
465
|
+
winrt::box_value(winrt::ToggleState::Indeterminate));
|
|
466
|
+
} else {
|
|
467
|
+
const auto newValue = innerValue.AsBoolean() ? winrt::ToggleState::On : winrt::ToggleState::Off;
|
|
468
|
+
peer.RaisePropertyChangedEvent(
|
|
469
|
+
winrt::TogglePatternIdentifiers::ToggleStateProperty(),
|
|
470
|
+
winrt::box_value(oldValue),
|
|
471
|
+
winrt::box_value(newValue));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
361
475
|
} else if (innerName == "busy")
|
|
362
476
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Busy)] =
|
|
363
477
|
!innerValue.IsNull() && innerValue.AsBoolean();
|
|
@@ -366,6 +480,19 @@ bool FrameworkElementViewManager::UpdateProperty(
|
|
|
366
480
|
!innerValue.IsNull() && innerValue.AsBoolean();
|
|
367
481
|
states[static_cast<int32_t>(winrt::Microsoft::ReactNative::AccessibilityStates::Collapsed)] =
|
|
368
482
|
innerValue.IsNull() || !innerValue.AsBoolean();
|
|
483
|
+
|
|
484
|
+
const auto prevExpandedState = DynamicAutomationProperties::GetAccessibilityStateExpanded(element);
|
|
485
|
+
|
|
486
|
+
if (peer != nullptr && prevExpandedState != innerValue.AsBoolean()) {
|
|
487
|
+
const auto newValue =
|
|
488
|
+
innerValue.AsBoolean() ? winrt::ExpandCollapseState::Expanded : winrt::ExpandCollapseState::Collapsed;
|
|
489
|
+
const auto oldValue =
|
|
490
|
+
prevExpandedState ? winrt::ExpandCollapseState::Expanded : winrt::ExpandCollapseState::Collapsed;
|
|
491
|
+
peer.RaisePropertyChangedEvent(
|
|
492
|
+
winrt::ExpandCollapsePatternIdentifiers::ExpandCollapseStateProperty(),
|
|
493
|
+
winrt::box_value(oldValue),
|
|
494
|
+
winrt::box_value(newValue));
|
|
495
|
+
}
|
|
369
496
|
}
|
|
370
497
|
}
|
|
371
498
|
}
|
|
@@ -167,7 +167,7 @@ bool ImageViewManager::UpdateProperty(
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
void ImageViewManager::EmitImageEvent(winrt::Grid grid, const char *eventName, ReactImageSource &source) {
|
|
170
|
-
int64_t tag = grid
|
|
170
|
+
int64_t tag = GetTag(grid);
|
|
171
171
|
folly::dynamic imageSource =
|
|
172
172
|
folly::dynamic::object()("uri", source.uri)("width", source.width)("height", source.height);
|
|
173
173
|
|
|
@@ -141,14 +141,10 @@ class EffectBase : public winrt::implements<EffectBase, abi::IGraphicsEffectD2D1
|
|
|
141
141
|
|
|
142
142
|
#pragma push_macro("DECLARE_SOURCE")
|
|
143
143
|
#undef DECLARE_SOURCE
|
|
144
|
-
#define DECLARE_SOURCE(Name)
|
|
145
|
-
winrt::IGraphicsEffectSource m_##Name;
|
|
146
|
-
winrt::IGraphicsEffectSource Name() {
|
|
147
|
-
|
|
148
|
-
} \
|
|
149
|
-
void Name(winrt::IGraphicsEffectSource const &value) { \
|
|
150
|
-
m_##Name = value; \
|
|
151
|
-
}
|
|
144
|
+
#define DECLARE_SOURCE(Name) \
|
|
145
|
+
winrt::IGraphicsEffectSource m_##Name; \
|
|
146
|
+
winrt::IGraphicsEffectSource Name() { return m_##Name; } \
|
|
147
|
+
void Name(winrt::IGraphicsEffectSource const &value) { m_##Name = value; }
|
|
152
148
|
|
|
153
149
|
#pragma push_macro("DECLARE_SINGLE_SOURCE")
|
|
154
150
|
#undef DECLARE_SINGLE_SOURCE
|
|
@@ -192,9 +188,7 @@ class EffectBase : public winrt::implements<EffectBase, abi::IGraphicsEffectD2D1
|
|
|
192
188
|
Type m_##Name = InitialValue; \
|
|
193
189
|
\
|
|
194
190
|
public: \
|
|
195
|
-
Type Name() {
|
|
196
|
-
return m_##Name; \
|
|
197
|
-
} \
|
|
191
|
+
Type Name() { return m_##Name; } \
|
|
198
192
|
void Name(Type const &value) { \
|
|
199
193
|
if (!(0, Condition)) { \
|
|
200
194
|
throw winrt::hresult_invalid_argument(); \
|
|
@@ -259,7 +259,8 @@ winrt::fire_and_forget ReactImage::SetBackground(bool fireLoadEndEvent) {
|
|
|
259
259
|
compositionBrush->TintColor(strong_this->m_tintColor);
|
|
260
260
|
|
|
261
261
|
const auto surface = fromStream ? winrt::LoadedImageSurface::StartLoadFromStream(memoryStream)
|
|
262
|
-
|
|
262
|
+
: uri ? winrt::LoadedImageSurface::StartLoadFromUri(uri)
|
|
263
|
+
: nullptr;
|
|
263
264
|
|
|
264
265
|
m_sizeChangedRevoker = strong_this->SizeChanged(
|
|
265
266
|
winrt::auto_revoke, [compositionBrush](const auto &, const winrt::SizeChangedEventArgs &args) {
|
|
@@ -14,10 +14,6 @@
|
|
|
14
14
|
#include <UI.Xaml.Controls.Primitives.h>
|
|
15
15
|
#include <UI.Xaml.Controls.h>
|
|
16
16
|
|
|
17
|
-
namespace winrt {
|
|
18
|
-
using ToggleButton = xaml::Controls::Primitives::ToggleButton;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
17
|
namespace Microsoft::ReactNative {
|
|
22
18
|
|
|
23
19
|
class SliderShadowNode : public ShadowNodeBase {
|
|
@@ -80,6 +76,18 @@ bool SliderViewManager::UpdateProperty(
|
|
|
80
76
|
slider.Value(propertyValue.AsDouble());
|
|
81
77
|
else if (propertyValue.IsNull())
|
|
82
78
|
slider.Value(0);
|
|
79
|
+
} else if (propertyName == "maximumValue") {
|
|
80
|
+
if (propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Double ||
|
|
81
|
+
propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Int64)
|
|
82
|
+
slider.Maximum(propertyValue.AsDouble());
|
|
83
|
+
else if (propertyValue.IsNull())
|
|
84
|
+
slider.Maximum(100);
|
|
85
|
+
} else if (propertyName == "minimumValue") {
|
|
86
|
+
if (propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Double ||
|
|
87
|
+
propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Int64)
|
|
88
|
+
slider.Minimum(propertyValue.AsDouble());
|
|
89
|
+
else if (propertyValue.IsNull())
|
|
90
|
+
slider.Minimum(0);
|
|
83
91
|
} else {
|
|
84
92
|
return Super::UpdateProperty(nodeToUpdate, propertyName, propertyValue);
|
|
85
93
|
}
|
|
@@ -760,7 +760,7 @@ void TextInputShadowNode::dispatchCommand(
|
|
|
760
760
|
TextInputViewManager::TextInputViewManager(const Mso::React::IReactContext &context) : Super(context) {}
|
|
761
761
|
|
|
762
762
|
const wchar_t *TextInputViewManager::GetName() const {
|
|
763
|
-
return L"
|
|
763
|
+
return L"WindowsTextInput";
|
|
764
764
|
}
|
|
765
765
|
|
|
766
766
|
void TextInputViewManager::GetNativeProps(const winrt::Microsoft::ReactNative::IJSValueWriter &writer) const {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
#include <Utils/ValueUtils.h>
|
|
24
24
|
|
|
25
25
|
#ifdef USE_WINUI3
|
|
26
|
-
#include <winrt/Microsoft.UI.Input.
|
|
26
|
+
#include <winrt/Microsoft.UI.Input.h>
|
|
27
27
|
#endif
|
|
28
28
|
|
|
29
29
|
namespace winrt {
|
|
@@ -357,7 +357,7 @@ void TextViewManager::OnPointerEvent(
|
|
|
357
357
|
args.Target(nullptr);
|
|
358
358
|
|
|
359
359
|
// Get the pointer point and hit test
|
|
360
|
-
const auto point = args.Args().GetCurrentPoint(textBlock).
|
|
360
|
+
const auto point = args.Args().GetCurrentPoint(textBlock).Position();
|
|
361
361
|
HitTest(node, args, point);
|
|
362
362
|
|
|
363
363
|
// Set the target back to the current view if hit test failed
|
|
@@ -26,7 +26,10 @@
|
|
|
26
26
|
#include <winrt/Windows.UI.Input.h>
|
|
27
27
|
|
|
28
28
|
#ifdef USE_WINUI3
|
|
29
|
-
#include <winrt/Microsoft.UI.Input.
|
|
29
|
+
#include <winrt/Microsoft.UI.Input.h>
|
|
30
|
+
namespace input = winrt::Microsoft::UI::Input;
|
|
31
|
+
#else
|
|
32
|
+
namespace input = winrt::Windows::UI::Input;
|
|
30
33
|
#endif
|
|
31
34
|
|
|
32
35
|
namespace Microsoft::ReactNative {
|
|
@@ -46,7 +49,7 @@ TouchEventHandler::~TouchEventHandler() {
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
void TouchEventHandler::AddTouchHandlers(XamlView xamlView, XamlView rootView, bool handledEventsToo) {
|
|
49
|
-
auto uiElement(xamlView.
|
|
52
|
+
auto uiElement(xamlView.try_as<xaml::UIElement>());
|
|
50
53
|
if (uiElement == nullptr) {
|
|
51
54
|
assert(false);
|
|
52
55
|
return;
|
|
@@ -118,7 +121,7 @@ void TouchEventHandler::OnPointerPressed(
|
|
|
118
121
|
|
|
119
122
|
// If this was caused by the user pressing the "back" hardware button, fire that event instead
|
|
120
123
|
if (args.GetCurrentPoint(sourceElement).Properties().PointerUpdateKind() ==
|
|
121
|
-
|
|
124
|
+
input::PointerUpdateKind::XButton1Pressed) {
|
|
122
125
|
args.Handled(DispatchBackEvent());
|
|
123
126
|
return;
|
|
124
127
|
}
|
|
@@ -127,16 +130,9 @@ void TouchEventHandler::OnPointerPressed(
|
|
|
127
130
|
assert(!tagsForBranch.empty());
|
|
128
131
|
const auto tag = tagsForBranch.front();
|
|
129
132
|
|
|
130
|
-
// Pointer pressing updates the enter/leave state
|
|
131
|
-
UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
|
|
132
|
-
|
|
133
133
|
size_t pointerIndex = AddReactPointer(args, tag, sourceElement);
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
// Finger and pen taps will also set isLeftButton.
|
|
137
|
-
if (m_pointers[pointerIndex].isLeftButton) {
|
|
138
|
-
DispatchTouchEvent(eventType, pointerIndex);
|
|
139
|
-
}
|
|
135
|
+
DispatchTouchEvent(eventType, pointerIndex);
|
|
140
136
|
}
|
|
141
137
|
}
|
|
142
138
|
|
|
@@ -189,10 +185,11 @@ void TouchEventHandler::OnPointerMoved(
|
|
|
189
185
|
if (optPointerIndex) {
|
|
190
186
|
UpdateReactPointer(m_pointers[*optPointerIndex], args, sourceElement);
|
|
191
187
|
DispatchTouchEvent(eventType, *optPointerIndex);
|
|
192
|
-
} else {
|
|
193
|
-
// Move with no buttons pressed
|
|
194
|
-
UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
|
|
195
188
|
}
|
|
189
|
+
|
|
190
|
+
// If we re-introduce onMouseMove to react-native-windows, we should add an
|
|
191
|
+
// argument to ensure we do not emit these events while the pointer is down.
|
|
192
|
+
UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
|
|
196
193
|
}
|
|
197
194
|
|
|
198
195
|
void TouchEventHandler::OnPointerConcluded(TouchEventType eventType, const winrt::PointerRoutedEventArgs &args) {
|
|
@@ -213,23 +210,18 @@ void TouchEventHandler::OnPointerConcluded(TouchEventType eventType, const winrt
|
|
|
213
210
|
if (PropagatePointerEventAndFindReactSourceBranch(reactArgs, &tagsForBranch, &sourceElement))
|
|
214
211
|
UpdateReactPointer(m_pointers[*optPointerIndex], args, sourceElement);
|
|
215
212
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
DispatchTouchEvent(adjustedEventType, *optPointerIndex);
|
|
223
|
-
}
|
|
213
|
+
// In case a PointerCaptureLost event should be treated as an "end" event,
|
|
214
|
+
// check the ReactPointerEventArgs Kind property before emitting the event.
|
|
215
|
+
const auto adjustedEventType = reactArgs.Kind() == winrt::Microsoft::ReactNative::PointerEventKind::End
|
|
216
|
+
? TouchEventType::End
|
|
217
|
+
: TouchEventType::Cancel;
|
|
218
|
+
DispatchTouchEvent(adjustedEventType, *optPointerIndex);
|
|
224
219
|
|
|
225
220
|
m_pointers.erase(cbegin(m_pointers) + *optPointerIndex);
|
|
226
221
|
if (m_pointers.size() == 0)
|
|
227
222
|
m_touchId = 0;
|
|
228
223
|
|
|
229
224
|
m_xamlView.as<xaml::FrameworkElement>().ReleasePointerCapture(args.Pointer());
|
|
230
|
-
|
|
231
|
-
// Updates the enter/leave state when pointer was being tracked
|
|
232
|
-
UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
|
|
233
225
|
}
|
|
234
226
|
|
|
235
227
|
size_t TouchEventHandler::AddReactPointer(
|
|
@@ -334,7 +326,7 @@ void TouchEventHandler::UpdatePointersInViews(
|
|
|
334
326
|
} else {
|
|
335
327
|
// newViews is empty when UpdatePointersInViews is called from outside
|
|
336
328
|
// the root view, in this case use -1 for the JS event pointer target
|
|
337
|
-
const auto tag = !newViews.empty() ? newViews.front() :
|
|
329
|
+
const auto tag = !newViews.empty() ? newViews.front() : InvalidTag;
|
|
338
330
|
pointer = CreateReactPointer(args, tag, sourceElement);
|
|
339
331
|
}
|
|
340
332
|
|
|
@@ -373,7 +365,21 @@ void TouchEventHandler::UpdatePointersInViews(
|
|
|
373
365
|
}
|
|
374
366
|
}
|
|
375
367
|
|
|
368
|
+
// defines button payload, follows https://developer.mozilla.org/docs/Web/API/MouseEvent/button
|
|
369
|
+
enum class MouseEventButtonKind { None = -1, Main = 0, Auxiliary = 1, Secondary = 2, Eraser = 5 };
|
|
370
|
+
|
|
376
371
|
winrt::Microsoft::ReactNative::JSValue TouchEventHandler::GetPointerJson(const ReactPointer &pointer, int64_t target) {
|
|
372
|
+
MouseEventButtonKind button = MouseEventButtonKind::None;
|
|
373
|
+
if (pointer.isLeftButton) {
|
|
374
|
+
button = MouseEventButtonKind::Main;
|
|
375
|
+
} else if (pointer.isMiddleButton) {
|
|
376
|
+
button = MouseEventButtonKind::Auxiliary;
|
|
377
|
+
} else if (pointer.isRightButton || pointer.isBarrelButton) {
|
|
378
|
+
button = MouseEventButtonKind::Secondary;
|
|
379
|
+
} else if (pointer.isEraser) {
|
|
380
|
+
button = MouseEventButtonKind::Eraser;
|
|
381
|
+
}
|
|
382
|
+
|
|
377
383
|
return winrt::Microsoft::ReactNative::JSValueObject{
|
|
378
384
|
{"target", target},
|
|
379
385
|
{"identifier", pointer.identifier},
|
|
@@ -395,6 +401,7 @@ winrt::Microsoft::ReactNative::JSValue TouchEventHandler::GetPointerJson(const R
|
|
|
395
401
|
{"isEraser", pointer.isEraser},
|
|
396
402
|
{"shiftKey", pointer.shiftKey},
|
|
397
403
|
{"ctrlKey", pointer.ctrlKey},
|
|
404
|
+
{"button", static_cast<int>(button)},
|
|
398
405
|
{"altKey", pointer.altKey}};
|
|
399
406
|
}
|
|
400
407
|
|
|
@@ -414,9 +421,9 @@ facebook::react::SharedEventEmitter EventEmitterForElement(
|
|
|
414
421
|
auto element = view->Element();
|
|
415
422
|
while (auto parent = element.Parent()) {
|
|
416
423
|
if (element = parent.try_as<xaml::FrameworkElement>()) {
|
|
417
|
-
auto
|
|
418
|
-
if (
|
|
419
|
-
if (tag =
|
|
424
|
+
auto elementTag = GetTag(element);
|
|
425
|
+
if (elementTag != InvalidTag) {
|
|
426
|
+
if ((tag = static_cast<facebook::react::Tag>(elementTag)) != InvalidTag)
|
|
420
427
|
return EventEmitterForElement(uimanager, tag);
|
|
421
428
|
}
|
|
422
429
|
}
|
|
@@ -438,6 +445,109 @@ facebook::react::Touch TouchEventHandler::TouchForPointer(const ReactPointer &po
|
|
|
438
445
|
t.timestamp = static_cast<facebook::react::Float>(pointer.timestamp);
|
|
439
446
|
return t;
|
|
440
447
|
}
|
|
448
|
+
|
|
449
|
+
winrt::IPropertyValue TestHit(
|
|
450
|
+
const winrt::Collections::IVectorView<xaml::Documents::Inline> &inlines,
|
|
451
|
+
const winrt::Point &pointerPos,
|
|
452
|
+
bool &isHit) {
|
|
453
|
+
winrt::IPropertyValue tag(nullptr);
|
|
454
|
+
|
|
455
|
+
for (const auto &el : inlines) {
|
|
456
|
+
if (const auto span = el.try_as<xaml::Documents::Span>()) {
|
|
457
|
+
auto resTag = TestHit(span.Inlines().GetView(), pointerPos, isHit);
|
|
458
|
+
|
|
459
|
+
if (resTag)
|
|
460
|
+
return resTag;
|
|
461
|
+
|
|
462
|
+
if (isHit) {
|
|
463
|
+
tag = el.GetValue(xaml::FrameworkElement::TagProperty()).try_as<winrt::IPropertyValue>();
|
|
464
|
+
if (tag) {
|
|
465
|
+
return tag;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
} else if (const auto run = el.try_as<xaml::Documents::Run>()) {
|
|
469
|
+
const auto start = el.ContentStart();
|
|
470
|
+
const auto end = el.ContentEnd();
|
|
471
|
+
|
|
472
|
+
auto startRect = start.GetCharacterRect(xaml::Documents::LogicalDirection::Forward);
|
|
473
|
+
auto endRect = end.GetCharacterRect(xaml::Documents::LogicalDirection::Forward);
|
|
474
|
+
|
|
475
|
+
// Swap rectangles in RTL scenarios.
|
|
476
|
+
if (startRect.X > endRect.X) {
|
|
477
|
+
const auto tempRect = startRect;
|
|
478
|
+
startRect = endRect;
|
|
479
|
+
endRect = tempRect;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// Approximate the bounding rect (for now, don't account for text wrapping).
|
|
483
|
+
if ((startRect.X <= pointerPos.X) && (endRect.X + endRect.Width >= pointerPos.X) &&
|
|
484
|
+
(startRect.Y <= pointerPos.Y) && (endRect.Y + endRect.Height >= pointerPos.Y)) {
|
|
485
|
+
isHit = true;
|
|
486
|
+
return nullptr;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return tag;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
bool TagFromOriginalSource(const winrt::PointerRoutedEventArgs &args, int64_t *pTag, xaml::UIElement *pSourceElement) {
|
|
495
|
+
assert(pTag != nullptr);
|
|
496
|
+
assert(pSourceElement != nullptr);
|
|
497
|
+
|
|
498
|
+
// Find the React element that triggered the input event
|
|
499
|
+
xaml::UIElement sourceElement = args.OriginalSource().try_as<xaml::UIElement>();
|
|
500
|
+
winrt::IPropertyValue tag(nullptr);
|
|
501
|
+
|
|
502
|
+
while (sourceElement) {
|
|
503
|
+
auto tagValue = sourceElement.ReadLocalValue(xaml::FrameworkElement::TagProperty());
|
|
504
|
+
if (tagValue != xaml::DependencyProperty::UnsetValue()) {
|
|
505
|
+
tag = tagValue.try_as<winrt::IPropertyValue>();
|
|
506
|
+
// If a TextBlock was the UIElement event source, perform a more accurate hit test,
|
|
507
|
+
// searching for the tag of the nested Run/Span XAML elements that the user actually clicked.
|
|
508
|
+
// This is to support nested <Text> elements in React.
|
|
509
|
+
// Nested React <Text> elements get translated into nested XAML <Span> elements,
|
|
510
|
+
// while the content of the <Text> becomes a list of XAML <Run> elements.
|
|
511
|
+
// However, we should report the Text element as the target, not the contexts of the text.
|
|
512
|
+
if (const auto textBlock = sourceElement.try_as<xaml::Controls::TextBlock>()) {
|
|
513
|
+
const auto pointerPos = args.GetCurrentPoint(textBlock).RawPosition();
|
|
514
|
+
const auto inlines = textBlock.Inlines().GetView();
|
|
515
|
+
|
|
516
|
+
bool isHit = false;
|
|
517
|
+
const auto finerTag = TestHit(inlines, pointerPos, isHit);
|
|
518
|
+
if (finerTag) {
|
|
519
|
+
tag = finerTag;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
sourceElement = winrt::VisualTreeHelper::GetParent(sourceElement).try_as<xaml::UIElement>();
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (tag == nullptr) {
|
|
530
|
+
// If the root view fails to be fully created, then the Tag property will
|
|
531
|
+
// never be set. This can happen,
|
|
532
|
+
// for example, when the red box error box is shown.
|
|
533
|
+
return false;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
*pTag = tag.GetInt64();
|
|
537
|
+
*pSourceElement = sourceElement;
|
|
538
|
+
return true;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
bool TouchEventHandler::IsEndishEventType(TouchEventType eventType) noexcept {
|
|
542
|
+
switch (eventType) {
|
|
543
|
+
case TouchEventType::End:
|
|
544
|
+
case TouchEventType::Cancel:
|
|
545
|
+
case TouchEventType::CaptureLost:
|
|
546
|
+
return true;
|
|
547
|
+
default:
|
|
548
|
+
return false;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
441
551
|
#endif
|
|
442
552
|
|
|
443
553
|
void TouchEventHandler::DispatchTouchEvent(TouchEventType eventType, size_t pointerIndex) {
|
|
@@ -456,8 +566,13 @@ void TouchEventHandler::DispatchTouchEvent(TouchEventType eventType, size_t poin
|
|
|
456
566
|
|
|
457
567
|
size_t index = 0;
|
|
458
568
|
for (const auto &pointer : m_pointers) {
|
|
459
|
-
|
|
460
|
-
|
|
569
|
+
bool isChangedPointer = pointerIndex == index++;
|
|
570
|
+
|
|
571
|
+
if (!isChangedPointer || !IsEndishEventType(eventType)) {
|
|
572
|
+
te.touches.insert(TouchForPointer(pointer));
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (isChangedPointer)
|
|
461
576
|
te.changedTouches.insert(TouchForPointer(pointer));
|
|
462
577
|
|
|
463
578
|
auto emitter = std::static_pointer_cast<facebook::react::TouchEventEmitter>(
|
|
@@ -530,17 +645,16 @@ bool TouchEventHandler::DispatchBackEvent() {
|
|
|
530
645
|
return true;
|
|
531
646
|
}
|
|
532
647
|
|
|
533
|
-
const char *TouchEventHandler::GetPointerDeviceTypeName(
|
|
534
|
-
winrt::Windows::Devices::Input::PointerDeviceType deviceType) noexcept {
|
|
648
|
+
const char *TouchEventHandler::GetPointerDeviceTypeName(PointerDeviceType deviceType) noexcept {
|
|
535
649
|
const char *deviceTypeName = "unknown";
|
|
536
650
|
switch (deviceType) {
|
|
537
|
-
case
|
|
651
|
+
case PointerDeviceType::Mouse:
|
|
538
652
|
deviceTypeName = "mouse";
|
|
539
653
|
break;
|
|
540
|
-
case
|
|
654
|
+
case PointerDeviceType::Pen:
|
|
541
655
|
deviceTypeName = "pen";
|
|
542
656
|
break;
|
|
543
|
-
case
|
|
657
|
+
case PointerDeviceType::Touch:
|
|
544
658
|
deviceTypeName = "touch";
|
|
545
659
|
break;
|
|
546
660
|
default:
|
|
@@ -605,6 +719,18 @@ bool TouchEventHandler::PropagatePointerEventAndFindReactSourceBranch(
|
|
|
605
719
|
assert(pTagsForBranch != nullptr);
|
|
606
720
|
assert(pSourceElement != nullptr);
|
|
607
721
|
|
|
722
|
+
#ifdef USE_FABRIC
|
|
723
|
+
if (m_fabric) {
|
|
724
|
+
int64_t tag;
|
|
725
|
+
if (TagFromOriginalSource(args.Args(), &tag, pSourceElement)) {
|
|
726
|
+
std::vector<int64_t> tagsForBranch;
|
|
727
|
+
tagsForBranch.push_back(tag);
|
|
728
|
+
*pTagsForBranch = std::move(tagsForBranch);
|
|
729
|
+
}
|
|
730
|
+
return pSourceElement != nullptr;
|
|
731
|
+
}
|
|
732
|
+
#endif
|
|
733
|
+
|
|
608
734
|
if (const auto uiManager = GetNativeUIManager(*m_context).lock()) {
|
|
609
735
|
xaml::UIElement sourceElement = args.Args().OriginalSource().try_as<xaml::UIElement>();
|
|
610
736
|
ShadowNodeBase *node = nullptr;
|
|
@@ -691,7 +817,7 @@ std::vector<int64_t> GetTagsForBranch(INativeUIManagerHost *host, int64_t tag, i
|
|
|
691
817
|
std::vector<int64_t> tags;
|
|
692
818
|
|
|
693
819
|
auto *shadowNode = host->FindShadowNodeForTag(tag);
|
|
694
|
-
while (shadowNode != nullptr && tag !=
|
|
820
|
+
while (shadowNode != nullptr && tag != InvalidTag) {
|
|
695
821
|
if (tag == rootTag) {
|
|
696
822
|
break;
|
|
697
823
|
}
|