react-native-windows 0.72.13 → 0.73.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 +16 -5
- package/Chakra/ChakraHelpers.cpp +1 -1
- package/Chakra/ChakraUtils.cpp +1 -1
- package/Chakra/ChakraValue.h +1 -1
- package/Common/packages.lock.json +13 -0
- package/Directory.Build.props +6 -2
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1 -10
- package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +1016 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +1 -1
- package/Folly/cgmanifest.json +1 -1
- package/Folly/packages.lock.json +23 -0
- package/Libraries/Animated/Animated.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
- package/Libraries/Animated/NativeAnimatedModule.js +6 -2
- package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
- package/Libraries/Animated/animations/Animation.js +57 -3
- package/Libraries/Animated/animations/DecayAnimation.js +9 -0
- package/Libraries/Animated/animations/SpringAnimation.js +8 -0
- package/Libraries/Animated/animations/TimingAnimation.js +8 -0
- package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
- package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +1 -0
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
- package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
- package/Libraries/Animated/useAnimatedProps.js +9 -10
- package/Libraries/AppState/AppState.d.ts +1 -1
- package/Libraries/AppState/NativeAppState.js +8 -4
- package/Libraries/AppTheme/AppTheme.js +5 -5
- package/Libraries/BatchedBridge/MessageQueue.js +45 -36
- package/Libraries/Blob/Blob.js +6 -2
- package/Libraries/Blob/BlobManager.js +9 -10
- package/Libraries/Blob/BlobRegistry.js +14 -9
- package/Libraries/Blob/File.js +1 -1
- package/Libraries/Blob/FileReader.js +1 -2
- package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
- package/Libraries/Components/Keyboard/KeyboardExt.d.ts +4 -1
- package/Libraries/Components/Keyboard/KeyboardExt.js +3 -0
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +4 -29
- package/Libraries/Components/Keyboard/KeyboardExtProps.js +0 -17
- package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
- package/Libraries/Components/Pressable/Pressable.js +3 -2
- package/Libraries/Components/Pressable/Pressable.windows.js +4 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +7 -1
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
- package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +7 -10
- package/Libraries/Components/ScrollView/ScrollView.js +3 -1
- package/Libraries/Components/ScrollView/ScrollView.windows.js +3 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
- package/Libraries/Components/Switch/Switch.js +1 -0
- package/Libraries/Components/Switch/Switch.windows.js +259 -0
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
- package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
- package/Libraries/Components/TextInput/TextInput.js +62 -10
- package/Libraries/Components/TextInput/TextInput.windows.js +100 -14
- package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +9 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
- package/Libraries/Components/View/View.js +46 -32
- package/Libraries/Components/View/View.windows.js +23 -7
- package/Libraries/Components/View/ViewAccessibility.d.ts +27 -1
- package/Libraries/Components/View/ViewAccessibility.windows.js +3 -0
- package/Libraries/Components/View/ViewNativeComponent.js +1 -0
- package/Libraries/Components/View/ViewPropTypes.d.ts +104 -1
- package/Libraries/Components/View/ViewPropTypes.js +18 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +33 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
- package/Libraries/Core/ExceptionsManager.js +16 -7
- package/Libraries/Core/ExtendedError.js +12 -0
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpIntersectionObserver.js +16 -0
- package/Libraries/Core/setUpMutationObserver.js +16 -0
- package/Libraries/Core/setUpPerformance.js +6 -13
- package/Libraries/Core/setUpPerformanceObserver.js +16 -0
- package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
- package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
- package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
- package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
- package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
- package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
- package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
- package/Libraries/Image/Image.android.js +8 -2
- package/Libraries/Image/Image.d.ts +1 -1
- package/Libraries/Image/Image.ios.js +4 -1
- package/Libraries/Image/Image.windows.js +6 -3
- package/Libraries/Image/ImageBackground.js +3 -0
- package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
- package/Libraries/Inspector/NetworkOverlay.js +2 -2
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
- package/Libraries/Interaction/PanResponder.js +1 -4
- package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
- package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
- package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -1
- package/Libraries/Lists/FlatList.js +15 -5
- package/Libraries/Lists/SectionList.js +4 -0
- package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
- package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
- package/Libraries/MutationObserver/MutationObserver.js +184 -0
- package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
- package/Libraries/MutationObserver/MutationRecord.js +82 -0
- package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
- package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +34 -4
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -5
- package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
- package/Libraries/Network/RCTNetworking.android.js +2 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
- package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +2 -2
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
- package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
- package/Libraries/Pressability/Pressability.js +28 -3
- package/Libraries/Pressability/Pressability.windows.js +30 -5
- package/Libraries/ReactNative/AppContainer.js +2 -3
- package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
- package/Libraries/ReactNative/AppRegistry.js +66 -53
- package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
- package/Libraries/ReactNative/FabricUIManager.js +143 -34
- package/Libraries/ReactNative/I18nManager.js +5 -11
- package/Libraries/ReactNative/NativeI18nManager.js +7 -5
- package/Libraries/ReactNative/PaperUIManager.windows.js +2 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
- package/Libraries/ReactNative/UIManager.js +8 -0
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
- package/Libraries/Renderer/shims/ReactFabric.js +5 -6
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
- package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
- package/Libraries/Share/Share.d.ts +3 -9
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
- package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +10 -6
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -0
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
- package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
- package/Libraries/StyleSheet/flattenStyle.js +4 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
- package/Libraries/StyleSheet/processColor.js +1 -2
- package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
- package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
- package/Libraries/Text/Text.d.ts +5 -5
- package/Libraries/Text/Text.js +17 -10
- package/Libraries/Text/Text.windows.js +53 -20
- package/Libraries/Text/TextProps.windows.js +275 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
- package/Libraries/Types/CoreEventTypes.d.ts +5 -2
- package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
- package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
- package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
- package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
- package/Libraries/Utilities/Platform.android.js +12 -8
- package/Libraries/Utilities/Platform.d.ts +1 -0
- package/Libraries/Utilities/Platform.flow.js +84 -0
- package/Libraries/Utilities/Platform.flow.windows.js +111 -0
- package/Libraries/Utilities/Platform.ios.js +12 -8
- package/Libraries/Utilities/Platform.windows.js +12 -8
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +63 -32
- package/Libraries/Utilities/useColorScheme.js +7 -8
- package/Libraries/WebPerformance/MemoryInfo.js +1 -1
- package/Libraries/WebPerformance/NativePerformance.js +3 -8
- package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
- package/Libraries/WebPerformance/Performance.js +42 -15
- package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
- package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
- package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
- package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
- package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
- package/Libraries/__tests__/ViewWindows-test.js +3 -3
- package/Libraries/platform-types.d.ts +6 -2
- package/Libraries/promiseRejectionTrackingOptions.js +1 -3
- package/Libraries/vendor/emitter/EventEmitter.js +20 -18
- package/Microsoft.ReactNative/Composition.Input.idl +103 -0
- package/Microsoft.ReactNative/CompositionContext.idl +31 -8
- package/Microsoft.ReactNative/CompositionRootView.idl +8 -4
- package/Microsoft.ReactNative/CompositionSwitcher.idl +28 -17
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +15 -28
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +7 -10
- package/Microsoft.ReactNative/Fabric/ComponentView.h +42 -4
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +57 -4
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +22 -1
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +137 -0
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +59 -0
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +8 -2
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +575 -0
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +170 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +890 -226
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +38 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +79 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +130 -27
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +6 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +382 -228
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +35 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +46 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +5 -21
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +232 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +36 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +51 -14
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +15 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +123 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +333 -137
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +52 -8
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +32 -26
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -3
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +183 -175
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +7 -4
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +101 -2
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +46 -2
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +36 -9
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +8 -2
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +247 -42
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +25 -8
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +78 -50
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +12 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +26 -28
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +429 -89
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +24 -3
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +1 -17
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +74 -3
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +53 -59
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -2
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +5 -4
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -1
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +1 -1
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +3 -4
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformTouch.h +10 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +59 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +31 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +69 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +25 -2
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +23 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/KeyEvent.h +113 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +75 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +18 -21
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +158 -7
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +15 -17
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -1
- package/Microsoft.ReactNative/GlyphViewManager.cpp +1 -1
- package/Microsoft.ReactNative/IJSValueReader.idl +2 -2
- package/Microsoft.ReactNative/IJSValueWriter.idl +2 -2
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +23 -1
- package/Microsoft.ReactNative/IReactContext.cpp +1 -1
- package/Microsoft.ReactNative/IReactNotificationService.cpp +4 -3
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -4
- package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +1 -1
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
- package/Microsoft.ReactNative/Modules/AppStateModule.cpp +1 -1
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
- package/Microsoft.ReactNative/Modules/AppearanceModule.h +1 -1
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +4 -2
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
- package/Microsoft.ReactNative/Modules/I18nManagerModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -15
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +10 -6
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +4 -1
- package/Microsoft.ReactNative/QuirkSettings.idl +1 -1
- package/Microsoft.ReactNative/ReactApplication.cpp +13 -11
- package/Microsoft.ReactNative/ReactApplication.h +4 -4
- package/Microsoft.ReactNative/ReactCoreInjection.h +6 -5
- package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +2 -2
- package/Microsoft.ReactNative/ReactHost/MsoUtils.cpp +1 -1
- package/Microsoft.ReactNative/ReactHost/React.h +3 -6
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -16
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +8 -16
- package/Microsoft.ReactNative/ReactInstanceSettings.cpp +6 -5
- package/Microsoft.ReactNative/ReactInstanceSettings.h +7 -7
- package/Microsoft.ReactNative/ReactNativeHost.h +4 -4
- package/Microsoft.ReactNative/ReactRootView.cpp +5 -4
- package/Microsoft.ReactNative/ReactRootView.h +2 -2
- package/Microsoft.ReactNative/ReactSupport.h +1 -1
- package/Microsoft.ReactNative/RedBox.cpp +1 -1
- package/Microsoft.ReactNative/RedBoxHandler.idl +1 -1
- package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +1 -1
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +49 -21
- package/Microsoft.ReactNative/Utils/ValueUtils.h +2 -1
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +31 -59
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +3 -4
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +15 -46
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +5 -13
- package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +4 -4
- package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +2 -8
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +127 -86
- package/Microsoft.ReactNative/Views/ICompositionRootView.h +1 -1
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +2 -2
- package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +1 -1
- package/Microsoft.ReactNative/Views/SIPEventHandler.cpp +5 -5
- package/Microsoft.ReactNative/Views/SIPEventHandler.h +1 -1
- package/Microsoft.ReactNative/Views/ShadowNodeBase.h +8 -5
- package/Microsoft.ReactNative/Views/SwitchViewManager.cpp +2 -2
- package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.cpp +1 -1
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +32 -14
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +14 -2
- package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
- package/Microsoft.ReactNative/Views/ViewPanel.cpp +20 -219
- package/Microsoft.ReactNative/Views/ViewPanel.h +0 -30
- package/Microsoft.ReactNative/Views/ViewViewManager.cpp +17 -158
- package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +9 -12
- package/Microsoft.ReactNative/Views/cppwinrt/ViewPanel.idl +1 -9
- package/Microsoft.ReactNative/XamlHelper.cpp +1 -1
- package/Microsoft.ReactNative/XamlHelper.h +1 -1
- package/Microsoft.ReactNative/packages.lock.json +128 -0
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.cpp +2 -2
- package/Microsoft.ReactNative.Cxx/JSValue.h +2 -2
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +0 -1
- package/Microsoft.ReactNative.Cxx/NativeModules.h +4 -4
- package/Microsoft.ReactNative.Cxx/ReactHandleHelper.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +2 -2
- package/Microsoft.ReactNative.Cxx/ReactNotificationService.h +10 -9
- package/Microsoft.ReactNative.Cxx/ReactPropertyBag.h +13 -12
- package/Microsoft.ReactNative.Managed/JSValueReaderGenerator.cs +5 -5
- package/Microsoft.ReactNative.Managed/JSValueWriterGenerator.cs +5 -5
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +8 -2
- package/Microsoft.ReactNative.Managed/ReactPackageBuilderExtensions.cs +1 -1
- package/Microsoft.ReactNative.Managed/ReflectionReactPackageProvider.cs +1 -1
- package/Microsoft.ReactNative.Managed/packages.lock.json +9 -9
- package/Microsoft.ReactNative.Managed.CodeGen/CodeAnalyzer.cs +2 -0
- package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.Module.cs +4 -2
- package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.ViewManager.cs +1 -1
- package/Microsoft.ReactNative.Managed.CodeGen/DiagnosticDescriptors.cs +1 -1
- package/Microsoft.ReactNative.Managed.CodeGen/packages.lock.json +3197 -0
- package/Mso/compilerAdapters/compilerFeatures.h +1 -1
- package/Mso/compilerAdapters/functionDecorations.h +6 -6
- package/Mso/debugAssertApi/debugAssertDetails.h +1 -1
- package/Mso/dispatchQueue/dispatchQueue.h +3 -3
- package/Mso/motifCpp/motifCppTest.h +1 -1
- package/Mso/motifCpp/testCheck.h +1 -1
- package/Mso/oacr/oacr.h +1 -1
- package/Mso/smartPtr/smartPointerBase.h +1 -1
- package/Mso/src/dispatchQueue/looperScheduler.cpp +2 -2
- package/Mso/src/dispatchQueue/queueService.cpp +1 -1
- package/Mso/src/dispatchQueue/taskQueue.h +1 -1
- package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +2 -2
- package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +122 -45
- package/Mso/src/eventWaitHandle/eventWaitHandleImpl_win.cpp +2 -2
- package/Mso/src/future/futureImpl.cpp +5 -5
- package/Mso/src/future/futureImpl.h +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.Common.props +3 -0
- package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.Common.props → Microsoft.ReactNative.Composition.Common.props} +2 -2
- package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.CSharpApp.props → Microsoft.ReactNative.Composition.CppApp.props} +7 -10
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +19 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/HybridCRT.props +34 -0
- package/PropertySheets/JSEngine.props +1 -2
- package/PropertySheets/React.Cpp.props +0 -1
- package/PropertySheets/Warnings.props +1 -1
- package/PropertySheets/WinUI.props +1 -1
- package/ReactCommon/ReactCommon.vcxproj +15 -9
- package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +32 -5
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +20 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +1038 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +228 -38
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +895 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +543 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +1509 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +67 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +93 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +88 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +606 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +344 -0
- package/ReactCommon/Yoga.cpp +497 -3895
- package/ReactCommon/packages.lock.json +30 -0
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +22 -0
- package/Scripts/OfficeReact.Win32.nuspec +1 -0
- package/Scripts/rnw-dependencies.ps1 +79 -26
- package/Shared/BaseScriptStoreImpl.cpp +42 -13
- package/Shared/BaseScriptStoreImpl.h +1 -1
- package/Shared/Composition/AutoDraw.h +36 -0
- package/Shared/CxxMessageQueue.cpp +1 -1
- package/Shared/DevSettings.h +3 -0
- package/Shared/DevSupportManager.h +1 -1
- package/Shared/Hasher.cpp +64 -0
- package/Shared/Hasher.h +24 -0
- package/Shared/HermesRuntimeHolder.cpp +6 -6
- package/Shared/IDevSupportManager.h +1 -1
- package/Shared/JSI/ChakraApi.cpp +1 -1
- package/Shared/JSI/ChakraRuntime.cpp +10 -10
- package/Shared/JSI/ChakraRuntime.h +6 -6
- package/Shared/JSI/V8RuntimeHolder.cpp +1 -1
- package/Shared/Modules/IRequestBodyHandler.h +1 -1
- package/Shared/Modules/IUriHandler.h +1 -1
- package/Shared/Modules/PlatformConstantsModule.cpp +1 -1
- package/Shared/Modules/WebSocketModule.cpp +1 -1
- package/Shared/Networking/DefaultBlobResource.cpp +2 -2
- package/Shared/Networking/OriginPolicyHttpFilter.cpp +22 -16
- package/Shared/Networking/OriginPolicyHttpFilter.h +12 -11
- package/Shared/OInstance.cpp +9 -23
- package/Shared/OInstance.h +1 -1
- package/Shared/PackagerConnection.h +1 -1
- package/Shared/SafeLoadLibrary.cpp +8 -44
- package/Shared/SafeLoadLibrary.h +1 -5
- package/Shared/Shared.vcxitems +50 -20
- package/Shared/Shared.vcxitems.filters +26 -17
- package/Shared/Threading/BatchingQueueThread.cpp +5 -5
- package/Shared/Threading/BatchingQueueThread.h +4 -4
- package/Shared/TurboModuleManager.cpp +1 -1
- package/Shared/Utils.cpp +1 -1
- package/Shared/tracing/fbsystrace.h +1 -1
- package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
- package/codegen/NativeAppStateSpec.g.h +11 -21
- package/codegen/NativeDeviceInfoSpec.g.h +4 -14
- package/codegen/NativeI18nManagerSpec.g.h +6 -16
- package/codegen/NativeIntersectionObserverSpec.g.h +96 -0
- package/codegen/NativeMutationObserverSpec.g.h +90 -0
- package/codegen/NativePerformanceObserverSpec.g.h +19 -13
- package/codegen/NativePerformanceSpec.g.h +6 -23
- package/codegen/NativePlatformConstantsAndroidSpec.g.h +22 -30
- package/codegen/NativePlatformConstantsIOSSpec.g.h +17 -25
- package/codegen/NativePlatformConstantsWinSpec.g.h +14 -22
- package/codegen/NativeSampleTurboModuleSpec.g.h +36 -0
- package/codegen/NativeSourceCodeSpec.g.h +3 -13
- package/codegen/react/components/rnwcore/EventEmitters.cpp +85 -58
- package/codegen/react/components/rnwcore/EventEmitters.h +17 -35
- package/codegen/react/components/rnwcore/Props.h +16 -17
- package/codegen/rnwcoreJSI-generated.cpp +1462 -319
- package/codegen/rnwcoreJSI.h +1609 -462
- package/fmt/packages.lock.json +13 -0
- package/index.windows.js +3 -3
- package/{Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
- package/jest/__tests__/setup-test.js +18 -0
- package/jest/mockModal.js +6 -4
- package/jest/setup.js +61 -30
- package/just-task.js +1 -0
- package/package.json +37 -42
- package/template/cs-app/proj/MyApp.csproj +0 -1
- package/template/cs-lib/proj/MyLib.csproj +0 -1
- package/templates/.clang-format +4 -0
- package/templates/cpp-app/metro.config.js +51 -0
- package/templates/cpp-app/template.config.js +119 -0
- package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
- package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
- package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
- package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
- package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
- package/templates/cpp-app/windows/MyApp/pch.h +35 -0
- package/templates/cpp-app/windows/MyApp/resource.h +18 -0
- package/templates/cpp-app/windows/MyApp/small.ico +0 -0
- package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
- package/{template/cs-app-WinAppSDK/MyApp → templates/cpp-app/windows/MyApp.Package}/Package.appxmanifest +9 -8
- package/templates/cpp-app/windows/MyApp.sln +176 -0
- package/templates/cpp-app/windows/_gitignore +41 -0
- package/templates/old/generateWrapper.js +67 -0
- package/templates/old/uwp-cpp-app/template.config.js +15 -0
- package/templates/old/uwp-cpp-lib/template.config.js +15 -0
- package/templates/old/uwp-cs-app/template.config.js +15 -0
- package/templates/old/uwp-cs-lib/template.config.js +15 -0
- package/types/experimental.d.ts +44 -0
- package/types/index.d.ts +2 -1
- package/types/modules/Devtools.d.ts +1 -0
- package/types/modules/globals.d.ts +16 -1
- package/Libraries/Components/View/ViewWindows.d.ts +0 -19
- package/Libraries/Components/View/ViewWindows.js +0 -22
- package/Libraries/Components/View/ViewWindows.js.map +0 -1
- package/Libraries/Components/View/ViewWindowsProps.d.ts +0 -69
- package/Libraries/Components/View/ViewWindowsProps.js +0 -8
- package/Libraries/Components/View/ViewWindowsProps.js.map +0 -1
- package/Libraries/Utilities/AcessibilityMapping.js +0 -154
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
- package/Libraries/Utilities/useColorScheme.windows.js +0 -26
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +0 -61
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +0 -34
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +0 -42
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharp.PackageReferences.props +0 -11
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +0 -51
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +0 -237
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +0 -59
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +0 -159
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +0 -94
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +0 -465
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +0 -116
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +0 -98
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +0 -326
- package/Scripts/Microsoft.ReactNative.WindowsAppSDK.nuspec +0 -30
- package/Shared/V8JSIRuntimeHolder.cpp +0 -71
- package/Shared/V8JSIRuntimeHolder.h +0 -56
- package/codegen/NativeDevSplitBundleLoaderSpec.g.h +0 -34
- package/template/cs-app-WinAppSDK/MyApp/App.xaml +0 -16
- package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +0 -70
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +0 -14
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +0 -38
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +0 -10
- package/template/cs-app-WinAppSDK/MyApp/app.manifest +0 -15
- package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +0 -24
- package/template/cs-app-WinAppSDK/proj/MyApp.csproj +0 -53
- package/template/cs-app-WinAppSDK/proj/MyApp.sln +0 -43
- package/template/cs-app-WinAppSDK/proj/NuGet_Config +0 -19
- /package/Libraries/Components/DrawerAndroid/{DrawerLayoutAndroid.ios.js → DrawerLayoutAndroid.js} +0 -0
- /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
|
@@ -7,17 +7,24 @@
|
|
|
7
7
|
|
|
8
8
|
#include <Fabric/FabricUIManagerModule.h>
|
|
9
9
|
#include <IReactContext.h>
|
|
10
|
+
#include <React.h>
|
|
10
11
|
#include <Views/DevMenu.h>
|
|
11
12
|
#include <Views/ShadowNodeBase.h>
|
|
12
13
|
#include <windows.h>
|
|
13
14
|
#include <windowsx.h>
|
|
15
|
+
#include <winrt/Windows.UI.Input.h>
|
|
16
|
+
#include "Composition.Input.h"
|
|
14
17
|
#include "CompositionRootView.h"
|
|
15
18
|
#include "CompositionViewComponentView.h"
|
|
16
19
|
#include "RootComponentView.h"
|
|
17
20
|
|
|
21
|
+
#ifdef USE_WINUI3
|
|
22
|
+
#include <winrt/Microsoft.UI.Input.h>
|
|
23
|
+
#endif
|
|
24
|
+
|
|
18
25
|
namespace Microsoft::ReactNative {
|
|
19
26
|
|
|
20
|
-
const PointerId MOUSE_POINTER_ID = 1;
|
|
27
|
+
const PointerId MOUSE_POINTER_ID = 1;
|
|
21
28
|
|
|
22
29
|
bool IsMousePointerEvent(const facebook::react::PointerEvent &pointerEvent) {
|
|
23
30
|
return pointerEvent.pointerId == MOUSE_POINTER_ID;
|
|
@@ -31,6 +38,14 @@ bool IsViewListeningToEvent(IComponentView *view, facebook::react::ViewEvents::O
|
|
|
31
38
|
return false;
|
|
32
39
|
}
|
|
33
40
|
|
|
41
|
+
bool IsViewListeningToEvent(IComponentView *view, facebook::react::WindowsViewEvents::Offset eventType) {
|
|
42
|
+
if (view) {
|
|
43
|
+
auto const &viewProps = *std::static_pointer_cast<facebook::react::ViewProps const>(view->props());
|
|
44
|
+
return viewProps.windowsEvents[eventType];
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
34
49
|
bool IsAnyViewInPathListeningToEvent(
|
|
35
50
|
std::vector<IComponentView *> &path,
|
|
36
51
|
facebook::react::ViewEvents::Offset eventType) {
|
|
@@ -44,7 +59,7 @@ bool IsAnyViewInPathListeningToEvent(
|
|
|
44
59
|
|
|
45
60
|
IComponentView *FindClosestFabricManagedTouchableView(IComponentView *componentView) {
|
|
46
61
|
while (componentView) {
|
|
47
|
-
if (componentView->
|
|
62
|
+
if (componentView->eventEmitter()) {
|
|
48
63
|
return componentView;
|
|
49
64
|
}
|
|
50
65
|
componentView = componentView->parent();
|
|
@@ -72,17 +87,169 @@ facebook::react::SharedEventEmitter EventEmitterForComponent(
|
|
|
72
87
|
return nullptr;
|
|
73
88
|
}
|
|
74
89
|
|
|
75
|
-
|
|
76
|
-
:
|
|
90
|
+
struct CompositionKeyboardSource
|
|
91
|
+
: winrt::implements<CompositionKeyboardSource, winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource> {
|
|
92
|
+
CompositionKeyboardSource(CompositionEventHandler *outer) : m_outer(outer) {}
|
|
93
|
+
|
|
94
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates GetKeyState(winrt::Windows::System::VirtualKey key) noexcept {
|
|
95
|
+
if (!m_outer)
|
|
96
|
+
return winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
|
|
97
|
+
return m_outer->GetKeyState(key);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
void Disconnect() noexcept {
|
|
101
|
+
m_outer = nullptr;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private:
|
|
105
|
+
CompositionEventHandler *m_outer{nullptr};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
#ifdef USE_WINUI3
|
|
109
|
+
struct CompositionInputKeyboardSource : winrt::implements<
|
|
110
|
+
CompositionInputKeyboardSource,
|
|
111
|
+
winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource> {
|
|
112
|
+
CompositionInputKeyboardSource(winrt::Microsoft::UI::Input::InputKeyboardSource source) : m_source(source) {}
|
|
113
|
+
|
|
114
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates GetKeyState(winrt::Windows::System::VirtualKey key) noexcept {
|
|
115
|
+
if (!m_source)
|
|
116
|
+
return winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
|
|
117
|
+
|
|
118
|
+
static_assert(
|
|
119
|
+
static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
|
|
120
|
+
winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
|
|
121
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates::Down);
|
|
122
|
+
static_assert(
|
|
123
|
+
static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
|
|
124
|
+
winrt::Microsoft::UI::Input::VirtualKeyStates::Locked) ==
|
|
125
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates::Locked);
|
|
126
|
+
static_assert(
|
|
127
|
+
static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
|
|
128
|
+
winrt::Microsoft::UI::Input::VirtualKeyStates::None) ==
|
|
129
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
|
|
130
|
+
return static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(m_source.GetKeyState(key));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
void Disconnect() noexcept {
|
|
134
|
+
m_source = nullptr;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private:
|
|
138
|
+
winrt::Microsoft::UI::Input::InputKeyboardSource m_source{nullptr};
|
|
139
|
+
};
|
|
140
|
+
#endif
|
|
77
141
|
|
|
78
142
|
CompositionEventHandler::CompositionEventHandler(
|
|
79
143
|
const winrt::Microsoft::ReactNative::ReactContext &context,
|
|
80
144
|
const winrt::Microsoft::ReactNative::CompositionRootView &CompositionRootView)
|
|
81
|
-
:
|
|
145
|
+
: m_context(context) {
|
|
82
146
|
m_compRootView = CompositionRootView;
|
|
147
|
+
|
|
148
|
+
#ifdef USE_WINUI3
|
|
149
|
+
if (auto island = m_compRootView.Island()) {
|
|
150
|
+
auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
|
|
151
|
+
|
|
152
|
+
m_pointerPressedToken =
|
|
153
|
+
pointerSource.PointerPressed([this](
|
|
154
|
+
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
155
|
+
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
156
|
+
if (SurfaceId() == -1)
|
|
157
|
+
return;
|
|
158
|
+
|
|
159
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
160
|
+
args.CurrentPoint());
|
|
161
|
+
onPointerPressed(pp, args.KeyModifiers());
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
m_pointerReleasedToken =
|
|
165
|
+
pointerSource.PointerReleased([this](
|
|
166
|
+
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
167
|
+
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
168
|
+
if (SurfaceId() == -1)
|
|
169
|
+
return;
|
|
170
|
+
|
|
171
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
172
|
+
args.CurrentPoint());
|
|
173
|
+
onPointerReleased(pp, args.KeyModifiers());
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
m_pointerMovedToken = pointerSource.PointerMoved([this](
|
|
177
|
+
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
178
|
+
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
179
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
180
|
+
args.CurrentPoint());
|
|
181
|
+
onPointerMoved(pp, args.KeyModifiers());
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
m_pointerWheelChangedToken =
|
|
185
|
+
pointerSource.PointerWheelChanged([this](
|
|
186
|
+
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
187
|
+
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
188
|
+
if (SurfaceId() == -1)
|
|
189
|
+
return;
|
|
190
|
+
|
|
191
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
192
|
+
args.CurrentPoint());
|
|
193
|
+
onPointerWheelChanged(pp, args.KeyModifiers());
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
|
|
197
|
+
|
|
198
|
+
m_keyDownToken = keyboardSource.KeyDown([this](
|
|
199
|
+
winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
|
|
200
|
+
winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
|
|
201
|
+
if (SurfaceId() == -1)
|
|
202
|
+
return;
|
|
203
|
+
|
|
204
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
205
|
+
auto keyArgs = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
206
|
+
focusedComponent
|
|
207
|
+
? focusedComponent->tag()
|
|
208
|
+
: static_cast<facebook::react::Tag>(
|
|
209
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
|
|
210
|
+
->GetTag()),
|
|
211
|
+
args);
|
|
212
|
+
auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
|
|
213
|
+
onKeyDown(keyboardSource, keyArgs);
|
|
214
|
+
winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
m_keyUpToken = keyboardSource.KeyUp([this](
|
|
218
|
+
winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
|
|
219
|
+
winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
|
|
220
|
+
if (SurfaceId() == -1)
|
|
221
|
+
return;
|
|
222
|
+
|
|
223
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
224
|
+
auto keyArgs = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
225
|
+
focusedComponent
|
|
226
|
+
? focusedComponent->tag()
|
|
227
|
+
: static_cast<facebook::react::Tag>(
|
|
228
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
|
|
229
|
+
->GetTag()),
|
|
230
|
+
args);
|
|
231
|
+
auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
|
|
232
|
+
onKeyUp(keyboardSource, keyArgs);
|
|
233
|
+
winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
#endif
|
|
83
237
|
};
|
|
84
238
|
|
|
85
|
-
CompositionEventHandler::~CompositionEventHandler() {
|
|
239
|
+
CompositionEventHandler::~CompositionEventHandler() {
|
|
240
|
+
#ifdef USE_WINUI3
|
|
241
|
+
if (auto island = m_compRootView.Island()) {
|
|
242
|
+
auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
|
|
243
|
+
pointerSource.PointerPressed(m_pointerPressedToken);
|
|
244
|
+
pointerSource.PointerReleased(m_pointerReleasedToken);
|
|
245
|
+
pointerSource.PointerMoved(m_pointerMovedToken);
|
|
246
|
+
pointerSource.PointerWheelChanged(m_pointerWheelChangedToken);
|
|
247
|
+
auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
|
|
248
|
+
keyboardSource.KeyDown(m_keyDownToken);
|
|
249
|
+
keyboardSource.KeyUp(m_keyUpToken);
|
|
250
|
+
}
|
|
251
|
+
#endif
|
|
252
|
+
}
|
|
86
253
|
|
|
87
254
|
facebook::react::SurfaceId CompositionEventHandler::SurfaceId() noexcept {
|
|
88
255
|
return static_cast<facebook::react::SurfaceId>(
|
|
@@ -96,66 +263,98 @@ facebook::react::SurfaceId CompositionEventHandler::SurfaceId() noexcept {
|
|
|
96
263
|
return static_cast<::Microsoft::ReactNative::RootComponentView &>(*(rootComponentViewDescriptor.view));
|
|
97
264
|
}
|
|
98
265
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
103
|
-
|
|
104
|
-
|
|
266
|
+
void CompositionEventHandler::onPointerWheelChanged(
|
|
267
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
268
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
|
|
269
|
+
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
270
|
+
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
271
|
+
auto position = pointerPoint.Position();
|
|
105
272
|
|
|
273
|
+
facebook::react::Point ptLocal;
|
|
274
|
+
facebook::react::Point ptScaled = {static_cast<float>(position.X), static_cast<float>(position.Y)};
|
|
106
275
|
|
|
107
|
-
|
|
276
|
+
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
108
277
|
|
|
278
|
+
if (tag == -1)
|
|
279
|
+
return;
|
|
109
280
|
|
|
110
|
-
|
|
111
|
-
|
|
281
|
+
auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
|
|
282
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
283
|
+
tag, pointerPoint, keyModifiers);
|
|
112
284
|
|
|
113
|
-
|
|
114
|
-
auto hitComponentViewDescriptor = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag);
|
|
115
|
-
static_cast<CompositionBaseComponentView &>(*hitComponentViewDescriptor.view).OnPointerDown(pp);
|
|
285
|
+
std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->onPointerWheelChanged(args);
|
|
116
286
|
}
|
|
287
|
+
}
|
|
117
288
|
|
|
118
|
-
|
|
119
|
-
|
|
289
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates CompositionEventHandler::GetKeyState(
|
|
290
|
+
winrt::Windows::System::VirtualKey key) noexcept {
|
|
291
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates coreKeyState = winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
|
|
292
|
+
SHORT keyState = ::GetKeyState(static_cast<int>(key));
|
|
293
|
+
if (keyState & 0x01) {
|
|
294
|
+
coreKeyState = winrt::Windows::UI::Core::CoreVirtualKeyStates::Locked;
|
|
295
|
+
}
|
|
296
|
+
if (keyState & 0x8000) {
|
|
297
|
+
coreKeyState = static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
|
|
298
|
+
static_cast<int>(coreKeyState) | static_cast<int>(winrt::Windows::UI::Core::CoreVirtualKeyStates::Down));
|
|
120
299
|
}
|
|
121
300
|
|
|
301
|
+
return coreKeyState;
|
|
122
302
|
}
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
void CompositionEventHandler::ScrollWheel(facebook::react::Point pt, uint32_t delta) {
|
|
126
|
-
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
127
|
-
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
128
|
-
facebook::react::Point ptLocal;
|
|
129
303
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
304
|
+
winrt::Windows::System::VirtualKeyModifiers GetKeyModifiers(uint64_t wParam) {
|
|
305
|
+
auto keyModifiers = winrt::Windows::System::VirtualKeyModifiers::None;
|
|
306
|
+
if ((wParam & MK_CONTROL) == MK_CONTROL) {
|
|
307
|
+
keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Control;
|
|
308
|
+
}
|
|
309
|
+
if ((wParam & MK_SHIFT) == MK_SHIFT) {
|
|
310
|
+
keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Shift;
|
|
311
|
+
}
|
|
312
|
+
if (::GetKeyState(VK_MENU) < 0) {
|
|
313
|
+
keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Menu;
|
|
134
314
|
}
|
|
315
|
+
if (::GetKeyState(VK_LWIN) < 0 || ::GetKeyState(VK_RWIN) < 0) {
|
|
316
|
+
keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Windows;
|
|
317
|
+
}
|
|
318
|
+
return keyModifiers;
|
|
135
319
|
}
|
|
136
320
|
|
|
137
321
|
int64_t CompositionEventHandler::SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
|
|
138
322
|
switch (msg) {
|
|
139
323
|
case WM_LBUTTONDOWN: {
|
|
140
|
-
|
|
324
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
325
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
326
|
+
onPointerPressed(pp, GetKeyModifiers(wParam));
|
|
141
327
|
return 0;
|
|
142
328
|
}
|
|
143
329
|
case WM_POINTERDOWN: {
|
|
144
|
-
|
|
330
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
331
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
332
|
+
onPointerPressed(pp, GetKeyModifiers(wParam));
|
|
145
333
|
return 0;
|
|
146
334
|
}
|
|
147
335
|
case WM_LBUTTONUP: {
|
|
148
|
-
|
|
336
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
337
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
338
|
+
onPointerReleased(pp, GetKeyModifiers(wParam));
|
|
149
339
|
return 0;
|
|
150
340
|
}
|
|
151
341
|
case WM_POINTERUP: {
|
|
152
|
-
|
|
342
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
343
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
344
|
+
onPointerReleased(pp, GetKeyModifiers(wParam));
|
|
153
345
|
return 0;
|
|
154
346
|
}
|
|
155
347
|
case WM_MOUSEMOVE: {
|
|
156
|
-
|
|
348
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
349
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
350
|
+
onPointerMoved(pp, GetKeyModifiers(wParam));
|
|
157
351
|
return 0;
|
|
158
352
|
}
|
|
353
|
+
case WM_MOUSEWHEEL: {
|
|
354
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
355
|
+
msg, wParam, lParam, m_compRootView.ScaleFactor());
|
|
356
|
+
onPointerWheelChanged(pp, GetKeyModifiers(wParam));
|
|
357
|
+
}
|
|
159
358
|
case WM_CHAR:
|
|
160
359
|
case WM_SYSCHAR: {
|
|
161
360
|
// TODO full bubbling of events
|
|
@@ -164,53 +363,82 @@ int64_t CompositionEventHandler::SendMessage(uint32_t msg, uint64_t wParam, int6
|
|
|
164
363
|
if (result)
|
|
165
364
|
return result;
|
|
166
365
|
}
|
|
366
|
+
break;
|
|
167
367
|
}
|
|
168
368
|
case WM_KEYDOWN:
|
|
169
369
|
case WM_KEYUP:
|
|
170
370
|
case WM_SYSKEYDOWN:
|
|
171
371
|
case WM_SYSKEYUP: {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
372
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
373
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
374
|
+
focusedComponent
|
|
375
|
+
? focusedComponent->tag()
|
|
376
|
+
: static_cast<facebook::react::Tag>(
|
|
377
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
|
|
378
|
+
->GetTag()),
|
|
379
|
+
msg,
|
|
380
|
+
wParam,
|
|
381
|
+
lParam);
|
|
382
|
+
auto keyboardSource = winrt::make<CompositionKeyboardSource>(this);
|
|
383
|
+
if (msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN) {
|
|
384
|
+
onKeyDown(keyboardSource, args);
|
|
385
|
+
} else {
|
|
386
|
+
onKeyUp(keyboardSource, args);
|
|
177
387
|
}
|
|
178
|
-
|
|
179
|
-
BYTE bKeys[256];
|
|
180
|
-
if (GetKeyboardState(bKeys)) {
|
|
181
|
-
bool fShift = false;
|
|
182
|
-
if (bKeys[VK_LSHIFT] & 0x80)
|
|
183
|
-
fShift = true;
|
|
184
|
-
if (bKeys[VK_RSHIFT] & 0x80)
|
|
185
|
-
fShift = true;
|
|
186
|
-
bool fCtrl = false;
|
|
187
|
-
if (bKeys[VK_LCONTROL] & 0x80)
|
|
188
|
-
fCtrl = true;
|
|
189
|
-
if (bKeys[VK_RCONTROL] & 0x80)
|
|
190
|
-
fCtrl = true;
|
|
191
|
-
if (msg == WM_KEYDOWN && wParam == VkKeyScanA('d') && fShift && fCtrl) {
|
|
192
|
-
auto contextSelf = winrt::get_self<React::implementation::ReactContext>(m_context.Handle());
|
|
193
|
-
Microsoft::ReactNative::DevMenuManager::Show(
|
|
194
|
-
Mso::CntPtr<Mso::React::IReactContext>(&contextSelf->GetInner()));
|
|
195
|
-
}
|
|
196
|
-
if (!fCtrl && msg == WM_KEYDOWN && wParam == VK_TAB) {
|
|
197
|
-
if (!RootComponentView().TryMoveFocus(!fShift)) {
|
|
198
|
-
// TODO notify rootview that host should move focus
|
|
199
|
-
}
|
|
200
|
-
return 1;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return 0;
|
|
388
|
+
winrt::get_self<CompositionKeyboardSource>(keyboardSource)->Disconnect();
|
|
204
389
|
}
|
|
205
390
|
}
|
|
206
391
|
|
|
207
392
|
return 0;
|
|
208
393
|
}
|
|
209
394
|
|
|
395
|
+
void CompositionEventHandler::onKeyDown(
|
|
396
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
397
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
398
|
+
if (auto focusedComponent = RootComponentView().GetFocusedComponent()) {
|
|
399
|
+
focusedComponent->onKeyDown(source, args);
|
|
400
|
+
|
|
401
|
+
if (args.Handled())
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) ==
|
|
406
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
|
|
407
|
+
bool fCtrl =
|
|
408
|
+
GetKeyState(winrt::Windows::System::VirtualKey::Control) == winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
|
|
409
|
+
|
|
410
|
+
if (fShift && fCtrl && args.Key() == static_cast<winrt::Windows::System::VirtualKey>(VkKeyScanA('d')) &&
|
|
411
|
+
Mso::React::ReactOptions::UseDeveloperSupport(m_context.Properties().Handle())) {
|
|
412
|
+
auto contextSelf = winrt::get_self<React::implementation::ReactContext>(m_context.Handle());
|
|
413
|
+
Microsoft::ReactNative::DevMenuManager::Show(Mso::CntPtr<Mso::React::IReactContext>(&contextSelf->GetInner()));
|
|
414
|
+
args.Handled(true);
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (!fCtrl && args.Key() == winrt::Windows::System::VirtualKey::Tab) {
|
|
419
|
+
if (RootComponentView().TryMoveFocus(!fShift)) {
|
|
420
|
+
args.Handled(true);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// TODO notify rootview that host should move focus
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
void CompositionEventHandler::onKeyUp(
|
|
428
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
429
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
430
|
+
if (auto focusedComponent = RootComponentView().GetFocusedComponent()) {
|
|
431
|
+
focusedComponent->onKeyUp(source, args);
|
|
432
|
+
|
|
433
|
+
if (args.Handled())
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
210
438
|
std::vector<IComponentView *> GetTouchableViewsInPathToRoot(IComponentView *view) {
|
|
211
439
|
std::vector<IComponentView *> results;
|
|
212
440
|
while (view) {
|
|
213
|
-
if (view->
|
|
441
|
+
if (view->eventEmitter()) {
|
|
214
442
|
results.push_back(view);
|
|
215
443
|
}
|
|
216
444
|
view = view->parent();
|
|
@@ -220,15 +448,17 @@ std::vector<IComponentView *> GetTouchableViewsInPathToRoot(IComponentView *view
|
|
|
220
448
|
|
|
221
449
|
/**
|
|
222
450
|
* Private method which is used for tracking the location of pointer events to manage the entering/leaving events.
|
|
223
|
-
* The primary idea is that a pointer's presence & movement is
|
|
451
|
+
* The primary idea is that a pointer's presence & movement is dictated by a variety of underlying events such as down,
|
|
224
452
|
* move, and up — and they should all be treated the same when it comes to tracking the entering & leaving of pointers
|
|
225
|
-
* to views. This method accomplishes that by
|
|
453
|
+
* to views. This method accomplishes that by receiving the pointer event, the target view (can be null in cases when
|
|
226
454
|
* the event indicates that the pointer has left the screen entirely), and a block/callback where the underlying event
|
|
227
455
|
* should be fired.
|
|
228
456
|
*/
|
|
229
457
|
void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
230
458
|
facebook::react::PointerEvent &event,
|
|
231
459
|
IComponentView *targetView,
|
|
460
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
461
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers,
|
|
232
462
|
std::function<void(std::vector<IComponentView *> &)> handler) {
|
|
233
463
|
int pointerId = event.pointerId;
|
|
234
464
|
// CGPoint clientLocation = CGPointMake(event.clientPoint.x, event.clientPoint.y);
|
|
@@ -253,7 +483,7 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
253
483
|
if (targetView != nullptr && previousTargetTag != targetView->tag()) {
|
|
254
484
|
bool shouldEmitOverEvent =
|
|
255
485
|
IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerOver);
|
|
256
|
-
|
|
486
|
+
const auto eventEmitter = targetView->eventEmitterAtPoint(event.offsetPoint);
|
|
257
487
|
if (shouldEmitOverEvent && eventEmitter != nullptr) {
|
|
258
488
|
eventEmitter->onPointerOver(event);
|
|
259
489
|
}
|
|
@@ -264,9 +494,10 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
264
494
|
// We only want to emit events to JS if there is a view that is currently listening to said event
|
|
265
495
|
// so we only send those event to the JS side if the element which has been entered is itself listening,
|
|
266
496
|
// or if one of its parents is listening in case those listeners care about the capturing phase. Adding the ability
|
|
267
|
-
// for native to
|
|
497
|
+
// for native to distinguish between capturing listeners and not could be an optimization to further reduce the
|
|
268
498
|
// number of events we send to JS
|
|
269
499
|
bool hasParentEnterListener = false;
|
|
500
|
+
bool emittedNativeEnteredEvent = false;
|
|
270
501
|
|
|
271
502
|
for (auto itComponentView = eventPathViews.rbegin(); itComponentView != eventPathViews.rend();
|
|
272
503
|
itComponentView++) { // for (RCTReactTaggedView *taggedView in [eventPathViews reverseObjectEnumerator]) {
|
|
@@ -275,18 +506,27 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
275
506
|
bool shouldEmitEvent = componentView != nullptr &&
|
|
276
507
|
(hasParentEnterListener ||
|
|
277
508
|
IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::PointerEnter) ||
|
|
278
|
-
IsViewListeningToEvent(componentView, facebook::react::
|
|
509
|
+
IsViewListeningToEvent(componentView, facebook::react::WindowsViewEvents::Offset::MouseEnter));
|
|
279
510
|
|
|
280
|
-
if (shouldEmitEvent &&
|
|
511
|
+
if ((shouldEmitEvent || !emittedNativeEnteredEvent) &&
|
|
281
512
|
std::find(currentlyHoveredViews.begin(), currentlyHoveredViews.end(), componentView) ==
|
|
282
513
|
currentlyHoveredViews.end()) {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
eventEmitter
|
|
286
|
-
|
|
287
|
-
|
|
514
|
+
if (shouldEmitEvent) {
|
|
515
|
+
const auto eventEmitter = componentView->eventEmitter();
|
|
516
|
+
if (eventEmitter) {
|
|
517
|
+
eventEmitter->onPointerEnter(event);
|
|
518
|
+
if (IsMousePointerEvent(event)) {
|
|
519
|
+
eventEmitter->onMouseEnter(event);
|
|
520
|
+
}
|
|
288
521
|
}
|
|
289
522
|
}
|
|
523
|
+
if (!emittedNativeEnteredEvent) {
|
|
524
|
+
emittedNativeEnteredEvent = true;
|
|
525
|
+
auto args =
|
|
526
|
+
winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
527
|
+
componentView->tag(), pointerPoint, keyModifiers);
|
|
528
|
+
static_cast<CompositionBaseComponentView *>(componentView)->onPointerEntered(args);
|
|
529
|
+
}
|
|
290
530
|
}
|
|
291
531
|
|
|
292
532
|
if (shouldEmitEvent && !hasParentEnterListener) {
|
|
@@ -301,7 +541,7 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
301
541
|
if (previousTargetTag != -1 && previousTargetTag != (targetView ? targetView->tag() : -1)) {
|
|
302
542
|
bool shouldEmitOutEvent =
|
|
303
543
|
IsAnyViewInPathListeningToEvent(currentlyHoveredViews, facebook::react::ViewEvents::Offset::PointerOut);
|
|
304
|
-
|
|
544
|
+
const auto eventEmitter = prevTargetView->eventEmitter();
|
|
305
545
|
if (shouldEmitOutEvent && eventEmitter != nullptr) {
|
|
306
546
|
eventEmitter->onPointerOut(event);
|
|
307
547
|
}
|
|
@@ -309,13 +549,15 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
309
549
|
|
|
310
550
|
// Leaving
|
|
311
551
|
|
|
312
|
-
// pointerleave events need to be
|
|
552
|
+
// pointerleave events need to be emitted from the deepest target to the root but
|
|
313
553
|
// we also need to efficiently keep track of if a view has a parent which is listening to the leave events,
|
|
314
554
|
// so we first iterate from the root to the target, collecting the views which need events fired for, of which
|
|
315
555
|
// we reverse iterate (now from target to root), actually emitting the events.
|
|
316
556
|
std::vector<IComponentView *> viewsToEmitLeaveEventsTo; // NSMutableOrderedSet<UIView *> *viewsToEmitLeaveEventsTo =
|
|
317
557
|
// [NSMutableOrderedSet orderedSet];
|
|
318
558
|
|
|
559
|
+
IComponentView *viewToEmitNativeExitedEvent = nullptr;
|
|
560
|
+
|
|
319
561
|
bool hasParentLeaveListener = false;
|
|
320
562
|
for (auto itComponentView = currentlyHoveredViews.rbegin(); itComponentView != currentlyHoveredViews.rend();
|
|
321
563
|
itComponentView++) { // for (RCTReactTaggedView *taggedView in [currentlyHoveredViews
|
|
@@ -326,11 +568,16 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
326
568
|
bool shouldEmitEvent = componentView != nullptr &&
|
|
327
569
|
(hasParentLeaveListener ||
|
|
328
570
|
IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::PointerLeave) ||
|
|
329
|
-
IsViewListeningToEvent(componentView, facebook::react::
|
|
571
|
+
IsViewListeningToEvent(componentView, facebook::react::WindowsViewEvents::Offset::MouseLeave));
|
|
330
572
|
|
|
331
|
-
if (shouldEmitEvent &&
|
|
573
|
+
if ((shouldEmitEvent || !viewToEmitNativeExitedEvent) &&
|
|
332
574
|
std::find(eventPathViews.begin(), eventPathViews.end(), componentView) == eventPathViews.end()) {
|
|
333
|
-
|
|
575
|
+
if (shouldEmitEvent) {
|
|
576
|
+
viewsToEmitLeaveEventsTo.push_back(componentView);
|
|
577
|
+
}
|
|
578
|
+
if (!viewToEmitNativeExitedEvent) {
|
|
579
|
+
viewToEmitNativeExitedEvent = componentView;
|
|
580
|
+
}
|
|
334
581
|
}
|
|
335
582
|
|
|
336
583
|
if (shouldEmitEvent && !hasParentLeaveListener) {
|
|
@@ -338,11 +585,17 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
338
585
|
}
|
|
339
586
|
}
|
|
340
587
|
|
|
588
|
+
if (viewToEmitNativeExitedEvent) {
|
|
589
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
590
|
+
viewToEmitNativeExitedEvent->tag(), pointerPoint, keyModifiers);
|
|
591
|
+
static_cast<CompositionBaseComponentView *>(viewToEmitNativeExitedEvent)->onPointerExited(args);
|
|
592
|
+
}
|
|
593
|
+
|
|
341
594
|
for (auto itComponentView = viewsToEmitLeaveEventsTo.rbegin(); itComponentView != viewsToEmitLeaveEventsTo.rend();
|
|
342
595
|
itComponentView++) { // for (UIView *componentView in [viewsToEmitLeaveEventsTo reverseObjectEnumerator]) {
|
|
343
596
|
auto componentView = *itComponentView;
|
|
344
597
|
|
|
345
|
-
|
|
598
|
+
const auto eventEmitter = componentView->eventEmitter();
|
|
346
599
|
if (eventEmitter) {
|
|
347
600
|
eventEmitter->onPointerLeave(event);
|
|
348
601
|
if (IsMousePointerEvent(event)) {
|
|
@@ -416,31 +669,40 @@ facebook::react::PointerEvent CreatePointerEventFromIncompleteHoverData(
|
|
|
416
669
|
return pointerEvent;
|
|
417
670
|
}
|
|
418
671
|
|
|
419
|
-
void CompositionEventHandler::
|
|
420
|
-
|
|
672
|
+
void CompositionEventHandler::onPointerMoved(
|
|
673
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
674
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
|
|
675
|
+
if (SurfaceId() == -1)
|
|
676
|
+
return;
|
|
677
|
+
|
|
678
|
+
int pointerId = pointerPoint.PointerId();
|
|
421
679
|
|
|
422
|
-
auto
|
|
423
|
-
auto y = GET_Y_LPARAM(lParam);
|
|
680
|
+
auto position = pointerPoint.Position();
|
|
424
681
|
|
|
425
682
|
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
426
683
|
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
427
684
|
facebook::react::Point ptLocal;
|
|
428
685
|
|
|
429
|
-
facebook::react::Point ptScaled = {
|
|
430
|
-
static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
|
|
686
|
+
facebook::react::Point ptScaled = {position.X, position.Y};
|
|
431
687
|
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
432
688
|
|
|
433
689
|
if (tag == -1)
|
|
434
690
|
return;
|
|
435
691
|
|
|
692
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
693
|
+
tag, pointerPoint, keyModifiers);
|
|
694
|
+
IComponentView *targetComponentView =
|
|
695
|
+
fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
|
|
696
|
+
|
|
697
|
+
static_cast<CompositionBaseComponentView *>(targetComponentView)->onPointerMoved(args);
|
|
698
|
+
|
|
436
699
|
auto targetView = FindClosestFabricManagedTouchableView(
|
|
437
700
|
fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get());
|
|
438
701
|
|
|
439
702
|
facebook::react::PointerEvent pointerEvent = CreatePointerEventFromIncompleteHoverData(ptScaled, ptLocal);
|
|
440
703
|
|
|
441
704
|
auto handler = [targetView, &pointerEvent](std::vector<IComponentView *> &eventPathViews) {
|
|
442
|
-
|
|
443
|
-
targetView ? targetView->touchEventEmitterAtPoint(pointerEvent.offsetPoint) : nullptr;
|
|
705
|
+
const auto eventEmitter = targetView ? targetView->eventEmitterAtPoint(pointerEvent.offsetPoint) : nullptr;
|
|
444
706
|
bool hasMoveEventListeners =
|
|
445
707
|
IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerMove) ||
|
|
446
708
|
IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerMoveCapture);
|
|
@@ -449,91 +711,14 @@ void CompositionEventHandler::MouseMove(uint32_t msg, uint64_t wParam, int64_t l
|
|
|
449
711
|
}
|
|
450
712
|
};
|
|
451
713
|
|
|
452
|
-
HandleIncomingPointerEvent(pointerEvent, targetView, handler);
|
|
714
|
+
HandleIncomingPointerEvent(pointerEvent, targetView, pointerPoint, keyModifiers, handler);
|
|
453
715
|
}
|
|
454
716
|
}
|
|
455
717
|
|
|
456
|
-
void CompositionEventHandler::
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
|
|
461
|
-
::ScreenToClient(pi.hwndTarget, &pt);
|
|
462
|
-
|
|
463
|
-
auto staleTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
|
|
464
|
-
return pair.second.touch.identifier == pointerId;
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
if (staleTouch != m_activeTouches.end()) {
|
|
468
|
-
// A pointer with this ID already exists - Should we fire a button cancel or something?
|
|
469
|
-
assert(false);
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
const auto eventType = TouchEventType::Start;
|
|
474
|
-
|
|
475
|
-
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
476
|
-
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
477
|
-
facebook::react::Point ptLocal;
|
|
478
|
-
|
|
479
|
-
facebook::react::Point ptScaled = {
|
|
480
|
-
static_cast<float>(pt.x / m_compRootView.ScaleFactor()),
|
|
481
|
-
static_cast<float>(pt.y / m_compRootView.ScaleFactor())};
|
|
482
|
-
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
483
|
-
|
|
484
|
-
if (tag == -1)
|
|
485
|
-
return;
|
|
486
|
-
|
|
487
|
-
IComponentView *targetComponentView =
|
|
488
|
-
fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
|
|
489
|
-
static_cast<CompositionBaseComponentView *>(targetComponentView)->sendMessage(msg, wParam, lParam);
|
|
490
|
-
|
|
491
|
-
ActiveTouch activeTouch{0};
|
|
492
|
-
switch (pi.pointerType) {
|
|
493
|
-
case PT_POINTER:
|
|
494
|
-
case PT_TOUCH:
|
|
495
|
-
activeTouch.touchType = UITouchType::Touch;
|
|
496
|
-
break;
|
|
497
|
-
case PT_PEN:
|
|
498
|
-
activeTouch.touchType = UITouchType::Pen;
|
|
499
|
-
break;
|
|
500
|
-
case PT_TOUCHPAD:
|
|
501
|
-
case PT_MOUSE:
|
|
502
|
-
activeTouch.touchType = UITouchType::Mouse;
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
auto componentView = targetComponentView;
|
|
507
|
-
while (componentView) {
|
|
508
|
-
if (auto eventEmitter = componentView->touchEventEmitter()) {
|
|
509
|
-
activeTouch.eventEmitter = eventEmitter;
|
|
510
|
-
activeTouch.touch.target = componentView->tag();
|
|
511
|
-
// activeTouch.componentView = componentView;
|
|
512
|
-
break;
|
|
513
|
-
}
|
|
514
|
-
componentView = componentView->parent();
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
UpdateActiveTouch(activeTouch, ptScaled, ptLocal);
|
|
518
|
-
|
|
519
|
-
// activeTouch.touch.isPrimary = true;
|
|
520
|
-
activeTouch.touch.identifier = pointerId;
|
|
521
|
-
|
|
522
|
-
// If the pointer has not been marked as hovering over views before the touch started, we register
|
|
523
|
-
// that the activeTouch should not maintain its hovered state once the pointer has been lifted.
|
|
524
|
-
auto currentlyHoveredTags = m_currentlyHoveredViewsPerPointer.find(activeTouch.touch.identifier);
|
|
525
|
-
if (currentlyHoveredTags == m_currentlyHoveredViewsPerPointer.end() || currentlyHoveredTags->second.empty()) {
|
|
526
|
-
activeTouch.shouldLeaveWhenReleased = true;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
m_activeTouches.emplace(pointerId, activeTouch);
|
|
530
|
-
|
|
531
|
-
DispatchTouchEvent(eventType, pointerId);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t lParam) {
|
|
536
|
-
PointerId pointerId = MOUSE_POINTER_ID;
|
|
718
|
+
void CompositionEventHandler::onPointerPressed(
|
|
719
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
720
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
|
|
721
|
+
PointerId pointerId = pointerPoint.PointerId();
|
|
537
722
|
|
|
538
723
|
auto staleTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
|
|
539
724
|
return pair.second.touch.identifier == pointerId;
|
|
@@ -545,16 +730,14 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
|
|
|
545
730
|
return;
|
|
546
731
|
}
|
|
547
732
|
|
|
548
|
-
auto
|
|
549
|
-
auto y = GET_Y_LPARAM(lParam);
|
|
733
|
+
auto position = pointerPoint.Position();
|
|
550
734
|
const auto eventType = TouchEventType::Start;
|
|
551
735
|
|
|
552
736
|
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
553
737
|
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
554
738
|
facebook::react::Point ptLocal;
|
|
555
739
|
|
|
556
|
-
facebook::react::Point ptScaled = {
|
|
557
|
-
static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
|
|
740
|
+
facebook::react::Point ptScaled = {position.X, position.Y};
|
|
558
741
|
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
559
742
|
|
|
560
743
|
if (tag == -1)
|
|
@@ -562,14 +745,16 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
|
|
|
562
745
|
|
|
563
746
|
IComponentView *targetComponentView =
|
|
564
747
|
fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
|
|
565
|
-
|
|
748
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
749
|
+
tag, pointerPoint, keyModifiers);
|
|
750
|
+
static_cast<CompositionBaseComponentView *>(targetComponentView)->onPointerPressed(args);
|
|
566
751
|
|
|
567
752
|
ActiveTouch activeTouch{0};
|
|
568
753
|
activeTouch.touchType = UITouchType::Mouse;
|
|
569
754
|
|
|
570
755
|
auto componentView = targetComponentView;
|
|
571
756
|
while (componentView) {
|
|
572
|
-
if (auto eventEmitter = componentView->
|
|
757
|
+
if (auto eventEmitter = componentView->eventEmitterAtPoint(ptLocal)) {
|
|
573
758
|
activeTouch.eventEmitter = eventEmitter;
|
|
574
759
|
activeTouch.touch.target = componentView->tag();
|
|
575
760
|
// activeTouch.componentView = componentView;
|
|
@@ -592,16 +777,14 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
|
|
|
592
777
|
|
|
593
778
|
m_activeTouches.emplace(pointerId, activeTouch);
|
|
594
779
|
|
|
595
|
-
DispatchTouchEvent(eventType, pointerId);
|
|
780
|
+
DispatchTouchEvent(eventType, pointerId, pointerPoint, keyModifiers);
|
|
596
781
|
}
|
|
597
782
|
}
|
|
598
783
|
|
|
599
|
-
void CompositionEventHandler::
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
|
|
604
|
-
::ScreenToClient(pi.hwndTarget, &pt);
|
|
784
|
+
void CompositionEventHandler::onPointerReleased(
|
|
785
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
786
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
|
|
787
|
+
int pointerId = pointerPoint.PointerId();
|
|
605
788
|
|
|
606
789
|
auto activeTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
|
|
607
790
|
return pair.second.touch.identifier == pointerId;
|
|
@@ -611,59 +794,26 @@ void CompositionEventHandler::PointerUp(uint32_t msg, uint64_t wParam, int64_t l
|
|
|
611
794
|
return;
|
|
612
795
|
}
|
|
613
796
|
|
|
614
|
-
|
|
797
|
+
auto position = pointerPoint.Position();
|
|
615
798
|
|
|
616
799
|
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
617
800
|
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
618
801
|
facebook::react::Point ptLocal;
|
|
619
802
|
|
|
620
|
-
facebook::react::Point ptScaled = {
|
|
621
|
-
static_cast<float>(pt.x / m_compRootView.ScaleFactor()),
|
|
622
|
-
static_cast<float>(pt.y / m_compRootView.ScaleFactor())};
|
|
803
|
+
facebook::react::Point ptScaled = {position.X, position.Y};
|
|
623
804
|
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
624
805
|
|
|
625
806
|
if (tag == -1)
|
|
626
807
|
return;
|
|
627
808
|
|
|
628
809
|
auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
UpdateActiveTouch(activeTouch->second, ptScaled, ptLocal);
|
|
632
|
-
DispatchTouchEvent(TouchEventType::End, pointerId);
|
|
633
|
-
m_activeTouches.erase(pointerId);
|
|
634
|
-
}
|
|
635
|
-
}
|
|
810
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
|
|
811
|
+
tag, pointerPoint, keyModifiers);
|
|
636
812
|
|
|
637
|
-
|
|
638
|
-
int pointerId = MOUSE_POINTER_ID;
|
|
639
|
-
|
|
640
|
-
auto activeTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
|
|
641
|
-
return pair.second.touch.identifier == pointerId;
|
|
642
|
-
});
|
|
643
|
-
|
|
644
|
-
if (activeTouch == m_activeTouches.end()) {
|
|
645
|
-
return;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
auto x = GET_X_LPARAM(lParam);
|
|
649
|
-
auto y = GET_Y_LPARAM(lParam);
|
|
650
|
-
|
|
651
|
-
if (std::shared_ptr<FabricUIManager> fabricuiManager =
|
|
652
|
-
::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
|
|
653
|
-
facebook::react::Point ptLocal;
|
|
654
|
-
|
|
655
|
-
facebook::react::Point ptScaled = {
|
|
656
|
-
static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
|
|
657
|
-
auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
658
|
-
|
|
659
|
-
if (tag == -1)
|
|
660
|
-
return;
|
|
661
|
-
|
|
662
|
-
auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
|
|
663
|
-
std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->sendMessage(msg, wParam, lParam);
|
|
813
|
+
std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->onPointerReleased(args);
|
|
664
814
|
|
|
665
815
|
UpdateActiveTouch(activeTouch->second, ptScaled, ptLocal);
|
|
666
|
-
DispatchTouchEvent(TouchEventType::End, pointerId);
|
|
816
|
+
DispatchTouchEvent(TouchEventType::End, pointerId, pointerPoint, keyModifiers);
|
|
667
817
|
m_activeTouches.erase(pointerId);
|
|
668
818
|
}
|
|
669
819
|
}
|
|
@@ -744,7 +894,11 @@ facebook::react::PointerEvent CompositionEventHandler::CreatePointerEventFromAct
|
|
|
744
894
|
}
|
|
745
895
|
|
|
746
896
|
// If we have events that include multiple pointer updates, we should change arg from pointerId to vector<pointerId>
|
|
747
|
-
void CompositionEventHandler::DispatchTouchEvent(
|
|
897
|
+
void CompositionEventHandler::DispatchTouchEvent(
|
|
898
|
+
TouchEventType eventType,
|
|
899
|
+
PointerId pointerId,
|
|
900
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
901
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) {
|
|
748
902
|
auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties());
|
|
749
903
|
|
|
750
904
|
if (!fabricuiManager)
|
|
@@ -805,7 +959,7 @@ void CompositionEventHandler::DispatchTouchEvent(TouchEventType eventType, Point
|
|
|
805
959
|
}
|
|
806
960
|
};
|
|
807
961
|
|
|
808
|
-
HandleIncomingPointerEvent(pointerEvent, targetView, handler);
|
|
962
|
+
HandleIncomingPointerEvent(pointerEvent, targetView, pointerPoint, keyModifiers, handler);
|
|
809
963
|
}
|
|
810
964
|
|
|
811
965
|
for (const auto &pair : m_activeTouches) {
|