react-native-windows 0.72.14 → 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 +17 -17
- 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
|
@@ -33,11 +33,21 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
33
33
|
// (Object handle, UInt32 Msg, UInt64 WParam, Int64 LParam) => Int64
|
|
34
34
|
void SetMessageHandler(MessageHandler impl) noexcept;
|
|
35
35
|
|
|
36
|
+
void SetKeyDownHandler(KeyHandler impl) noexcept;
|
|
37
|
+
void SetKeyUpHandler(KeyHandler impl) noexcept;
|
|
38
|
+
|
|
39
|
+
void SetPointerEnteredHandler(PointerHandler impl) noexcept;
|
|
40
|
+
void SetPointerExitedHandler(PointerHandler impl) noexcept;
|
|
41
|
+
void SetPointerReleasedHandler(PointerHandler impl) noexcept;
|
|
42
|
+
void SetPointerPressedHandler(PointerHandler impl) noexcept;
|
|
43
|
+
void SetPointerMovedHandler(PointerHandler impl) noexcept;
|
|
44
|
+
void SetPointerWheelChangedHandler(PointerHandler impl) noexcept;
|
|
45
|
+
|
|
36
46
|
public:
|
|
37
47
|
IComponentProps CreateProps(ViewProps props) noexcept;
|
|
38
48
|
|
|
39
|
-
winrt::Windows::Foundation::IInspectable CreateView(ICompositionContext context) noexcept;
|
|
40
|
-
bool
|
|
49
|
+
winrt::Windows::Foundation::IInspectable CreateView(IReactContext reactContext, ICompositionContext context) noexcept;
|
|
50
|
+
bool HandleCommand(
|
|
41
51
|
winrt::Windows::Foundation::IInspectable handle,
|
|
42
52
|
winrt::hstring commandName,
|
|
43
53
|
IJSValueReader args) noexcept;
|
|
@@ -47,6 +57,32 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
47
57
|
IVisual CreateVisual(winrt::Windows::Foundation::IInspectable handle) noexcept;
|
|
48
58
|
int64_t
|
|
49
59
|
SendMessage(winrt::Windows::Foundation::IInspectable handle, uint32_t Msg, uint64_t WParam, int64_t LParam) noexcept;
|
|
60
|
+
void OnKeyDown(
|
|
61
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
62
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
63
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept;
|
|
64
|
+
void OnKeyUp(
|
|
65
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
66
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
67
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept;
|
|
68
|
+
void OnPointerEntered(
|
|
69
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
70
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
71
|
+
void OnPointerExited(
|
|
72
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
73
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
74
|
+
void OnPointerPressed(
|
|
75
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
76
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
77
|
+
void OnPointerReleased(
|
|
78
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
79
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
80
|
+
void OnPointerMoved(
|
|
81
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
82
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
83
|
+
void OnPointerWheelChanged(
|
|
84
|
+
winrt::Windows::Foundation::IInspectable handle,
|
|
85
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
|
|
50
86
|
|
|
51
87
|
private:
|
|
52
88
|
ViewPropsFactory m_propsFactory;
|
|
@@ -58,6 +94,14 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
58
94
|
UpdateFinalizer m_finalizer;
|
|
59
95
|
VisualCreator m_visualCreator;
|
|
60
96
|
MessageHandler m_messageHandler;
|
|
97
|
+
KeyHandler m_keyUp;
|
|
98
|
+
KeyHandler m_keyDown;
|
|
99
|
+
PointerHandler m_pointerEntered;
|
|
100
|
+
PointerHandler m_pointerExited;
|
|
101
|
+
PointerHandler m_pointerReleased;
|
|
102
|
+
PointerHandler m_pointerPressed;
|
|
103
|
+
PointerHandler m_pointerMoved;
|
|
104
|
+
PointerHandler m_pointerWheelChanged;
|
|
61
105
|
};
|
|
62
106
|
|
|
63
107
|
} // namespace winrt::Microsoft::ReactNative::Composition
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
#include "RootComponentView.h"
|
|
8
8
|
|
|
9
|
+
#include <Fabric/FabricUIManagerModule.h>
|
|
9
10
|
#include "CompositionRootAutomationProvider.h"
|
|
10
11
|
#include "CompositionRootView.h"
|
|
11
12
|
|
|
@@ -13,13 +14,15 @@ namespace Microsoft::ReactNative {
|
|
|
13
14
|
|
|
14
15
|
RootComponentView::RootComponentView(
|
|
15
16
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
16
|
-
facebook::react::Tag tag
|
|
17
|
-
|
|
17
|
+
facebook::react::Tag tag,
|
|
18
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext)
|
|
19
|
+
: Super(compContext, tag), m_context(reactContext) {}
|
|
18
20
|
|
|
19
21
|
std::shared_ptr<RootComponentView> RootComponentView::Create(
|
|
20
22
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
21
|
-
facebook::react::Tag tag
|
|
22
|
-
|
|
23
|
+
facebook::react::Tag tag,
|
|
24
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext) noexcept {
|
|
25
|
+
return std::shared_ptr<RootComponentView>(new RootComponentView(compContext, tag, reactContext));
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
RootComponentView *RootComponentView::rootComponentView() noexcept {
|
|
@@ -81,6 +84,14 @@ bool RootComponentView::NavigateFocus(const winrt::Microsoft::ReactNative::Focus
|
|
|
81
84
|
return view != nullptr;
|
|
82
85
|
}
|
|
83
86
|
|
|
87
|
+
bool RootComponentView::TrySetFocusedComponent(IComponentView &view) noexcept {
|
|
88
|
+
if (view.focusable()) {
|
|
89
|
+
view.rootComponentView()->SetFocusedComponent(&view);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
84
95
|
bool RootComponentView::TryMoveFocus(bool next) noexcept {
|
|
85
96
|
if (!m_focusedComponent) {
|
|
86
97
|
return NavigateFocus(winrt::Microsoft::ReactNative::FocusNavigationRequest(
|
|
@@ -91,11 +102,8 @@ bool RootComponentView::TryMoveFocus(bool next) noexcept {
|
|
|
91
102
|
Mso::Functor<bool(IComponentView &)> fn = [currentlyFocused = m_focusedComponent](IComponentView &view) noexcept {
|
|
92
103
|
if (&view == currentlyFocused)
|
|
93
104
|
return false;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
return false;
|
|
105
|
+
|
|
106
|
+
return view.rootComponentView()->TrySetFocusedComponent(view);
|
|
99
107
|
};
|
|
100
108
|
|
|
101
109
|
return walkTree(*m_focusedComponent, next, fn);
|
|
@@ -113,4 +121,23 @@ std::shared_ptr<RootComponentView> RootComponentView::getPtr() {
|
|
|
113
121
|
return std::static_pointer_cast<RootComponentView>(shared_from_this());
|
|
114
122
|
}
|
|
115
123
|
|
|
124
|
+
winrt::IInspectable RootComponentView::UiaProviderFromPoint(const POINT &ptPixels) noexcept {
|
|
125
|
+
facebook::react::Point ptDips{
|
|
126
|
+
static_cast<facebook::react::Float>(ptPixels.x) / m_layoutMetrics.pointScaleFactor,
|
|
127
|
+
static_cast<facebook::react::Float>(ptPixels.y) / m_layoutMetrics.pointScaleFactor};
|
|
128
|
+
|
|
129
|
+
facebook::react::Point localPt;
|
|
130
|
+
auto tag = hitTest(ptDips, localPt, true);
|
|
131
|
+
|
|
132
|
+
auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties());
|
|
133
|
+
if (uiManager == nullptr)
|
|
134
|
+
return nullptr;
|
|
135
|
+
|
|
136
|
+
auto view = uiManager->GetViewRegistry().findComponentViewWithTag(tag);
|
|
137
|
+
if (view == nullptr)
|
|
138
|
+
return nullptr;
|
|
139
|
+
|
|
140
|
+
return view->EnsureUiaProvider();
|
|
141
|
+
}
|
|
142
|
+
|
|
116
143
|
} // namespace Microsoft::ReactNative
|
|
@@ -18,12 +18,14 @@ struct RootComponentView : CompositionViewComponentView {
|
|
|
18
18
|
|
|
19
19
|
[[nodiscard]] static std::shared_ptr<RootComponentView> Create(
|
|
20
20
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
21
|
-
facebook::react::Tag tag
|
|
21
|
+
facebook::react::Tag tag,
|
|
22
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext) noexcept;
|
|
22
23
|
|
|
23
24
|
std::shared_ptr<RootComponentView> getPtr();
|
|
24
25
|
|
|
25
26
|
::Microsoft::ReactNative::IComponentView *GetFocusedComponent() noexcept;
|
|
26
27
|
void SetFocusedComponent(::Microsoft::ReactNative::IComponentView *value) noexcept;
|
|
28
|
+
bool TrySetFocusedComponent(::Microsoft::ReactNative::IComponentView &view) noexcept;
|
|
27
29
|
|
|
28
30
|
bool NavigateFocus(const winrt::Microsoft::ReactNative::FocusNavigationRequest &request) noexcept;
|
|
29
31
|
|
|
@@ -33,11 +35,15 @@ struct RootComponentView : CompositionViewComponentView {
|
|
|
33
35
|
|
|
34
36
|
winrt::IInspectable EnsureUiaProvider() noexcept override;
|
|
35
37
|
|
|
38
|
+
winrt::IInspectable UiaProviderFromPoint(const POINT &ptPixels) noexcept;
|
|
39
|
+
|
|
36
40
|
private:
|
|
37
41
|
RootComponentView(
|
|
38
42
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
39
|
-
facebook::react::Tag tag
|
|
43
|
+
facebook::react::Tag tag,
|
|
44
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext);
|
|
40
45
|
::Microsoft::ReactNative::IComponentView *m_focusedComponent = nullptr;
|
|
46
|
+
winrt::Microsoft::ReactNative::ReactContext m_context;
|
|
41
47
|
};
|
|
42
48
|
|
|
43
49
|
} // namespace Microsoft::ReactNative
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
namespace Microsoft::ReactNative {
|
|
23
23
|
|
|
24
|
+
constexpr float c_scrollerLineDelta = 16.0f;
|
|
25
|
+
|
|
24
26
|
std::shared_ptr<ScrollViewComponentView> ScrollViewComponentView::Create(
|
|
25
27
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
26
28
|
facebook::react::Tag tag) noexcept {
|
|
@@ -149,32 +151,20 @@ void ScrollViewComponentView::updateProps(
|
|
|
149
151
|
|
|
150
152
|
if (!oldProps || oldViewProps.backgroundColor != newViewProps.backgroundColor) {
|
|
151
153
|
if (newViewProps.backgroundColor) {
|
|
152
|
-
m_scrollVisual.Brush(m_compContext.CreateColorBrush(
|
|
154
|
+
m_scrollVisual.Brush(m_compContext.CreateColorBrush(newViewProps.backgroundColor.AsWindowsColor()));
|
|
153
155
|
} else {
|
|
154
156
|
m_scrollVisual.Brush(m_compContext.CreateColorBrush({0, 0, 0, 0}));
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
159
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
m_element.BorderBrush(SolidColorBrushFrom(*newViewProps.borderColors.all));
|
|
162
|
-
} else {
|
|
163
|
-
m_element.ClearValue(winrt::Microsoft::ReactNative::ViewPanel::BorderBrushProperty());
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (oldViewProps.borderStyles != newViewProps.borderStyles) {
|
|
168
|
-
m_needsBorderUpdate = true;
|
|
169
|
-
}
|
|
170
|
-
*/
|
|
171
|
-
|
|
160
|
+
// update BaseComponentView props
|
|
161
|
+
updateShadowProps(oldViewProps, newViewProps, m_visual);
|
|
162
|
+
updateTransformProps(oldViewProps, newViewProps, m_visual);
|
|
172
163
|
updateBorderProps(oldViewProps, newViewProps);
|
|
164
|
+
|
|
173
165
|
m_props = std::static_pointer_cast<facebook::react::ViewProps const>(props);
|
|
174
166
|
}
|
|
175
167
|
|
|
176
|
-
void ScrollViewComponentView::updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept {}
|
|
177
|
-
|
|
178
168
|
void ScrollViewComponentView::updateState(
|
|
179
169
|
facebook::react::State::Shared const &state,
|
|
180
170
|
facebook::react::State::Shared const &oldState) noexcept {
|
|
@@ -219,8 +209,7 @@ void ScrollViewComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMa
|
|
|
219
209
|
}
|
|
220
210
|
void ScrollViewComponentView::prepareForRecycle() noexcept {}
|
|
221
211
|
facebook::react::Props::Shared ScrollViewComponentView::props() noexcept {
|
|
222
|
-
|
|
223
|
-
return {};
|
|
212
|
+
return static_cast<facebook::react::Props::Shared>(m_props);
|
|
224
213
|
}
|
|
225
214
|
|
|
226
215
|
/*
|
|
@@ -268,38 +257,156 @@ void ScrollViewComponentView::OnPointerDown(const winrt::Windows::UI::Input::Poi
|
|
|
268
257
|
}
|
|
269
258
|
*/
|
|
270
259
|
|
|
271
|
-
|
|
272
|
-
|
|
260
|
+
void ScrollViewComponentView::onPointerWheelChanged(
|
|
261
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
|
|
262
|
+
auto ppp = args.GetCurrentPoint(-1).Properties();
|
|
263
|
+
auto delta = static_cast<float>(ppp.MouseWheelDelta());
|
|
264
|
+
if (ppp.IsHorizontalMouseWheel()) {
|
|
265
|
+
if (delta > 0) {
|
|
266
|
+
if (scrollLeft(delta * m_layoutMetrics.pointScaleFactor, true)) {
|
|
267
|
+
args.Handled(true);
|
|
268
|
+
}
|
|
269
|
+
} else if (delta < 0) {
|
|
270
|
+
if (scrollRight(-delta * m_layoutMetrics.pointScaleFactor, true)) {
|
|
271
|
+
args.Handled(true);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
} else {
|
|
275
|
+
if (delta > 0) {
|
|
276
|
+
if (scrollUp(delta * m_layoutMetrics.pointScaleFactor, true)) {
|
|
277
|
+
args.Handled(true);
|
|
278
|
+
}
|
|
279
|
+
} else if (delta < 0) {
|
|
280
|
+
if (scrollDown(-delta * m_layoutMetrics.pointScaleFactor, true)) {
|
|
281
|
+
args.Handled(true);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
273
286
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
287
|
+
void ScrollViewComponentView::onKeyDown(
|
|
288
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
289
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
290
|
+
switch (args.Key()) {
|
|
291
|
+
case winrt::Windows::System::VirtualKey::End:
|
|
292
|
+
args.Handled(scrollToEnd(true));
|
|
293
|
+
break;
|
|
294
|
+
case winrt::Windows::System::VirtualKey::Home:
|
|
295
|
+
args.Handled(scrollToStart(true));
|
|
296
|
+
break;
|
|
297
|
+
case winrt::Windows::System::VirtualKey::PageDown:
|
|
298
|
+
args.Handled(pageDown(true));
|
|
299
|
+
break;
|
|
300
|
+
case winrt::Windows::System::VirtualKey::PageUp:
|
|
301
|
+
args.Handled(pageUp(true));
|
|
302
|
+
break;
|
|
303
|
+
case winrt::Windows::System::VirtualKey::Up:
|
|
304
|
+
args.Handled(lineUp(true));
|
|
305
|
+
break;
|
|
306
|
+
case winrt::Windows::System::VirtualKey::Down:
|
|
307
|
+
args.Handled(lineDown(true));
|
|
308
|
+
break;
|
|
309
|
+
case winrt::Windows::System::VirtualKey::Left:
|
|
310
|
+
args.Handled(lineLeft(true));
|
|
311
|
+
break;
|
|
312
|
+
case winrt::Windows::System::VirtualKey::Right:
|
|
313
|
+
args.Handled(lineRight(true));
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
277
317
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
318
|
+
bool ScrollViewComponentView::scrollToEnd(bool animate) noexcept {
|
|
319
|
+
if ((((m_contentSize.height - m_layoutMetrics.frame.size.height) * m_layoutMetrics.pointScaleFactor) -
|
|
320
|
+
m_scrollVisual.ScrollPosition().y) < 1.0f) {
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
283
323
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
324
|
+
auto x = (m_contentSize.width - m_layoutMetrics.frame.size.width) * m_layoutMetrics.pointScaleFactor;
|
|
325
|
+
auto y = (m_contentSize.height - m_layoutMetrics.frame.size.height) * m_layoutMetrics.pointScaleFactor;
|
|
326
|
+
m_scrollVisual.TryUpdatePosition({static_cast<float>(x), static_cast<float>(y), 0.0f}, animate);
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
bool ScrollViewComponentView::scrollToStart(bool animate) noexcept {
|
|
331
|
+
m_scrollVisual.TryUpdatePosition({0.0f, 0.0f, 0.0f}, animate);
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
bool ScrollViewComponentView::pageUp(bool animate) noexcept {
|
|
336
|
+
return scrollUp(m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor, animate);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
bool ScrollViewComponentView::pageDown(bool animate) noexcept {
|
|
340
|
+
return scrollDown(m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor, animate);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
bool ScrollViewComponentView::lineUp(bool animate) noexcept {
|
|
344
|
+
return scrollUp(c_scrollerLineDelta * m_layoutMetrics.pointScaleFactor, animate);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
bool ScrollViewComponentView::lineDown(bool animate) noexcept {
|
|
348
|
+
return scrollDown(c_scrollerLineDelta * m_layoutMetrics.pointScaleFactor, animate);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
bool ScrollViewComponentView::lineLeft(bool animate) noexcept {
|
|
352
|
+
return scrollLeft(c_scrollerLineDelta * m_layoutMetrics.pointScaleFactor, animate);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
bool ScrollViewComponentView::lineRight(bool animate) noexcept {
|
|
356
|
+
return scrollRight(c_scrollerLineDelta * m_layoutMetrics.pointScaleFactor, animate);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
bool ScrollViewComponentView::scrollDown(float delta, bool animate) noexcept {
|
|
360
|
+
if (((m_contentSize.height - m_layoutMetrics.frame.size.height) * m_layoutMetrics.pointScaleFactor) -
|
|
361
|
+
m_scrollVisual.ScrollPosition().y <
|
|
362
|
+
1.0f) {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
m_scrollVisual.ScrollBy({0, delta, 0}, animate);
|
|
367
|
+
return true;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
bool ScrollViewComponentView::scrollUp(float delta, bool animate) noexcept {
|
|
371
|
+
if (m_scrollVisual.ScrollPosition().y <= 0.0f) {
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
m_scrollVisual.ScrollBy({0, -delta, 0}, animate);
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
bool ScrollViewComponentView::scrollLeft(float delta, bool animate) noexcept {
|
|
380
|
+
if (m_scrollVisual.ScrollPosition().x <= 0.0f) {
|
|
381
|
+
return false;
|
|
288
382
|
}
|
|
289
383
|
|
|
290
|
-
|
|
384
|
+
m_scrollVisual.ScrollBy({delta, 0, 0}, animate);
|
|
385
|
+
return true;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
bool ScrollViewComponentView::scrollRight(float delta, bool animate) noexcept {
|
|
389
|
+
if (((m_contentSize.width - m_layoutMetrics.frame.size.width) * m_layoutMetrics.pointScaleFactor) -
|
|
390
|
+
m_scrollVisual.ScrollPosition().x <
|
|
391
|
+
1.0f) {
|
|
392
|
+
return false;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
m_scrollVisual.ScrollBy({delta, 0, 0}, animate);
|
|
396
|
+
return true;
|
|
291
397
|
}
|
|
292
398
|
|
|
293
399
|
void ScrollViewComponentView::handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept {
|
|
294
400
|
if (commandName == "scrollTo") {
|
|
295
|
-
auto x = arg[0].asDouble();
|
|
296
|
-
auto y = arg[1].asDouble();
|
|
401
|
+
auto x = arg[0].asDouble() * m_layoutMetrics.pointScaleFactor;
|
|
402
|
+
auto y = arg[1].asDouble() * m_layoutMetrics.pointScaleFactor;
|
|
297
403
|
auto animate = arg[2].asBool();
|
|
298
404
|
m_scrollVisual.TryUpdatePosition({static_cast<float>(x), static_cast<float>(y), 0.0f}, animate);
|
|
299
405
|
} else if (commandName == "flashScrollIndicators") {
|
|
300
406
|
// No-op for now
|
|
301
407
|
} else if (commandName == "scrollToEnd") {
|
|
302
|
-
|
|
408
|
+
auto animate = arg[0].asBool();
|
|
409
|
+
scrollToEnd(animate);
|
|
303
410
|
} else if (commandName == "zoomToRect") {
|
|
304
411
|
// No-op for now
|
|
305
412
|
} else {
|
|
@@ -307,6 +414,98 @@ void ScrollViewComponentView::handleCommand(std::string const &commandName, foll
|
|
|
307
414
|
}
|
|
308
415
|
}
|
|
309
416
|
|
|
417
|
+
void ScrollViewComponentView::StartBringIntoView(BringIntoViewOptions &&options) noexcept {
|
|
418
|
+
RECT rc{getClientRect()};
|
|
419
|
+
|
|
420
|
+
if (!options.TargetRect) {
|
|
421
|
+
Super::StartBringIntoView(std::move(options));
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
bool needsScroll = false;
|
|
426
|
+
float scrollToVertical = m_scrollVisual.ScrollPosition().y;
|
|
427
|
+
float scrollToHorizontal = m_scrollVisual.ScrollPosition().x;
|
|
428
|
+
float viewerHeight = m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor;
|
|
429
|
+
float viewerWidth = m_layoutMetrics.frame.size.width * m_layoutMetrics.pointScaleFactor;
|
|
430
|
+
float targetBottom = options.TargetRect->origin.y + options.TargetRect->size.height;
|
|
431
|
+
float targetRight = options.TargetRect->origin.x + options.TargetRect->size.width;
|
|
432
|
+
|
|
433
|
+
if (isnan(options.VerticalAlignmentRatio)) {
|
|
434
|
+
// Scroll Down
|
|
435
|
+
if (targetBottom > (m_scrollVisual.ScrollPosition().y + viewerHeight) &&
|
|
436
|
+
options.TargetRect->origin.y > m_scrollVisual.ScrollPosition().y) {
|
|
437
|
+
needsScroll = true;
|
|
438
|
+
if (options.TargetRect->size.height > viewerHeight) {
|
|
439
|
+
scrollToVertical = options.TargetRect->origin.y + options.VerticalOffset;
|
|
440
|
+
} else {
|
|
441
|
+
scrollToVertical = (targetBottom - viewerHeight) + options.VerticalOffset;
|
|
442
|
+
}
|
|
443
|
+
// Scroll Up
|
|
444
|
+
} else if (
|
|
445
|
+
options.TargetRect->origin.y < m_scrollVisual.ScrollPosition().y &&
|
|
446
|
+
targetBottom < (m_scrollVisual.ScrollPosition().y + viewerHeight)) {
|
|
447
|
+
needsScroll = true;
|
|
448
|
+
if (options.TargetRect->size.height > viewerHeight) {
|
|
449
|
+
scrollToVertical = targetBottom - viewerHeight - options.VerticalOffset;
|
|
450
|
+
} else {
|
|
451
|
+
scrollToVertical = options.TargetRect->origin.y - options.VerticalOffset;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
} else {
|
|
455
|
+
needsScroll = true;
|
|
456
|
+
scrollToVertical = options.TargetRect->getMidY() - (viewerHeight * options.VerticalAlignmentRatio);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
if (isnan(options.HorizontalAlignmentRatio)) {
|
|
460
|
+
// Scroll Right
|
|
461
|
+
if (targetRight > (m_scrollVisual.ScrollPosition().x + viewerWidth) &&
|
|
462
|
+
options.TargetRect->origin.x > m_scrollVisual.ScrollPosition().x) {
|
|
463
|
+
needsScroll = true;
|
|
464
|
+
if (options.TargetRect->size.width > viewerWidth) {
|
|
465
|
+
scrollToHorizontal = options.TargetRect->origin.x + options.HorizontalOffset;
|
|
466
|
+
} else {
|
|
467
|
+
scrollToHorizontal = (targetRight - viewerWidth) + options.HorizontalOffset;
|
|
468
|
+
}
|
|
469
|
+
// Scroll Left
|
|
470
|
+
} else if (
|
|
471
|
+
options.TargetRect->origin.x < m_scrollVisual.ScrollPosition().x &&
|
|
472
|
+
targetRight < (m_scrollVisual.ScrollPosition().x + viewerWidth)) {
|
|
473
|
+
needsScroll = true;
|
|
474
|
+
if (options.TargetRect->size.width > viewerWidth) {
|
|
475
|
+
scrollToHorizontal = targetRight - viewerWidth - options.HorizontalOffset;
|
|
476
|
+
} else {
|
|
477
|
+
scrollToHorizontal = options.TargetRect->origin.x - options.HorizontalOffset;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
} else {
|
|
481
|
+
needsScroll = true;
|
|
482
|
+
scrollToHorizontal = options.TargetRect->getMidX() - (viewerWidth * options.HorizontalAlignmentRatio);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
if (needsScroll) {
|
|
486
|
+
m_scrollVisual.TryUpdatePosition(
|
|
487
|
+
{static_cast<float>(scrollToHorizontal), static_cast<float>(scrollToVertical), 0.0f}, options.AnimationDesired);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if (m_parent) {
|
|
491
|
+
options.TargetRect->origin.y += m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor;
|
|
492
|
+
options.TargetRect->origin.x += m_layoutMetrics.frame.origin.x * m_layoutMetrics.pointScaleFactor;
|
|
493
|
+
|
|
494
|
+
options.TargetRect->origin.y -= m_scrollVisual.ScrollPosition().y;
|
|
495
|
+
options.TargetRect->origin.x -= m_scrollVisual.ScrollPosition().x;
|
|
496
|
+
|
|
497
|
+
facebook::react::Rect viewerRect = {
|
|
498
|
+
{m_layoutMetrics.frame.origin.x * m_layoutMetrics.pointScaleFactor,
|
|
499
|
+
m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor},
|
|
500
|
+
{m_layoutMetrics.frame.size.width * m_layoutMetrics.pointScaleFactor,
|
|
501
|
+
m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor}};
|
|
502
|
+
|
|
503
|
+
options.TargetRect = facebook::react::Rect::intersect(viewerRect, options.TargetRect.value());
|
|
504
|
+
|
|
505
|
+
m_parent->StartBringIntoView(std::move(options));
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
310
509
|
void ScrollViewComponentView::ensureVisual() noexcept {
|
|
311
510
|
if (!m_visual) {
|
|
312
511
|
m_visual = m_compContext.CreateSpriteVisual();
|
|
@@ -316,7 +515,7 @@ void ScrollViewComponentView::ensureVisual() noexcept {
|
|
|
316
515
|
winrt::auto_revoke,
|
|
317
516
|
[this](
|
|
318
517
|
winrt::IInspectable const & /*sender*/,
|
|
319
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
518
|
+
winrt::Microsoft::ReactNative::Composition::IScrollPositionChangedArgs const &args) {
|
|
320
519
|
auto eventEmitter = GetEventEmitter();
|
|
321
520
|
if (eventEmitter) {
|
|
322
521
|
facebook::react::ScrollViewMetrics scrollMetrics;
|
|
@@ -335,8 +534,10 @@ void ScrollViewComponentView::ensureVisual() noexcept {
|
|
|
335
534
|
}
|
|
336
535
|
}
|
|
337
536
|
|
|
338
|
-
facebook::react::Tag ScrollViewComponentView::hitTest(
|
|
339
|
-
|
|
537
|
+
facebook::react::Tag ScrollViewComponentView::hitTest(
|
|
538
|
+
facebook::react::Point pt,
|
|
539
|
+
facebook::react::Point &localPt,
|
|
540
|
+
bool ignorePointerEvents) const noexcept {
|
|
340
541
|
facebook::react::Point ptViewport{pt.x - m_layoutMetrics.frame.origin.x, pt.y - m_layoutMetrics.frame.origin.y};
|
|
341
542
|
|
|
342
543
|
facebook::react::Point ptContent{
|
|
@@ -344,7 +545,7 @@ facebook::react::Tag ScrollViewComponentView::hitTest(facebook::react::Point pt,
|
|
|
344
545
|
ptViewport.y + m_scrollVisual.ScrollPosition().y / m_layoutMetrics.pointScaleFactor};
|
|
345
546
|
|
|
346
547
|
facebook::react::Tag targetTag;
|
|
347
|
-
if ((m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
548
|
+
if ((ignorePointerEvents || m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
348
549
|
m_props->pointerEvents == facebook::react::PointerEventsMode::BoxNone) &&
|
|
349
550
|
std::any_of(m_children.rbegin(), m_children.rend(), [&targetTag, &ptContent, &localPt](auto child) {
|
|
350
551
|
targetTag = static_cast<const CompositionBaseComponentView *>(child)->hitTest(ptContent, localPt);
|
|
@@ -352,7 +553,7 @@ facebook::react::Tag ScrollViewComponentView::hitTest(facebook::react::Point pt,
|
|
|
352
553
|
}))
|
|
353
554
|
return targetTag;
|
|
354
555
|
|
|
355
|
-
if ((m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
556
|
+
if ((ignorePointerEvents || m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
356
557
|
m_props->pointerEvents == facebook::react::PointerEventsMode::BoxOnly) &&
|
|
357
558
|
ptViewport.x >= 0 && ptViewport.x <= m_layoutMetrics.frame.size.width && ptViewport.y >= 0 &&
|
|
358
559
|
ptViewport.y <= m_layoutMetrics.frame.size.height) {
|
|
@@ -367,4 +568,8 @@ winrt::Microsoft::ReactNative::Composition::IVisual ScrollViewComponentView::Vis
|
|
|
367
568
|
return m_visual;
|
|
368
569
|
}
|
|
369
570
|
|
|
571
|
+
std::string ScrollViewComponentView::DefaultControlType() const noexcept {
|
|
572
|
+
return "scrollbar";
|
|
573
|
+
}
|
|
574
|
+
|
|
370
575
|
} // namespace Microsoft::ReactNative
|
|
@@ -60,7 +60,6 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
|
|
|
60
60
|
void unmountChildComponentView(IComponentView &childComponentView, uint32_t index) noexcept override;
|
|
61
61
|
void updateProps(facebook::react::Props::Shared const &props, facebook::react::Props::Shared const &oldProps) noexcept
|
|
62
62
|
override;
|
|
63
|
-
void updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept override;
|
|
64
63
|
void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
|
|
65
64
|
override;
|
|
66
65
|
void updateLayoutMetrics(
|
|
@@ -69,13 +68,20 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
|
|
|
69
68
|
void finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept override;
|
|
70
69
|
void prepareForRecycle() noexcept override;
|
|
71
70
|
facebook::react::Props::Shared props() noexcept override;
|
|
71
|
+
void onKeyDown(
|
|
72
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
73
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept override;
|
|
72
74
|
|
|
73
75
|
void handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept override;
|
|
74
|
-
facebook::react::Tag hitTest(facebook::react::Point pt, facebook::react::Point &localPt
|
|
76
|
+
facebook::react::Tag hitTest(facebook::react::Point pt, facebook::react::Point &localPt, bool ignorePointerEvents)
|
|
77
|
+
const noexcept override;
|
|
75
78
|
winrt::Microsoft::ReactNative::Composition::IVisual Visual() const noexcept override;
|
|
76
79
|
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
void onPointerWheelChanged(
|
|
81
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept override;
|
|
82
|
+
|
|
83
|
+
void StartBringIntoView(BringIntoViewOptions &&args) noexcept override;
|
|
84
|
+
virtual std::string DefaultControlType() const noexcept;
|
|
79
85
|
|
|
80
86
|
private:
|
|
81
87
|
ScrollViewComponentView(
|
|
@@ -84,11 +90,23 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
|
|
|
84
90
|
|
|
85
91
|
void ensureVisual() noexcept;
|
|
86
92
|
void updateContentVisualSize() noexcept;
|
|
93
|
+
bool scrollToEnd(bool animate) noexcept;
|
|
94
|
+
bool scrollToStart(bool animate) noexcept;
|
|
95
|
+
bool pageUp(bool animate) noexcept;
|
|
96
|
+
bool pageDown(bool animate) noexcept;
|
|
97
|
+
bool lineUp(bool animate) noexcept;
|
|
98
|
+
bool lineDown(bool animate) noexcept;
|
|
99
|
+
bool lineLeft(bool animate) noexcept;
|
|
100
|
+
bool lineRight(bool animate) noexcept;
|
|
101
|
+
bool scrollDown(float delta, bool animate) noexcept;
|
|
102
|
+
bool scrollUp(float delta, bool animate) noexcept;
|
|
103
|
+
bool scrollLeft(float delta, bool aniamte) noexcept;
|
|
104
|
+
bool scrollRight(float delta, bool animate) noexcept;
|
|
87
105
|
|
|
88
106
|
facebook::react::Size m_contentSize;
|
|
89
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
90
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
91
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
107
|
+
winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_visual{nullptr};
|
|
108
|
+
winrt::Microsoft::ReactNative::Composition::IScrollVisual m_scrollVisual{nullptr};
|
|
109
|
+
winrt::Microsoft::ReactNative::Composition::IScrollVisual::ScrollPositionChanged_revoker
|
|
92
110
|
m_scrollPositionChangedRevoker{};
|
|
93
111
|
|
|
94
112
|
facebook::react::SharedViewProps m_props;
|
|
@@ -96,7 +114,6 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
|
|
|
96
114
|
bool m_isScrollingFromInertia = false;
|
|
97
115
|
bool m_isScrolling = false;
|
|
98
116
|
bool m_isHorizontal = false;
|
|
99
|
-
bool m_isScrollingEnabled = true;
|
|
100
117
|
bool m_changeViewAfterLoaded = false;
|
|
101
118
|
bool m_dismissKeyboardOnDrag = false;
|
|
102
119
|
|