react-native-windows 0.68.1 → 0.69.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/Base/CoreNativeModules.cpp +1 -4
- 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 +15 -2
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
- package/Microsoft.ReactNative/ReactInstanceSettings.idl +12 -2
- package/Microsoft.ReactNative/ReactPackageBuilder.cpp +1 -1
- package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
- package/Microsoft.ReactNative/RedBox.cpp +3 -2
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +3 -2
- package/Microsoft.ReactNative/TurboModulesProvider.h +4 -1
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +41 -0
- 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 +19 -14
- package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
- 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 +3 -3
- 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/threadPoolScheduler_win.cpp +96 -4
- 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/JSEngine.props +1 -1
- 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/CreateModules.h +4 -0
- package/Shared/DevSupportManager.cpp +34 -33
- 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/NapiJsiV8RuntimeHolder.h +1 -1
- package/Shared/JSI/RuntimeHolder.h +2 -0
- package/Shared/Modules/HttpModule.cpp +198 -0
- package/Shared/Modules/HttpModule.h +53 -0
- package/Shared/Modules/WebSocketModule.cpp +5 -1
- package/Shared/Modules/WebSocketModule.h +8 -5
- package/Shared/Networking/IHttpResource.h +53 -0
- package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
- package/Shared/Networking/OriginPolicy.h +15 -0
- package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
- package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
- package/Shared/Networking/WinRTHttpResource.cpp +347 -0
- package/Shared/Networking/WinRTHttpResource.h +67 -0
- package/Shared/Networking/WinRTTypes.h +30 -0
- package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
- package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
- package/Shared/OInstance.cpp +37 -11
- package/Shared/RuntimeOptions.cpp +93 -15
- package/Shared/RuntimeOptions.h +22 -9
- package/Shared/Shared.vcxitems +126 -5
- package/Shared/Shared.vcxitems.filters +55 -15
- package/Shared/Threading/BatchingQueueThread.cpp +1 -1
- package/Shared/Utils/WinRTConversions.cpp +22 -0
- package/Shared/Utils/WinRTConversions.h +15 -0
- 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/IHttpResource.h +0 -34
- package/Shared/cdebug.cpp +0 -6
- package/include/Shared/ViewManager.h +0 -34
|
@@ -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
|
}
|
|
@@ -50,6 +50,12 @@ class TouchEventHandler {
|
|
|
50
50
|
winrt::IInspectable m_exitedHandler;
|
|
51
51
|
winrt::IInspectable m_movedHandler;
|
|
52
52
|
|
|
53
|
+
#ifdef USE_WINUI3
|
|
54
|
+
using PointerDeviceType = winrt::Microsoft::UI::Input::PointerDeviceType;
|
|
55
|
+
#else
|
|
56
|
+
using PointerDeviceType = winrt::Windows::Devices::Input::PointerDeviceType;
|
|
57
|
+
#endif
|
|
58
|
+
|
|
53
59
|
struct ReactPointer {
|
|
54
60
|
int64_t target = 0;
|
|
55
61
|
int64_t identifier = 0;
|
|
@@ -57,8 +63,7 @@ class TouchEventHandler {
|
|
|
57
63
|
uint64_t timestamp = 0;
|
|
58
64
|
winrt::Point positionRoot = {0, 0};
|
|
59
65
|
winrt::Point positionView = {0, 0};
|
|
60
|
-
|
|
61
|
-
winrt::Windows::Devices::Input::PointerDeviceType::Mouse};
|
|
66
|
+
PointerDeviceType deviceType{PointerDeviceType::Mouse};
|
|
62
67
|
float pressure = 0;
|
|
63
68
|
bool isLeftButton = false;
|
|
64
69
|
bool isRightButton = false;
|
|
@@ -80,14 +85,16 @@ class TouchEventHandler {
|
|
|
80
85
|
xaml::UIElement sourceElement,
|
|
81
86
|
std::vector<int64_t> &&newViews);
|
|
82
87
|
|
|
88
|
+
enum class TouchEventType { Start = 0, End, Move, Cancel, CaptureLost, PointerEntered, PointerExited, PointerMove };
|
|
83
89
|
#ifdef USE_FABRIC
|
|
84
90
|
facebook::react::Touch TouchForPointer(const ReactPointer &pointer) noexcept;
|
|
91
|
+
static bool IsEndishEventType(TouchEventType eventType) noexcept;
|
|
85
92
|
#endif
|
|
86
|
-
enum class TouchEventType { Start = 0, End, Move, Cancel, CaptureLost, PointerEntered, PointerExited, PointerMove };
|
|
87
93
|
void OnPointerConcluded(TouchEventType eventType, const winrt::PointerRoutedEventArgs &args);
|
|
88
94
|
void DispatchTouchEvent(TouchEventType eventType, size_t pointerIndex);
|
|
89
95
|
bool DispatchBackEvent();
|
|
90
|
-
const char *GetPointerDeviceTypeName(
|
|
96
|
+
const char *GetPointerDeviceTypeName(PointerDeviceType deviceType) noexcept;
|
|
97
|
+
|
|
91
98
|
winrt::Microsoft::ReactNative::PointerEventKind GetPointerEventKind(TouchEventType eventType) noexcept;
|
|
92
99
|
const wchar_t *GetTouchEventTypeName(TouchEventType eventType) noexcept;
|
|
93
100
|
|
|
@@ -47,14 +47,6 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
|
|
|
47
47
|
panel->m_propertiesChanged = true;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/*static*/ void ViewPanel::PositionPropertyChanged(
|
|
51
|
-
xaml::DependencyObject sender,
|
|
52
|
-
xaml::DependencyPropertyChangedEventArgs e) {
|
|
53
|
-
auto element{sender.as<xaml::UIElement>()};
|
|
54
|
-
if (element != nullptr)
|
|
55
|
-
InvalidateForArrange(element);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
50
|
/*static*/ xaml::DependencyProperty ViewPanel::ViewBackgroundProperty() {
|
|
59
51
|
static xaml::DependencyProperty s_viewBackgroundProperty = xaml::DependencyProperty::Register(
|
|
60
52
|
L"ViewBackground",
|
|
@@ -96,23 +88,11 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
|
|
|
96
88
|
}
|
|
97
89
|
|
|
98
90
|
/*static*/ xaml::DependencyProperty ViewPanel::TopProperty() {
|
|
99
|
-
|
|
100
|
-
L"Top",
|
|
101
|
-
winrt::xaml_typename<double>(),
|
|
102
|
-
viewPanelTypeName,
|
|
103
|
-
winrt::PropertyMetadata(winrt::box_value((double)0), ViewPanel::PositionPropertyChanged));
|
|
104
|
-
|
|
105
|
-
return s_topProperty;
|
|
91
|
+
return xaml::Controls::Canvas::TopProperty();
|
|
106
92
|
}
|
|
107
93
|
|
|
108
94
|
/*static*/ xaml::DependencyProperty ViewPanel::LeftProperty() {
|
|
109
|
-
|
|
110
|
-
L"Left",
|
|
111
|
-
winrt::xaml_typename<double>(),
|
|
112
|
-
viewPanelTypeName,
|
|
113
|
-
winrt::PropertyMetadata(winrt::box_value((double)0), ViewPanel::PositionPropertyChanged));
|
|
114
|
-
|
|
115
|
-
return s_LeftProperty;
|
|
95
|
+
return xaml::Controls::Canvas::LeftProperty();
|
|
116
96
|
}
|
|
117
97
|
|
|
118
98
|
/*static*/ xaml::DependencyProperty ViewPanel::ClipChildrenProperty() {
|
|
@@ -135,7 +115,7 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
|
|
|
135
115
|
InvalidateForArrange(element);
|
|
136
116
|
}
|
|
137
117
|
|
|
138
|
-
void ViewPanel::InvalidateForArrange(xaml::
|
|
118
|
+
void ViewPanel::InvalidateForArrange(const xaml::DependencyObject &element) {
|
|
139
119
|
// If the element's position has changed, we must invalidate the parent for arrange,
|
|
140
120
|
// as it's the parent's responsibility to arrange its children.
|
|
141
121
|
if (auto parent = VisualTreeHelper::GetParent(element)) {
|
|
@@ -77,13 +77,13 @@ struct ViewPanel : ViewPanelT<ViewPanel> {
|
|
|
77
77
|
return winrt::unbox_value<double>(element.GetValue(LeftProperty()));
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
static void InvalidateForArrange(const xaml::DependencyObject &element);
|
|
81
|
+
|
|
80
82
|
private:
|
|
81
83
|
void Remove(xaml::UIElement element) const;
|
|
82
84
|
|
|
83
85
|
void UpdateClip(winrt::Windows::Foundation::Size &finalSize);
|
|
84
86
|
|
|
85
|
-
static void InvalidateForArrange(xaml::UIElement element);
|
|
86
|
-
|
|
87
87
|
private:
|
|
88
88
|
bool m_propertiesChanged{false};
|
|
89
89
|
|
|
@@ -93,7 +93,6 @@ struct ViewPanel : ViewPanelT<ViewPanel> {
|
|
|
93
93
|
|
|
94
94
|
private:
|
|
95
95
|
static void VisualPropertyChanged(xaml::DependencyObject sender, xaml::DependencyPropertyChangedEventArgs e);
|
|
96
|
-
static void PositionPropertyChanged(xaml::DependencyObject sender, xaml::DependencyPropertyChangedEventArgs e);
|
|
97
96
|
};
|
|
98
97
|
|
|
99
98
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#include "ViewControl.h"
|
|
9
9
|
|
|
10
|
+
#include <UI.Xaml.Automation.Peers.h>
|
|
10
11
|
#include "DynamicAutomationProperties.h"
|
|
11
12
|
|
|
12
13
|
#include <JSValueWriter.h>
|
|
@@ -127,6 +128,14 @@ class ViewShadowNode : public ShadowNodeBase {
|
|
|
127
128
|
GetControl().IsTabStop(m_isFocusable);
|
|
128
129
|
}
|
|
129
130
|
|
|
131
|
+
bool IsAccessible() const {
|
|
132
|
+
return m_isAccessible;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void IsAccessible(bool isAccessible) {
|
|
136
|
+
m_isAccessible = isAccessible;
|
|
137
|
+
}
|
|
138
|
+
|
|
130
139
|
bool IsHitTestBrushRequired() const {
|
|
131
140
|
return IsRegisteredForMouseEvents();
|
|
132
141
|
}
|
|
@@ -251,6 +260,7 @@ class ViewShadowNode : public ShadowNodeBase {
|
|
|
251
260
|
bool m_enableFocusRing = true;
|
|
252
261
|
bool m_onClick = false;
|
|
253
262
|
bool m_isFocusable = false;
|
|
263
|
+
bool m_isAccessible = false;
|
|
254
264
|
int32_t m_tabIndex = std::numeric_limits<std::int32_t>::max();
|
|
255
265
|
|
|
256
266
|
xaml::Controls::ContentControl::GotFocus_revoker m_contentControlGotFocusRevoker{};
|
|
@@ -420,6 +430,11 @@ bool ViewViewManager::UpdateProperty(
|
|
|
420
430
|
pViewShadowNode->TabIndex(std::numeric_limits<std::int32_t>::max());
|
|
421
431
|
}
|
|
422
432
|
} else {
|
|
433
|
+
if (propertyName == "accessible") {
|
|
434
|
+
if (propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Boolean) {
|
|
435
|
+
pViewShadowNode->IsAccessible(propertyValue.AsBoolean());
|
|
436
|
+
}
|
|
437
|
+
}
|
|
423
438
|
ret = Super::UpdateProperty(nodeToUpdate, propertyName, propertyValue);
|
|
424
439
|
}
|
|
425
440
|
}
|
|
@@ -563,6 +578,12 @@ void ViewViewManager::TryUpdateView(
|
|
|
563
578
|
|
|
564
579
|
if (useControl)
|
|
565
580
|
pViewShadowNode->GetControl().Content(visualRoot);
|
|
581
|
+
|
|
582
|
+
if (useControl && pViewShadowNode->IsAccessible() != pViewShadowNode->IsFocusable()) {
|
|
583
|
+
pViewShadowNode->GetControl().IsTabStop(false);
|
|
584
|
+
xaml::Automation::AutomationProperties::SetAccessibilityView(
|
|
585
|
+
pViewShadowNode->GetControl(), xaml::Automation::Peers::AccessibilityView::Raw);
|
|
586
|
+
}
|
|
566
587
|
}
|
|
567
588
|
|
|
568
589
|
void ViewViewManager::SetLayoutProps(
|
|
@@ -37,7 +37,7 @@ void XamlUIService::DispatchEvent(
|
|
|
37
37
|
JSValueArgWriter const &eventDataArgWriter) noexcept {
|
|
38
38
|
auto paramsWriter = winrt::make_self<DynamicWriter>();
|
|
39
39
|
paramsWriter->WriteArrayBegin();
|
|
40
|
-
paramsWriter->WriteInt64(
|
|
40
|
+
paramsWriter->WriteInt64(::Microsoft::ReactNative::GetTag(view));
|
|
41
41
|
paramsWriter->WriteString(eventName);
|
|
42
42
|
if (eventDataArgWriter) {
|
|
43
43
|
eventDataArgWriter(*paramsWriter);
|
|
@@ -8,14 +8,19 @@
|
|
|
8
8
|
namespace Microsoft::ReactNative {
|
|
9
9
|
|
|
10
10
|
using XamlView = xaml::DependencyObject;
|
|
11
|
+
constexpr int64_t InvalidTag = -1;
|
|
11
12
|
|
|
12
13
|
inline int64_t GetTag(XamlView view) {
|
|
13
14
|
auto tagValue = view.ReadLocalValue(xaml::FrameworkElement::TagProperty());
|
|
14
15
|
if (tagValue != xaml::DependencyProperty::UnsetValue()) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
if (auto tagValueInt = tagValue.try_as<winrt::IPropertyValue>()) {
|
|
17
|
+
if (tagValueInt.Type() == winrt::PropertyType::Int64) {
|
|
18
|
+
return tagValueInt.GetInt64();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
18
21
|
}
|
|
22
|
+
|
|
23
|
+
return InvalidTag;
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
inline void SetTag(XamlView view, int64_t tag) {
|
|
@@ -17,13 +17,12 @@ namespace xaml = winrt::Windows::UI::Xaml;
|
|
|
17
17
|
namespace comp = winrt::Windows::UI::Composition;
|
|
18
18
|
namespace ui = winrt::Windows::UI;
|
|
19
19
|
namespace winrt {
|
|
20
|
-
namespace
|
|
21
|
-
using ColorHelper = winrt::Windows::UI::ColorHelper;
|
|
20
|
+
namespace dispatching = winrt::Windows::System;
|
|
22
21
|
using Colors = winrt::Windows::UI::Colors;
|
|
23
22
|
} // namespace winrt
|
|
24
23
|
#else
|
|
25
24
|
|
|
26
|
-
#include <winrt/Microsoft.
|
|
25
|
+
#include <winrt/Microsoft.UI.Dispatching.h>
|
|
27
26
|
#include <winrt/Microsoft.UI.Xaml.h>
|
|
28
27
|
|
|
29
28
|
#define XAML_CPPWINRT_NAMESPACE winrt::Microsoft::UI::Xaml
|
|
@@ -31,8 +30,7 @@ namespace xaml = winrt::Microsoft::UI::Xaml;
|
|
|
31
30
|
namespace comp = winrt::Microsoft::UI::Composition;
|
|
32
31
|
namespace ui = winrt::Microsoft::UI;
|
|
33
32
|
namespace winrt {
|
|
34
|
-
namespace
|
|
35
|
-
using ColorHelper = winrt::Microsoft::UI::ColorHelper;
|
|
33
|
+
namespace dispatching = winrt::Microsoft::UI::Dispatching;
|
|
36
34
|
using Colors = winrt::Microsoft::UI::Colors;
|
|
37
35
|
} // namespace winrt
|
|
38
36
|
|
|
@@ -92,7 +92,7 @@ __declspec(selectany) std::unordered_map<std::wstring, IndirectLibrary> indirect
|
|
|
92
92
|
} // namespace details
|
|
93
93
|
|
|
94
94
|
template <typename TFn, typename... TArgs>
|
|
95
|
-
auto CallIndirect(const wchar_t *dllName, const char *fnName, TArgs &&...
|
|
95
|
+
auto CallIndirect(const wchar_t *dllName, const char *fnName, TArgs &&...args) noexcept {
|
|
96
96
|
if (details::indirectLibraries.count(dllName) == 0) {
|
|
97
97
|
details::indirectLibraries.emplace(dllName, WINRT_IMPL_LoadLibraryW(dllName));
|
|
98
98
|
}
|
|
@@ -306,6 +306,15 @@ PropNameID JsiAbiRuntime::createPropNameIDFromString(const String &str) try {
|
|
|
306
306
|
throw;
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
+
PropNameID JsiAbiRuntime::createPropNameIDFromSymbol(const Symbol &sym) {
|
|
310
|
+
// TODO: Support for symbols through the native API in JSC is very limited.
|
|
311
|
+
// While we could construct a PropNameID here, we would not be able to get a
|
|
312
|
+
// symbol property through the C++ API.
|
|
313
|
+
UNREFERENCED_PARAMETER(sym);
|
|
314
|
+
RethrowJsiError();
|
|
315
|
+
throw;
|
|
316
|
+
}
|
|
317
|
+
|
|
309
318
|
std::string JsiAbiRuntime::utf8(const PropNameID &propertyId) try {
|
|
310
319
|
std::string dataResult;
|
|
311
320
|
m_runtime.PropertyIdToUtf8(AsJsiPropertyIdRef(propertyId), [&dataResult](array_view<uint8_t const> utf8) {
|
|
@@ -994,7 +1003,7 @@ size_t JsiAbiRuntime::ValueRefArray::Size() const noexcept {
|
|
|
994
1003
|
//===========================================================================
|
|
995
1004
|
|
|
996
1005
|
JsiAbiRuntime::PropNameIDRef::PropNameIDRef(JsiPropertyIdRef const &data) noexcept
|
|
997
|
-
: m_propertyId{make<PropNameID>(new
|
|
1006
|
+
: m_propertyId{make<PropNameID>(new(std::addressof(m_pointerStore)) DataPointerValue(data.Data))} {}
|
|
998
1007
|
|
|
999
1008
|
JsiAbiRuntime::PropNameIDRef::~PropNameIDRef() noexcept {}
|
|
1000
1009
|
|
|
@@ -1004,4 +1013,4 @@ JsiAbiRuntime::PropNameIDRef::operator facebook::jsi::PropNameID const &() const
|
|
|
1004
1013
|
|
|
1005
1014
|
} // namespace winrt::Microsoft::ReactNative
|
|
1006
1015
|
|
|
1007
|
-
#pragma warning(pop)
|
|
1016
|
+
#pragma warning(pop)
|
|
@@ -99,6 +99,7 @@ struct JsiAbiRuntime : facebook::jsi::Runtime {
|
|
|
99
99
|
facebook::jsi::PropNameID createPropNameIDFromAscii(const char *str, size_t length) override;
|
|
100
100
|
facebook::jsi::PropNameID createPropNameIDFromUtf8(const uint8_t *utf8, size_t length) override;
|
|
101
101
|
facebook::jsi::PropNameID createPropNameIDFromString(const facebook::jsi::String &str) override;
|
|
102
|
+
facebook::jsi::PropNameID createPropNameIDFromSymbol(const facebook::jsi::Symbol &sym);
|
|
102
103
|
std::string utf8(const facebook::jsi::PropNameID &propertyNameId) override;
|
|
103
104
|
bool compare(const facebook::jsi::PropNameID &left, const facebook::jsi::PropNameID &right) override;
|
|
104
105
|
|