react-native-windows 0.76.2 → 0.77.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 +5 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/NativeAnimatedAllowlist.windows.js +122 -0
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
- package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
- package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
- package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.windows.js +19 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +2 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/Switch/Switch.windows.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.windows.js +88 -57
- package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
- package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.windows.js +5 -1
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/Modal/Modal.windows.js +370 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.windows.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.windows.js +298 -292
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/Text/TextProps.windows.js +2 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.windows.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.windows.js +6 -18
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.windows.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
- package/Microsoft.ReactNative/CompositionComponentView.idl +2 -1
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +6 -3
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +7 -0
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +2 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.cpp +45 -50
- package/Microsoft.ReactNative/Fabric/ComponentView.h +14 -22
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +943 -0
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +80 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +223 -21
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +187 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +10 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +8 -32
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +349 -929
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +32 -29
- package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +9 -2
- package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +181 -123
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +16 -8
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +99 -37
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +25 -3
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +64 -3
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +51 -3
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +3 -0
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -8
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +3 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +56 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +9 -3
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +35 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -0
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +1 -5
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +26 -0
- package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +1 -1
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactNativeIsland.idl +3 -2
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative/ViewProps.idl +2 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
- package/Microsoft.ReactNative.Cxx/ComponentView.Experimental.interop.h +14 -0
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
- package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
- package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
- package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
- package/PropertySheets/Bundle.Common.targets +1 -1
- package/PropertySheets/Bundle.props +3 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/PropertySheets/OutputMSBuildProperties.targets +3 -1
- package/ReactCommon/ReactCommon.vcxproj +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
- package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
- package/Shared/InspectorPackagerConnection.cpp +3 -6
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/InstanceManager.h +1 -1
- package/Shared/OInstance.h +1 -1
- package/Shared/Shared.vcxitems +20 -2
- package/Shared/Shared.vcxitems.filters +4 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +28 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +20 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +5 -0
- package/codegen/NativeAlertManagerSpec.g.h +1 -0
- package/codegen/NativeAnimatedModuleSpec.g.h +1 -0
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +1 -0
- package/codegen/NativeAppStateSpec.g.h +1 -0
- package/codegen/NativeAppThemeSpec.g.h +1 -0
- package/codegen/NativeAppearanceSpec.g.h +1 -0
- package/codegen/NativeBlobModuleSpec.g.h +1 -0
- package/codegen/NativeBugReportingSpec.g.h +1 -0
- package/codegen/NativeClipboardSpec.g.h +1 -0
- package/codegen/NativeDOMSpec.g.h +1 -0
- package/codegen/NativeDevLoadingViewSpec.g.h +1 -0
- package/codegen/NativeDevMenuSpec.g.h +1 -0
- package/codegen/NativeDevSettingsSpec.g.h +1 -0
- package/codegen/NativeDeviceEventManagerSpec.g.h +1 -0
- package/codegen/NativeDeviceInfoSpec.g.h +1 -0
- package/codegen/NativeDialogManagerAndroidSpec.g.h +1 -0
- package/codegen/NativeDialogManagerWindowsSpec.g.h +1 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +2 -7
- package/codegen/NativeFileReaderModuleSpec.g.h +1 -0
- package/codegen/NativeFrameRateLoggerSpec.g.h +1 -0
- package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +1 -0
- package/codegen/NativeI18nManagerSpec.g.h +1 -0
- package/codegen/NativeIdleCallbacksSpec.g.h +1 -0
- package/codegen/NativeImageEditorSpec.g.h +1 -0
- package/codegen/NativeImageLoaderAndroidSpec.g.h +1 -0
- package/codegen/NativeImageLoaderIOSSpec.g.h +1 -0
- package/codegen/NativeImageStoreAndroidSpec.g.h +1 -0
- package/codegen/NativeImageStoreIOSSpec.g.h +1 -0
- package/codegen/NativeIntentAndroidSpec.g.h +1 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +3 -0
- package/codegen/NativeJSCHeapCaptureSpec.g.h +1 -0
- package/codegen/NativeJSCSamplingProfilerSpec.g.h +1 -0
- package/codegen/NativeKeyboardObserverSpec.g.h +1 -0
- package/codegen/NativeLinkingManagerSpec.g.h +1 -0
- package/codegen/NativeLogBoxSpec.g.h +1 -0
- package/codegen/NativeMicrotasksSpec.g.h +1 -0
- package/codegen/NativeModalManagerSpec.g.h +1 -0
- package/codegen/NativeMutationObserverSpec.g.h +1 -0
- package/codegen/NativeNetworkingAndroidSpec.g.h +1 -0
- package/codegen/NativeNetworkingIOSSpec.g.h +1 -0
- package/codegen/NativePerformanceSpec.g.h +128 -3
- package/codegen/NativePermissionsAndroidSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsAndroidSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsIOSSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsWindowsSpec.g.h +1 -0
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +1 -0
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +126 -137
- package/codegen/NativeRedBoxSpec.g.h +1 -0
- package/codegen/NativeSampleTurboModuleSpec.g.h +1 -0
- package/codegen/NativeSegmentFetcherSpec.g.h +1 -0
- package/codegen/NativeSettingsManagerSpec.g.h +1 -0
- package/codegen/NativeShareModuleSpec.g.h +1 -0
- package/codegen/NativeSoundManagerSpec.g.h +1 -0
- package/codegen/NativeSourceCodeSpec.g.h +1 -0
- package/codegen/NativeStatusBarManagerAndroidSpec.g.h +1 -0
- package/codegen/NativeStatusBarManagerIOSSpec.g.h +1 -0
- package/codegen/NativeTimingSpec.g.h +1 -0
- package/codegen/NativeToastAndroidSpec.g.h +1 -0
- package/codegen/NativeUIManagerSpec.g.h +1 -0
- package/codegen/NativeVibrationSpec.g.h +1 -0
- package/codegen/NativeWebSocketModuleSpec.g.h +1 -0
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/Props.cpp +1 -0
- package/codegen/react/components/rnwcore/Props.h +1 -0
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
- package/codegen/react/components/rnwcore/States.h +0 -12
- package/codegen/rnwcoreJSI-generated.cpp +219 -186
- package/codegen/rnwcoreJSI.h +942 -511
- package/index.js +10 -3
- package/index.windows.js +10 -3
- package/jest/setup.js +36 -1
- package/just-task.js +15 -0
- package/package.json +22 -22
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/useAnimatedPropsMemo.js +348 -0
- package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/templates/cpp-lib/template.config.js +13 -7
- package/templates/templateUtils.js +10 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
- package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -52
- package/codegen/NativePerformanceObserverSpec.g.h +0 -130
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include <Fabric/ComponentView.h>
|
|
8
|
+
#include <Microsoft.ReactNative.Cxx/ReactContext.h>
|
|
9
|
+
#include <react/renderer/components/view/ViewEventEmitter.h>
|
|
10
|
+
#include <react/renderer/components/view/ViewProps.h>
|
|
11
|
+
#include "CompositionHelpers.h"
|
|
12
|
+
|
|
13
|
+
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
14
|
+
|
|
15
|
+
struct ComponentView;
|
|
16
|
+
|
|
17
|
+
// Controls adding/removing appropriate visuals to a parent to render a specific border without requiring
|
|
18
|
+
struct BorderPrimitive {
|
|
19
|
+
static constexpr size_t SpecialBorderLayerCount = 8;
|
|
20
|
+
|
|
21
|
+
// Use when attaching to an existing visual - We do this for View's border properties, to optimize the number of
|
|
22
|
+
// visuals for each view.
|
|
23
|
+
BorderPrimitive(
|
|
24
|
+
winrt::Microsoft::ReactNative::Composition::implementation::ComponentView &outer,
|
|
25
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &rootVisual);
|
|
26
|
+
|
|
27
|
+
// This ctor creates a new root visual that can then be added to the visual tree
|
|
28
|
+
BorderPrimitive(winrt::Microsoft::ReactNative::Composition::implementation::ComponentView &outer);
|
|
29
|
+
|
|
30
|
+
void markNeedsUpdate() noexcept;
|
|
31
|
+
|
|
32
|
+
// We hoist focus visuals up the tree to allow them to be higher in the z-order.
|
|
33
|
+
// This means a single BorderPrimitive may change the owning ComponentView as focus moves around
|
|
34
|
+
void setOuter(winrt::Microsoft::ReactNative::Composition::implementation::ComponentView *outer) noexcept;
|
|
35
|
+
|
|
36
|
+
void updateProps(
|
|
37
|
+
const facebook::react::ViewProps &oldViewProps,
|
|
38
|
+
const facebook::react::ViewProps &newViewProps) noexcept;
|
|
39
|
+
void finalize(
|
|
40
|
+
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
41
|
+
const facebook::react::BorderMetrics &borderMetrics) noexcept;
|
|
42
|
+
void onThemeChanged(
|
|
43
|
+
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
44
|
+
const facebook::react::BorderMetrics &borderMetrics) noexcept;
|
|
45
|
+
|
|
46
|
+
uint8_t numberOfVisuals() const noexcept;
|
|
47
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual RootVisual() const noexcept;
|
|
48
|
+
|
|
49
|
+
static facebook::react::BorderMetrics resolveAndAlignBorderMetrics(
|
|
50
|
+
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
51
|
+
const facebook::react::ViewProps &viewProps) noexcept;
|
|
52
|
+
|
|
53
|
+
static bool requiresBorder(
|
|
54
|
+
const facebook::react::BorderMetrics &borderMetrics,
|
|
55
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme) noexcept;
|
|
56
|
+
|
|
57
|
+
static winrt::com_ptr<ID2D1PathGeometry> GenerateRoundedRectPathGeometry(
|
|
58
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext,
|
|
59
|
+
const facebook::react::RectangleCorners<facebook::react::CornerRadii> &baseRadius,
|
|
60
|
+
const facebook::react::RectangleEdges<float> &inset,
|
|
61
|
+
const facebook::react::RectangleEdges<float> &rectPathGeometry) noexcept;
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
std::array<winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual, SpecialBorderLayerCount>
|
|
65
|
+
FindSpecialBorderLayers() const noexcept;
|
|
66
|
+
|
|
67
|
+
bool TryUpdateSpecialBorderLayers(
|
|
68
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
|
|
69
|
+
std::array<winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual, SpecialBorderLayerCount>
|
|
70
|
+
&spBorderVisuals,
|
|
71
|
+
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
72
|
+
const facebook::react::BorderMetrics &borderMetrics) noexcept;
|
|
73
|
+
|
|
74
|
+
uint8_t m_numBorderVisuals{0};
|
|
75
|
+
winrt::Microsoft::ReactNative::Composition::implementation::ComponentView *m_outer;
|
|
76
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
|
|
77
|
+
bool m_needsUpdate{true};
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#include "pch.h"
|
|
2
2
|
#include "CompositionDynamicAutomationProvider.h"
|
|
3
3
|
#include <Fabric/ComponentView.h>
|
|
4
|
+
#include <Fabric/Composition/SwitchComponentView.h>
|
|
5
|
+
#include <Fabric/Composition/TextInput/WindowsTextInputComponentView.h>
|
|
4
6
|
#include <Unicode.h>
|
|
5
7
|
#include "RootComponentView.h"
|
|
6
8
|
#include "UiaHelpers.h"
|
|
@@ -9,7 +11,21 @@ namespace winrt::Microsoft::ReactNative::implementation {
|
|
|
9
11
|
|
|
10
12
|
CompositionDynamicAutomationProvider::CompositionDynamicAutomationProvider(
|
|
11
13
|
const winrt::Microsoft::ReactNative::Composition::ComponentView &componentView) noexcept
|
|
12
|
-
: m_view{componentView} {
|
|
14
|
+
: m_view{componentView} {
|
|
15
|
+
auto strongView = m_view.view();
|
|
16
|
+
|
|
17
|
+
if (!strongView)
|
|
18
|
+
return;
|
|
19
|
+
|
|
20
|
+
auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
|
|
21
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
|
|
22
|
+
if (!props)
|
|
23
|
+
return;
|
|
24
|
+
|
|
25
|
+
if (props->accessibilityState.has_value() && props->accessibilityState->selected.has_value()) {
|
|
26
|
+
AddSelectionItemsToContainer(this);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
13
29
|
|
|
14
30
|
HRESULT __stdcall CompositionDynamicAutomationProvider::Navigate(
|
|
15
31
|
NavigateDirection direction,
|
|
@@ -141,6 +157,20 @@ bool expandableControl(const facebook::react::SharedViewProps props) {
|
|
|
141
157
|
return false;
|
|
142
158
|
}
|
|
143
159
|
|
|
160
|
+
bool togglableControl(const facebook::react::SharedViewProps props) {
|
|
161
|
+
if (props->accessibilityState.has_value() &&
|
|
162
|
+
props->accessibilityState->checked != facebook::react::AccessibilityState::None) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
auto accessibilityActions = props->accessibilityActions;
|
|
166
|
+
for (size_t i = 0; i < accessibilityActions.size(); i++) {
|
|
167
|
+
if (accessibilityActions[i].name == "toggle") {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
|
|
144
174
|
HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTERNID patternId, IUnknown **pRetVal) {
|
|
145
175
|
if (pRetVal == nullptr)
|
|
146
176
|
return E_POINTER;
|
|
@@ -162,10 +192,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
|
|
|
162
192
|
props->accessibilityRole.empty() ? compositionView->DefaultControlType() : props->accessibilityRole;
|
|
163
193
|
// Invoke control pattern is used to support controls that do not maintain state
|
|
164
194
|
// when activated but rather initiate or perform a single, unambiguous action.
|
|
165
|
-
if (patternId == UIA_InvokePatternId &&
|
|
166
|
-
(accessibilityRole == "button" || accessibilityRole == "imagebutton" || accessibilityRole == "link" ||
|
|
167
|
-
accessibilityRole == "splitbutton" || (accessibilityRole == "menuitem" && props->onAccessibilityTap) ||
|
|
168
|
-
(accessibilityRole == "treeitem" && props->onAccessibilityTap))) {
|
|
195
|
+
if (patternId == UIA_InvokePatternId && (props->onAccessibilityTap)) {
|
|
169
196
|
*pRetVal = static_cast<IInvokeProvider *>(this);
|
|
170
197
|
AddRef();
|
|
171
198
|
}
|
|
@@ -176,32 +203,36 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
|
|
|
176
203
|
}
|
|
177
204
|
|
|
178
205
|
if (patternId == UIA_ValuePatternId &&
|
|
179
|
-
(
|
|
180
|
-
|
|
181
|
-
(accessibilityRole == "combobox" && accessibilityValueHasValue(props->accessibilityValue)) ||
|
|
182
|
-
(accessibilityRole == "link" && accessibilityValueHasValue(props->accessibilityValue)) ||
|
|
183
|
-
(accessibilityRole == "listitem" && accessibilityValueHasValue(props->accessibilityValue)) ||
|
|
184
|
-
(accessibilityRole == "progressbar" && accessibilityValueHasValue(props->accessibilityValue)) ||
|
|
185
|
-
(accessibilityRole == "adjustable" && accessibilityValueHasValue(props->accessibilityValue)) ||
|
|
186
|
-
(accessibilityRole == "spinbutton" && accessibilityValueHasValue(props->accessibilityValue)))) {
|
|
206
|
+
(strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::WindowsTextInputComponentView>() ||
|
|
207
|
+
accessibilityValueHasValue(props->accessibilityValue))) {
|
|
187
208
|
*pRetVal = static_cast<IValueProvider *>(this);
|
|
188
209
|
AddRef();
|
|
189
210
|
}
|
|
190
211
|
|
|
191
|
-
if (patternId == UIA_TogglePatternId &&
|
|
212
|
+
if (patternId == UIA_TogglePatternId &&
|
|
213
|
+
(strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::SwitchComponentView>() ||
|
|
214
|
+
togglableControl(props))) {
|
|
192
215
|
*pRetVal = static_cast<IToggleProvider *>(this);
|
|
193
216
|
AddRef();
|
|
194
217
|
}
|
|
195
218
|
|
|
196
|
-
if (patternId == UIA_ExpandCollapsePatternId &&
|
|
197
|
-
(accessibilityRole == "combobox" || accessibilityRole == "splitbutton" || accessibilityRole == "treeitem" ||
|
|
198
|
-
(expandableControl(props) &&
|
|
199
|
-
(accessibilityRole == "toolbar" || accessibilityRole == "menuitem" || accessibilityRole == "menubar" ||
|
|
200
|
-
accessibilityRole == "listitem" || accessibilityRole == "group" || accessibilityRole == "button")))) {
|
|
219
|
+
if (patternId == UIA_ExpandCollapsePatternId && expandableControl(props)) {
|
|
201
220
|
*pRetVal = static_cast<IExpandCollapseProvider *>(this);
|
|
202
221
|
AddRef();
|
|
203
222
|
}
|
|
204
223
|
|
|
224
|
+
if (patternId == UIA_SelectionPatternId && props->accessibilityState.has_value() &&
|
|
225
|
+
props->accessibilityState->multiselectable.has_value() && props->accessibilityState->required.has_value()) {
|
|
226
|
+
*pRetVal = static_cast<ISelectionProvider *>(this);
|
|
227
|
+
AddRef();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (patternId == UIA_SelectionItemPatternId && props->accessibilityState.has_value() &&
|
|
231
|
+
props->accessibilityState->selected.has_value()) {
|
|
232
|
+
*pRetVal = static_cast<ISelectionItemProvider *>(this);
|
|
233
|
+
AddRef();
|
|
234
|
+
}
|
|
235
|
+
|
|
205
236
|
return S_OK;
|
|
206
237
|
}
|
|
207
238
|
|
|
@@ -345,6 +376,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPropertyValue(PROPERT
|
|
|
345
376
|
case UIA_IsOffscreenPropertyId: {
|
|
346
377
|
pRetVal->vt = VT_BOOL;
|
|
347
378
|
pRetVal->boolVal = (compositionView->getClipState() == ClipState::FullyClipped) ? VARIANT_TRUE : VARIANT_FALSE;
|
|
379
|
+
break;
|
|
348
380
|
}
|
|
349
381
|
case UIA_HelpTextPropertyId: {
|
|
350
382
|
pRetVal->vt = VT_BSTR;
|
|
@@ -508,8 +540,13 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::get_ToggleState(ToggleSt
|
|
|
508
540
|
if (!strongView)
|
|
509
541
|
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
510
542
|
|
|
511
|
-
|
|
512
|
-
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->
|
|
543
|
+
auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
|
|
544
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
|
|
545
|
+
|
|
546
|
+
*pRetVal = (props->accessibilityState.has_value() &&
|
|
547
|
+
props->accessibilityState->checked != facebook::react::AccessibilityState::None)
|
|
548
|
+
? GetToggleState(props->accessibilityState)
|
|
549
|
+
: winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->getToggleState();
|
|
513
550
|
return S_OK;
|
|
514
551
|
}
|
|
515
552
|
|
|
@@ -562,4 +599,169 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Collapse() {
|
|
|
562
599
|
return S_OK;
|
|
563
600
|
}
|
|
564
601
|
|
|
602
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::get_CanSelectMultiple(BOOL *pRetVal) {
|
|
603
|
+
if (pRetVal == nullptr)
|
|
604
|
+
return E_POINTER;
|
|
605
|
+
auto strongView = m_view.view();
|
|
606
|
+
|
|
607
|
+
if (!strongView)
|
|
608
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
609
|
+
|
|
610
|
+
auto props =
|
|
611
|
+
std::static_pointer_cast<const facebook::react::ViewProps>(winrt::get_self<ComponentView>(strongView)->props());
|
|
612
|
+
|
|
613
|
+
if (props == nullptr)
|
|
614
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
615
|
+
|
|
616
|
+
*pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->multiselectable.has_value())
|
|
617
|
+
? props->accessibilityState->multiselectable.value()
|
|
618
|
+
: false;
|
|
619
|
+
|
|
620
|
+
return S_OK;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::get_IsSelectionRequired(BOOL *pRetVal) {
|
|
624
|
+
if (pRetVal == nullptr)
|
|
625
|
+
return E_POINTER;
|
|
626
|
+
auto strongView = m_view.view();
|
|
627
|
+
|
|
628
|
+
if (!strongView)
|
|
629
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
630
|
+
|
|
631
|
+
auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
|
|
632
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
|
|
633
|
+
|
|
634
|
+
if (props == nullptr)
|
|
635
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
636
|
+
|
|
637
|
+
*pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->required.has_value())
|
|
638
|
+
? props->accessibilityState->required.value()
|
|
639
|
+
: false;
|
|
640
|
+
|
|
641
|
+
return S_OK;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::GetSelection(SAFEARRAY **pRetVal) {
|
|
645
|
+
auto strongView = m_view.view();
|
|
646
|
+
|
|
647
|
+
if (!strongView)
|
|
648
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
649
|
+
|
|
650
|
+
std::vector<int> selectedItems;
|
|
651
|
+
for (size_t i = 0; i < m_selectionItems.size(); i++) {
|
|
652
|
+
auto selectionItem = m_selectionItems.at(i);
|
|
653
|
+
auto provider = selectionItem.as<CompositionDynamicAutomationProvider>();
|
|
654
|
+
BOOL selected;
|
|
655
|
+
auto hr = provider->get_IsSelected(&selected);
|
|
656
|
+
if (hr == S_OK && selected) {
|
|
657
|
+
selectedItems.push_back(int(i));
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
*pRetVal = SafeArrayCreateVector(VT_UNKNOWN, 0, ULONG(selectedItems.size()));
|
|
662
|
+
if (*pRetVal == nullptr)
|
|
663
|
+
return E_OUTOFMEMORY;
|
|
664
|
+
|
|
665
|
+
for (size_t i = 0; i < selectedItems.size(); i++) {
|
|
666
|
+
auto pos = static_cast<long>(i);
|
|
667
|
+
SafeArrayPutElement(*pRetVal, &pos, m_selectionItems.at(selectedItems.at(i)).get());
|
|
668
|
+
}
|
|
669
|
+
return S_OK;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
void CompositionDynamicAutomationProvider::AddToSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item) {
|
|
673
|
+
if (std::find(m_selectionItems.begin(), m_selectionItems.end(), item) != m_selectionItems.end()) {
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
m_selectionItems.push_back(item);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
void CompositionDynamicAutomationProvider::RemoveFromSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item) {
|
|
680
|
+
std::erase(m_selectionItems, item);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::AddToSelection() {
|
|
684
|
+
auto strongView = m_view.view();
|
|
685
|
+
|
|
686
|
+
if (!strongView)
|
|
687
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
688
|
+
|
|
689
|
+
DispatchAccessibilityAction(m_view, "addToSelection");
|
|
690
|
+
return S_OK;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::get_IsSelected(BOOL *pRetVal) {
|
|
694
|
+
if (pRetVal == nullptr)
|
|
695
|
+
return E_POINTER;
|
|
696
|
+
auto strongView = m_view.view();
|
|
697
|
+
|
|
698
|
+
if (!strongView)
|
|
699
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
700
|
+
|
|
701
|
+
auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
|
|
702
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
|
|
703
|
+
|
|
704
|
+
if (props == nullptr)
|
|
705
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
706
|
+
|
|
707
|
+
*pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->selected.has_value())
|
|
708
|
+
? props->accessibilityState->selected.value()
|
|
709
|
+
: false;
|
|
710
|
+
|
|
711
|
+
return S_OK;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
IRawElementProviderSimple *findSelectionContainer(winrt::Microsoft::ReactNative::ComponentView current) {
|
|
715
|
+
if (!current)
|
|
716
|
+
return nullptr;
|
|
717
|
+
|
|
718
|
+
auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
|
|
719
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(current)->props());
|
|
720
|
+
if (props->accessibilityState.has_value() && props->accessibilityState->multiselectable.has_value() &&
|
|
721
|
+
props->accessibilityState->required.has_value()) {
|
|
722
|
+
auto uiaProvider =
|
|
723
|
+
current.as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()->EnsureUiaProvider();
|
|
724
|
+
if (uiaProvider != nullptr) {
|
|
725
|
+
auto spProviderSimple = uiaProvider.try_as<IRawElementProviderSimple>();
|
|
726
|
+
if (spProviderSimple != nullptr) {
|
|
727
|
+
spProviderSimple->AddRef();
|
|
728
|
+
return spProviderSimple.get();
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
} else {
|
|
732
|
+
return findSelectionContainer(current.Parent());
|
|
733
|
+
}
|
|
734
|
+
return nullptr;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::get_SelectionContainer(IRawElementProviderSimple **pRetVal) {
|
|
738
|
+
if (pRetVal == nullptr)
|
|
739
|
+
return E_POINTER;
|
|
740
|
+
auto strongView = m_view.view();
|
|
741
|
+
|
|
742
|
+
if (!strongView)
|
|
743
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
744
|
+
|
|
745
|
+
*pRetVal = findSelectionContainer(strongView.Parent());
|
|
746
|
+
return S_OK;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::RemoveFromSelection() {
|
|
750
|
+
auto strongView = m_view.view();
|
|
751
|
+
|
|
752
|
+
if (!strongView)
|
|
753
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
754
|
+
DispatchAccessibilityAction(m_view, "removeFromSelection");
|
|
755
|
+
return S_OK;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
HRESULT __stdcall CompositionDynamicAutomationProvider::Select() {
|
|
759
|
+
auto strongView = m_view.view();
|
|
760
|
+
|
|
761
|
+
if (!strongView)
|
|
762
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
763
|
+
DispatchAccessibilityAction(m_view, "select");
|
|
764
|
+
return S_OK;
|
|
765
|
+
}
|
|
766
|
+
|
|
565
767
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -17,7 +17,9 @@ class CompositionDynamicAutomationProvider : public winrt::implements<
|
|
|
17
17
|
IScrollItemProvider,
|
|
18
18
|
IValueProvider,
|
|
19
19
|
IToggleProvider,
|
|
20
|
-
IExpandCollapseProvider
|
|
20
|
+
IExpandCollapseProvider,
|
|
21
|
+
ISelectionProvider,
|
|
22
|
+
ISelectionItemProvider> {
|
|
21
23
|
public:
|
|
22
24
|
CompositionDynamicAutomationProvider(
|
|
23
25
|
const winrt::Microsoft::ReactNative::Composition::ComponentView &componentView) noexcept;
|
|
@@ -57,8 +59,24 @@ class CompositionDynamicAutomationProvider : public winrt::implements<
|
|
|
57
59
|
virtual HRESULT __stdcall Expand() override;
|
|
58
60
|
virtual HRESULT __stdcall Collapse() override;
|
|
59
61
|
|
|
62
|
+
// inherited via ISelectionProvider
|
|
63
|
+
virtual HRESULT __stdcall get_CanSelectMultiple(BOOL *pRetVal) override;
|
|
64
|
+
virtual HRESULT __stdcall get_IsSelectionRequired(BOOL *pRetVal) override;
|
|
65
|
+
virtual HRESULT __stdcall GetSelection(SAFEARRAY **pRetVal) override;
|
|
66
|
+
|
|
67
|
+
// inherited via ISelectionItemProvider
|
|
68
|
+
virtual HRESULT __stdcall AddToSelection() override;
|
|
69
|
+
virtual HRESULT __stdcall get_IsSelected(BOOL *pRetVal) override;
|
|
70
|
+
virtual HRESULT __stdcall get_SelectionContainer(IRawElementProviderSimple **pRetVal) override;
|
|
71
|
+
virtual HRESULT __stdcall RemoveFromSelection() override;
|
|
72
|
+
virtual HRESULT __stdcall Select() override;
|
|
73
|
+
|
|
74
|
+
void AddToSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item);
|
|
75
|
+
void RemoveFromSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item);
|
|
76
|
+
|
|
60
77
|
private:
|
|
61
78
|
::Microsoft::ReactNative::ReactTaggedView m_view;
|
|
79
|
+
std::vector<winrt::com_ptr<IRawElementProviderSimple>> m_selectionItems;
|
|
62
80
|
};
|
|
63
81
|
|
|
64
82
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -12,15 +12,18 @@
|
|
|
12
12
|
#include <Views/ShadowNodeBase.h>
|
|
13
13
|
#include <windows.h>
|
|
14
14
|
#include <windowsx.h>
|
|
15
|
+
#include <winrt/Windows.UI.Core.h>
|
|
15
16
|
#include <winrt/Windows.UI.Input.h>
|
|
16
17
|
#include "Composition.Input.h"
|
|
17
18
|
#include "CompositionViewComponentView.h"
|
|
18
19
|
#include "ReactNativeIsland.h"
|
|
19
20
|
#include "RootComponentView.h"
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
namespace ABI::Microsoft::UI::Input {
|
|
23
|
+
struct IInputCursor;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#include <Microsoft.UI.Input.InputCursor.Interop.h>
|
|
24
27
|
|
|
25
28
|
namespace Microsoft::ReactNative {
|
|
26
29
|
|
|
@@ -139,8 +142,9 @@ struct CompositionInputKeyboardSource : winrt::implements<
|
|
|
139
142
|
|
|
140
143
|
CompositionEventHandler::CompositionEventHandler(
|
|
141
144
|
const winrt::Microsoft::ReactNative::ReactContext &context,
|
|
142
|
-
const winrt::Microsoft::ReactNative::ReactNativeIsland &reactNativeIsland
|
|
143
|
-
|
|
145
|
+
const winrt::Microsoft::ReactNative::ReactNativeIsland &reactNativeIsland,
|
|
146
|
+
const int fragmentTag)
|
|
147
|
+
: m_fragmentTag(fragmentTag), m_context(context), m_wkRootView(reactNativeIsland) {}
|
|
144
148
|
|
|
145
149
|
void CompositionEventHandler::Initialize() noexcept {
|
|
146
150
|
#ifdef USE_WINUI3
|
|
@@ -327,6 +331,11 @@ CompositionEventHandler::~CompositionEventHandler() {
|
|
|
327
331
|
}
|
|
328
332
|
}
|
|
329
333
|
#endif
|
|
334
|
+
|
|
335
|
+
if (m_hcursorOwned) {
|
|
336
|
+
::DestroyCursor(m_hcursor);
|
|
337
|
+
m_hcursor = nullptr;
|
|
338
|
+
}
|
|
330
339
|
}
|
|
331
340
|
|
|
332
341
|
facebook::react::SurfaceId CompositionEventHandler::SurfaceId() const noexcept {
|
|
@@ -506,6 +515,10 @@ int64_t CompositionEventHandler::SendMessage(HWND hwnd, uint32_t msg, uint64_t w
|
|
|
506
515
|
}
|
|
507
516
|
break;
|
|
508
517
|
}
|
|
518
|
+
case WM_SETCURSOR: {
|
|
519
|
+
UpdateCursor();
|
|
520
|
+
return 1;
|
|
521
|
+
}
|
|
509
522
|
}
|
|
510
523
|
|
|
511
524
|
return 0;
|
|
@@ -752,6 +765,151 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
752
765
|
hoveredViews.emplace_back(ReactTaggedView(componentViewDescriptor.view));
|
|
753
766
|
}
|
|
754
767
|
m_currentlyHoveredViewsPerPointer[pointerId] = std::move(hoveredViews);
|
|
768
|
+
|
|
769
|
+
if (IsMousePointerEvent(event)) {
|
|
770
|
+
UpdateCursor();
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
void CompositionEventHandler::UpdateCursor() noexcept {
|
|
775
|
+
for (auto &taggedView : m_currentlyHoveredViewsPerPointer[MOUSE_POINTER_ID]) {
|
|
776
|
+
if (auto view = taggedView.view()) {
|
|
777
|
+
if (auto viewcomponent =
|
|
778
|
+
view.try_as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()) {
|
|
779
|
+
auto cursorInfo = viewcomponent->cursor();
|
|
780
|
+
if (cursorInfo.first != facebook::react::Cursor::Auto || cursorInfo.second != nullptr) {
|
|
781
|
+
SetCursor(cursorInfo.first, cursorInfo.second);
|
|
782
|
+
return;
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
SetCursor(facebook::react::Cursor::Auto, nullptr);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
void CompositionEventHandler::SetCursor(facebook::react::Cursor cursor, HCURSOR hcur) noexcept {
|
|
792
|
+
if (m_currentCursor == cursor && m_hcursor == hcur)
|
|
793
|
+
return;
|
|
794
|
+
|
|
795
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
796
|
+
if (auto island = strongRootView.Island()) {
|
|
797
|
+
auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
|
|
798
|
+
|
|
799
|
+
if (!hcur) {
|
|
800
|
+
winrt::Windows::UI::Core::CoreCursorType type = winrt::Windows::UI::Core::CoreCursorType::Arrow;
|
|
801
|
+
switch (cursor) {
|
|
802
|
+
case facebook::react::Cursor::Pointer:
|
|
803
|
+
type = winrt::Windows::UI::Core::CoreCursorType::Hand;
|
|
804
|
+
break;
|
|
805
|
+
case facebook::react::Cursor::Help:
|
|
806
|
+
type = winrt::Windows::UI::Core::CoreCursorType::Help;
|
|
807
|
+
break;
|
|
808
|
+
case facebook::react::Cursor::NotAllowed:
|
|
809
|
+
type = winrt::Windows::UI::Core::CoreCursorType::UniversalNo;
|
|
810
|
+
break;
|
|
811
|
+
case facebook::react::Cursor::Wait:
|
|
812
|
+
type = winrt::Windows::UI::Core::CoreCursorType::Wait;
|
|
813
|
+
break;
|
|
814
|
+
case facebook::react::Cursor::Move:
|
|
815
|
+
type = winrt::Windows::UI::Core::CoreCursorType::SizeAll;
|
|
816
|
+
break;
|
|
817
|
+
case facebook::react::Cursor::NESWResize:
|
|
818
|
+
type = winrt::Windows::UI::Core::CoreCursorType::SizeNortheastSouthwest;
|
|
819
|
+
break;
|
|
820
|
+
case facebook::react::Cursor::NSResize:
|
|
821
|
+
type = winrt::Windows::UI::Core::CoreCursorType::SizeNorthSouth;
|
|
822
|
+
break;
|
|
823
|
+
case facebook::react::Cursor::NWSEResize:
|
|
824
|
+
type = winrt::Windows::UI::Core::CoreCursorType::SizeNorthwestSoutheast;
|
|
825
|
+
break;
|
|
826
|
+
case facebook::react::Cursor::EWResize:
|
|
827
|
+
type = winrt::Windows::UI::Core::CoreCursorType::SizeWestEast;
|
|
828
|
+
break;
|
|
829
|
+
case facebook::react::Cursor::Text:
|
|
830
|
+
type = winrt::Windows::UI::Core::CoreCursorType::IBeam;
|
|
831
|
+
break;
|
|
832
|
+
case facebook::react::Cursor::Progress:
|
|
833
|
+
type = winrt::Windows::UI::Core::CoreCursorType::Wait; // IDC_APPSTARTING not mapped to CoreCursor?
|
|
834
|
+
break;
|
|
835
|
+
case facebook::react::Cursor::Crosshair:
|
|
836
|
+
type = winrt::Windows::UI::Core::CoreCursorType::Cross;
|
|
837
|
+
break;
|
|
838
|
+
default:
|
|
839
|
+
break;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
m_inputCursor = winrt::Microsoft::UI::Input::InputCursor::CreateFromCoreCursor(
|
|
843
|
+
winrt::Windows::UI::Core::CoreCursor(type, 0));
|
|
844
|
+
m_hcursor = hcur;
|
|
845
|
+
} else {
|
|
846
|
+
auto cursorInterop = winrt::get_activation_factory<
|
|
847
|
+
winrt::Microsoft::UI::Input::InputCursor,
|
|
848
|
+
ABI::Microsoft::UI::Input::IInputCursorStaticsInterop>();
|
|
849
|
+
winrt::com_ptr<IUnknown> spunk;
|
|
850
|
+
winrt::check_hresult(cursorInterop->CreateFromHCursor(
|
|
851
|
+
hcur, reinterpret_cast<ABI::Microsoft::UI::Input::IInputCursor **>(spunk.put_void())));
|
|
852
|
+
m_hcursor = hcur;
|
|
853
|
+
m_inputCursor = spunk.as<winrt::Microsoft::UI::Input::InputCursor>();
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
pointerSource.Cursor(m_inputCursor);
|
|
857
|
+
} else {
|
|
858
|
+
if (m_hcursorOwned) {
|
|
859
|
+
::DestroyCursor(m_hcursor);
|
|
860
|
+
m_hcursorOwned = false;
|
|
861
|
+
}
|
|
862
|
+
if (hcur == nullptr) {
|
|
863
|
+
const WCHAR *idc = IDC_ARROW;
|
|
864
|
+
switch (cursor) {
|
|
865
|
+
case facebook::react::Cursor::Pointer:
|
|
866
|
+
idc = IDC_HAND;
|
|
867
|
+
break;
|
|
868
|
+
case facebook::react::Cursor::Help:
|
|
869
|
+
idc = IDC_HELP;
|
|
870
|
+
break;
|
|
871
|
+
case facebook::react::Cursor::NotAllowed:
|
|
872
|
+
idc = IDC_NO;
|
|
873
|
+
break;
|
|
874
|
+
case facebook::react::Cursor::Wait:
|
|
875
|
+
idc = IDC_WAIT;
|
|
876
|
+
break;
|
|
877
|
+
case facebook::react::Cursor::Move:
|
|
878
|
+
idc = IDC_SIZEALL;
|
|
879
|
+
break;
|
|
880
|
+
case facebook::react::Cursor::NESWResize:
|
|
881
|
+
idc = IDC_SIZENESW;
|
|
882
|
+
break;
|
|
883
|
+
case facebook::react::Cursor::NSResize:
|
|
884
|
+
idc = IDC_SIZENS;
|
|
885
|
+
break;
|
|
886
|
+
case facebook::react::Cursor::NWSEResize:
|
|
887
|
+
idc = IDC_SIZENWSE;
|
|
888
|
+
break;
|
|
889
|
+
case facebook::react::Cursor::EWResize:
|
|
890
|
+
idc = IDC_SIZEWE;
|
|
891
|
+
break;
|
|
892
|
+
case facebook::react::Cursor::Text:
|
|
893
|
+
idc = IDC_IBEAM;
|
|
894
|
+
break;
|
|
895
|
+
case facebook::react::Cursor::Progress:
|
|
896
|
+
idc = IDC_APPSTARTING;
|
|
897
|
+
break;
|
|
898
|
+
case facebook::react::Cursor::Crosshair:
|
|
899
|
+
idc = IDC_CROSS;
|
|
900
|
+
break;
|
|
901
|
+
default:
|
|
902
|
+
break;
|
|
903
|
+
}
|
|
904
|
+
m_hcursor = ::LoadCursor(nullptr, idc);
|
|
905
|
+
m_hcursorOwned = true;
|
|
906
|
+
} else {
|
|
907
|
+
m_hcursor = hcur;
|
|
908
|
+
}
|
|
909
|
+
::SetCursor(m_hcursor);
|
|
910
|
+
}
|
|
911
|
+
m_currentCursor = cursor;
|
|
912
|
+
}
|
|
755
913
|
}
|
|
756
914
|
|
|
757
915
|
void CompositionEventHandler::UpdateActiveTouch(
|
|
@@ -831,7 +989,30 @@ void CompositionEventHandler::getTargetPointerArgs(
|
|
|
831
989
|
ptLocal.y = ptScaled.y - (clientRect.top / strongRootView.ScaleFactor());
|
|
832
990
|
}
|
|
833
991
|
} else {
|
|
834
|
-
|
|
992
|
+
if (m_fragmentTag == -1) {
|
|
993
|
+
tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
// check if the fragment tag exists
|
|
998
|
+
if (!fabricuiManager->GetViewRegistry().findComponentViewWithTag(m_fragmentTag)) {
|
|
999
|
+
return;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
auto fagmentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(m_fragmentTag).view;
|
|
1003
|
+
auto fagmentchildren = fagmentView.Children();
|
|
1004
|
+
|
|
1005
|
+
// call the hitTest with the fargment as the RootComponent
|
|
1006
|
+
for (auto index = fagmentchildren.Size(); index > 0; index--) {
|
|
1007
|
+
auto childView = fagmentchildren.GetAt(index - 1);
|
|
1008
|
+
auto targetTag =
|
|
1009
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(childView)->hitTest(
|
|
1010
|
+
ptScaled, ptLocal);
|
|
1011
|
+
if (targetTag != -1) {
|
|
1012
|
+
tag = targetTag;
|
|
1013
|
+
break;
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
835
1016
|
}
|
|
836
1017
|
}
|
|
837
1018
|
|