react-native-windows 0.73.11 → 0.74.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 +12 -7
- package/Chakra/ChakraUtils.cpp +5 -10
- package/Chakra/ChakraUtils.h +2 -2
- package/Common/packages.lock.json +3 -3
- package/Directory.Build.props +5 -5
- package/Folly/Folly.vcxproj +2 -2
- package/Folly/Folly.vcxproj.filters +7 -0
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +22 -1
- package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +4 -1
- package/Folly/cgmanifest.json +1 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
- package/Libraries/Alert/Alert.windows.js +2 -3
- package/Libraries/Alert/NativeAlertManager.js +4 -26
- package/Libraries/Animated/Animated.js +2 -2
- package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
- package/Libraries/Animated/NativeAnimatedModule.js +4 -68
- package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
- package/Libraries/Animated/animations/Animation.js +6 -22
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
- package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
- package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
- package/Libraries/Animated/createAnimatedComponent.js +45 -40
- package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
- package/Libraries/Animated/useAnimatedProps.js +21 -1
- package/Libraries/AppState/NativeAppState.js +4 -24
- package/Libraries/AppTheme/NativeAppTheme.js +4 -25
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/Blob.js +1 -4
- package/Libraries/Blob/BlobManager.js +6 -8
- package/Libraries/Blob/File.js +1 -1
- package/Libraries/Blob/NativeBlobModule.js +4 -50
- package/Libraries/Blob/NativeFileReaderModule.js +4 -13
- package/Libraries/BugReporting/NativeBugReporting.js +4 -12
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +3 -2
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
- package/Libraries/Components/Button.js +103 -107
- package/Libraries/Components/Button.windows.js +199 -206
- package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
- package/Libraries/Components/Keyboard/KeyboardExt.d.ts +8 -8
- package/Libraries/Components/Keyboard/KeyboardExt.js +27 -27
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +17 -17
- package/Libraries/Components/Keyboard/KeyboardExtProps.js +7 -7
- package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
- package/Libraries/Components/Pressable/Pressable.js +1 -1
- package/Libraries/Components/Pressable/Pressable.windows.js +1 -2
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
- package/Libraries/Components/ScrollView/ScrollView.js +12 -38
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
- package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
- package/Libraries/Components/Switch/Switch.js +0 -2
- package/Libraries/Components/Switch/Switch.windows.js +0 -2
- package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
- package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
- package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
- package/Libraries/Components/TextInput/TextInput.js +65 -32
- package/Libraries/Components/TextInput/TextInput.windows.js +87 -38
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +773 -9
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +2 -3
- package/Libraries/Components/Touchable/Touchable.windows.js +2 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +4 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +5 -2
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
- package/Libraries/Components/View/View.js +0 -11
- package/Libraries/Components/View/View.windows.js +19 -18
- package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
- package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
- package/Libraries/Components/View/ViewPropTypes.js +36 -36
- package/Libraries/Components/View/ViewPropTypes.windows.js +36 -36
- package/Libraries/Core/InitializeCore.js +1 -1
- package/Libraries/Core/NativeExceptionsManager.js +3 -93
- package/Libraries/Core/ReactNativeVersion.js +12 -6
- package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
- package/Libraries/Core/Timers/NativeTiming.js +3 -16
- package/Libraries/Core/registerCallableModule.js +42 -0
- package/Libraries/Core/setUpPerformance.js +2 -2
- package/Libraries/Core/setUpPerformanceObserver.js +3 -1
- package/Libraries/Debugging/DebuggingOverlay.js +111 -0
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
- package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
- package/Libraries/Image/AssetSourceResolver.js +5 -5
- package/Libraries/Image/AssetUtils.js +4 -5
- package/Libraries/Image/Image.android.js +146 -174
- package/Libraries/Image/Image.d.ts +1 -1
- package/Libraries/Image/Image.ios.js +53 -79
- package/Libraries/Image/Image.windows.js +53 -79
- package/Libraries/Image/ImageBackground.js +2 -2
- package/Libraries/Image/ImageInjection.js +76 -18
- package/Libraries/Image/ImageTypes.flow.js +71 -0
- package/Libraries/Image/ImageUtils.js +1 -1
- package/Libraries/Image/ImageViewNativeComponent.js +18 -0
- package/Libraries/Image/NativeImageEditor.js +3 -42
- package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
- package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
- package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
- package/Libraries/Image/NativeImageStoreIOS.js +3 -23
- package/Libraries/Image/resolveAssetSource.js +59 -26
- package/Libraries/Image/resolveAssetSource.windows.js +148 -0
- package/Libraries/Inspector/ElementProperties.js +26 -52
- package/Libraries/Inspector/Inspector.js +122 -186
- package/Libraries/Inspector/InspectorOverlay.js +21 -33
- package/Libraries/Inspector/InspectorPanel.js +3 -17
- package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
- package/Libraries/Interaction/FrameRateLogger.js +8 -18
- package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
- package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
- package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
- package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
- package/Libraries/Linking/NativeIntentAndroid.js +3 -20
- package/Libraries/Linking/NativeLinkingManager.js +3 -17
- package/Libraries/Lists/FillRateHelper.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -2
- package/Libraries/Lists/FlatList.js +6 -1
- package/Libraries/Lists/FlatList.windows.js +717 -0
- package/Libraries/Lists/SectionList.d.ts +6 -1
- package/Libraries/Lists/ViewabilityHelper.js +1 -1
- package/Libraries/Lists/VirtualizeUtils.js +1 -1
- package/Libraries/Lists/VirtualizedList.js +1 -1
- package/Libraries/Lists/VirtualizedListContext.js +1 -1
- package/Libraries/Lists/VirtualizedSectionList.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/Modal/Modal.js +43 -11
- package/Libraries/Modal/NativeModalManager.js +3 -11
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
- package/Libraries/MutationObserver/MutationObserver.js +1 -1
- package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
- package/Libraries/MutationObserver/MutationRecord.js +12 -10
- package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
- package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
- package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
- package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
- package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +11 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
- package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
- package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
- package/Libraries/Network/FormData.js +3 -1
- package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
- package/Libraries/Network/NativeNetworkingIOS.js +4 -28
- package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +4 -2
- package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +3 -1
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
- package/Libraries/Pressability/Pressability.js +12 -2
- package/Libraries/Pressability/Pressability.windows.js +13 -3
- package/Libraries/Pressability/usePressability.js +7 -0
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
- package/Libraries/ReactNative/AppContainer-dev.js +192 -0
- package/Libraries/ReactNative/AppContainer-prod.js +53 -0
- package/Libraries/ReactNative/AppContainer.js +6 -149
- package/Libraries/ReactNative/AppRegistry.js +3 -1
- package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
- package/Libraries/ReactNative/FabricUIManager.js +6 -0
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
- package/Libraries/ReactNative/NativeI18nManager.js +3 -18
- package/Libraries/ReactNative/NativeUIManager.js +4 -112
- package/Libraries/ReactNative/PaperUIManager.js +8 -7
- package/Libraries/ReactNative/PaperUIManager.windows.js +29 -8
- package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
- package/Libraries/ReactNative/RendererImplementation.js +11 -0
- package/Libraries/ReactNative/UIManager.d.ts +11 -34
- package/Libraries/ReactNative/UIManager.js +2 -23
- package/Libraries/ReactNative/UIManagerProperties.js +0 -2
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
- package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
- package/Libraries/ReactNative/renderApplication.js +9 -6
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
- package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
- package/Libraries/Settings/NativeSettingsManager.js +4 -16
- package/Libraries/Share/NativeShareModule.js +3 -13
- package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
- package/Libraries/StyleSheet/StyleSheet.js +5 -28
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
- package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
- package/Libraries/StyleSheet/flattenStyle.js +2 -2
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +1 -1
- package/Libraries/StyleSheet/processFontVariant.js +1 -1
- package/Libraries/Text/Text.js +0 -6
- package/Libraries/Text/Text.windows.js +0 -6
- package/Libraries/Text/TextAncestor.js +2 -3
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
- package/Libraries/Types/ReactDevToolsTypes.js +58 -0
- package/Libraries/Types/UIManagerJSInterface.js +16 -0
- package/Libraries/Utilities/DebugEnvironment.js +1 -4
- package/Libraries/Utilities/Dimensions.js +8 -16
- package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
- package/Libraries/Utilities/NativeAppearance.js +3 -26
- package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
- package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
- package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
- package/Libraries/Utilities/PixelRatio.d.ts +4 -4
- package/Libraries/Utilities/Platform.android.js +4 -0
- package/Libraries/Utilities/Platform.d.ts +3 -0
- package/Libraries/Utilities/Platform.flow.js +7 -0
- package/Libraries/Utilities/Platform.flow.windows.js +9 -0
- package/Libraries/Utilities/Platform.ios.js +11 -0
- package/Libraries/Utilities/Platform.windows.js +6 -0
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeComponent.js +4 -6
- package/Libraries/Utilities/createPerformanceLogger.js +2 -74
- package/Libraries/Utilities/useMergeRefs.js +5 -9
- package/Libraries/Vibration/NativeVibration.js +3 -14
- package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +1 -0
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +50 -0
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +23 -0
- package/Microsoft.ReactNative/Base/CoreUIManagers.cpp +4 -0
- package/Microsoft.ReactNative/Base/CxxReactIncludes.h +1 -1
- package/Microsoft.ReactNative/Base/FollyIncludes.h +2 -2
- package/Microsoft.ReactNative/ComponentView.idl +106 -0
- package/Microsoft.ReactNative/Composition.Input.idl +16 -2
- package/Microsoft.ReactNative/CompositionComponentView.idl +117 -0
- package/Microsoft.ReactNative/CompositionContext.idl +1 -1
- package/Microsoft.ReactNative/CompositionRootView.idl +8 -0
- package/Microsoft.ReactNative/CompositionSwitcher.idl +25 -14
- package/Microsoft.ReactNative/DevMenuControl.idl +0 -3
- package/Microsoft.ReactNative/DevMenuControl.xaml +0 -15
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +189 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +80 -0
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +83 -0
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +83 -0
- package/Microsoft.ReactNative/Fabric/AbiState.cpp +71 -0
- package/Microsoft.ReactNative/Fabric/AbiState.h +38 -0
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +48 -19
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +8 -16
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +97 -0
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +39 -0
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +90 -0
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +87 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.cpp +340 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.h +130 -64
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +48 -24
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +18 -14
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +42 -27
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +3 -1
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +123 -28
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +69 -13
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +651 -284
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +7 -7
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +9 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +120 -31
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +12 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +308 -129
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +34 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +61 -54
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +0 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +99 -30
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +4 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +273 -28
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +28 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +7 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +4 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +479 -280
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +133 -79
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +113 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +61 -41
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +19 -14
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentDescriptor.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +343 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +67 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.h +39 -0
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +53 -186
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +20 -12
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +59 -150
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +27 -76
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +81 -32
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +27 -14
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +707 -64
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +47 -26
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +225 -125
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +34 -21
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +179 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.h +25 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +110 -115
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +228 -79
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +43 -22
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +4 -44
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +11 -9
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +550 -0
- package/Microsoft.ReactNative/Fabric/Composition/Theme.h +73 -0
- package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +85 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +48 -26
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +6 -2
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +30 -65
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +16 -25
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +72 -88
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +5 -2
- package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +3 -2
- package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.cpp +6 -6
- package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.h +2 -2
- package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +12 -7
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +28 -19
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +0 -2
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +5 -1
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +2 -4
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Float.h +20 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +86 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorParser.h +38 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/{Color.cpp → PlatformColorUtils.cpp} +7 -77
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +12 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +2 -0
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +6 -87
- package/Microsoft.ReactNative/IReactContext.idl +3 -0
- package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +71 -1
- package/Microsoft.ReactNative/JsiApi.cpp +17 -7
- package/Microsoft.ReactNative/JsiApi.h +2 -2
- package/Microsoft.ReactNative/JsiApi.idl +5 -4
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -22
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +6 -2
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
- package/Microsoft.ReactNative/Modules/AlertModule.h +2 -2
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +12 -8
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.h +1 -1
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +5 -3
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +4 -4
- package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +10 -1
- package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +71 -38
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +5 -5
- package/Microsoft.ReactNative/Modules/ExceptionsManager.cpp +110 -0
- package/Microsoft.ReactNative/Modules/ExceptionsManager.h +54 -0
- package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +11 -10
- package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +8 -6
- package/Microsoft.ReactNative/Modules/LogBoxModule.h +3 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +5 -28
- package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +8 -5
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +3 -3
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +49 -0
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +18 -0
- package/Microsoft.ReactNative/Modules/SourceCode.cpp +31 -0
- package/Microsoft.ReactNative/Modules/SourceCode.h +28 -0
- package/Microsoft.ReactNative/Modules/StatusBarManager.h +12 -0
- package/Microsoft.ReactNative/Modules/Timing.cpp +325 -0
- package/Microsoft.ReactNative/Modules/Timing.h +121 -0
- package/Microsoft.ReactNative/QuirkSettings.cpp +32 -0
- package/Microsoft.ReactNative/QuirkSettings.h +9 -0
- package/Microsoft.ReactNative/QuirkSettings.idl +6 -0
- package/Microsoft.ReactNative/ReactCoreInjection.cpp +15 -0
- package/Microsoft.ReactNative/ReactCoreInjection.h +4 -0
- package/Microsoft.ReactNative/ReactCoreInjection.idl +8 -0
- package/Microsoft.ReactNative/ReactHost/IReactInstance.h +1 -1
- package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +1 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +556 -234
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +36 -9
- package/Microsoft.ReactNative/ReactInstanceSettings.idl +3 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +8 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.h +4 -0
- package/Microsoft.ReactNative/ReactPointerEventArgs.idl +12 -0
- package/Microsoft.ReactNative/SchedulerSettings.cpp +23 -0
- package/Microsoft.ReactNative/SchedulerSettings.h +9 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +41 -0
- package/Microsoft.ReactNative/SynchronousEventBeat.h +29 -0
- package/Microsoft.ReactNative/Theme.idl +57 -0
- package/Microsoft.ReactNative/Timer.cpp +63 -0
- package/Microsoft.ReactNative/{CoreAppPage.h → Timer.h} +12 -5
- package/Microsoft.ReactNative/Timer.idl +34 -0
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +4 -0
- package/Microsoft.ReactNative/Utils/ImageUtils.cpp +37 -3
- package/Microsoft.ReactNative/Utils/ImageUtils.h +0 -1
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +11 -12
- package/Microsoft.ReactNative/Utils/LocalBundleReader.h +3 -3
- package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +33 -0
- package/Microsoft.ReactNative/Utils/ThemeUtils.h +13 -0
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +0 -5
- package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -3
- package/Microsoft.ReactNative/ViewProps.idl +17 -0
- package/Microsoft.ReactNative/Views/ActivityIndicatorViewManager.cpp +1 -0
- package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.cpp +54 -0
- package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.h +30 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -20
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +157 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +5 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +20 -0
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +4 -0
- package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +1 -5
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +137 -0
- package/Microsoft.ReactNative/Views/ICompositionRootView.h +0 -1
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +0 -5
- package/Microsoft.ReactNative/Views/PopupViewManager.cpp +1 -5
- package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +11 -0
- package/Microsoft.ReactNative/Views/ShadowNodeBase.h +3 -4
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +0 -6
- package/Microsoft.ReactNative/Views/TextViewManager.cpp +0 -11
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
- package/Microsoft.ReactNative/Views/UnimplementedViewManager.cpp +79 -0
- package/Microsoft.ReactNative/Views/UnimplementedViewManager.h +27 -0
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +46 -0
- package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
- package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +77 -2
- package/Microsoft.ReactNative/microsoft.reactnative.def +0 -3
- package/Microsoft.ReactNative/packages.lock.json +9 -6
- package/{Shared/Composition → Microsoft.ReactNative.Cxx}/AutoDraw.h +2 -0
- package/{Shared/Composition → Microsoft.ReactNative.Cxx}/CompositionSwitcher.interop.h +4 -10
- package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -5
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +5 -0
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +19 -10
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +2 -0
- package/Microsoft.ReactNative.Cxx/JSValueComposition.h +22 -0
- package/Microsoft.ReactNative.Cxx/JSValueReader.h +19 -0
- package/Microsoft.ReactNative.Cxx/JSValueXaml.h +1 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +6 -4
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +0 -1
- package/Microsoft.ReactNative.Cxx/NativeModules.h +15 -15
- package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +1 -1
- package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +2 -0
- package/Microsoft.ReactNative.Managed/packages.lock.json +6 -3
- package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +0 -1
- package/Mso/future/details/executor.h +1 -1
- package/Mso/src/debugAssertApi/debugAssertApi.cpp +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +8 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.props +24 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.targets +20 -0
- package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +2 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/JSEngine.props +0 -8
- package/PropertySheets/React.Cpp.props +14 -3
- package/PropertySheets/ReactCommunity.cpp.props +2 -2
- package/PropertySheets/Release.props +0 -1
- package/PropertySheets/WinUI.props +21 -1
- package/PropertySheets/x64.props +3 -0
- package/PropertySheets/x86.props +3 -0
- package/ReactCommon/ReactCommon.vcxproj +13 -8
- package/ReactCommon/ReactCommon.vcxproj.filters +12 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +114 -19
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +66 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +114 -52
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +13 -15
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +535 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +437 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +39 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +31 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +19 -24
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +600 -980
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +5 -11
- package/ReactCommon/cgmanifest.json +1 -1
- package/Scripts/EnableInternalWinAppSDKFeed.ps1 +21 -0
- package/Scripts/IntegrationTests.ps1 +26 -15
- package/Scripts/Microsoft.ReactNative.targets +0 -6
- package/Scripts/OfficeReact.Win32.nuspec +1 -2
- package/Scripts/TestServers.ps1 +2 -28
- package/Scripts/Tfs/Start-TestServers.ps1 +1 -21
- package/Scripts/Tfs/Stop-TestServers.ps1 +0 -5
- package/Scripts/rnw-dependencies.ps1 +38 -67
- package/Shared/CreateInstance.h +25 -0
- package/Shared/DevServerHelper.h +0 -3
- package/Shared/DevSettings.h +9 -0
- package/Shared/HermesRuntimeHolder.cpp +17 -0
- package/Shared/HermesRuntimeHolder.h +17 -0
- package/Shared/HermesSamplingProfiler.cpp +12 -10
- package/Shared/HermesSamplingProfiler.h +5 -4
- package/Shared/IDevSupportManager.h +4 -2
- package/Shared/InstanceManager.cpp +13 -11
- package/Shared/InstanceManager.h +8 -18
- package/Shared/JSI/ChakraRuntime.cpp +66 -9
- package/Shared/JSI/ChakraRuntime.h +8 -0
- package/Shared/JSI/JSExecutorFactoryDelegate.h +12 -0
- package/Shared/JSI/JSExecutorFactorySettings.cpp +30 -0
- package/Shared/JSI/JSExecutorFactorySettings.h +21 -0
- package/Shared/Modules/BlobModule.h +1 -1
- package/Shared/Modules/FileReaderModule.h +1 -1
- package/Shared/Modules/HttpModule.h +1 -1
- package/Shared/Modules/WebSocketTurboModule.h +1 -1
- package/Shared/OInstance.cpp +212 -165
- package/Shared/OInstance.h +19 -0
- package/Shared/Shared.vcxitems +134 -50
- package/Shared/Shared.vcxitems.filters +81 -24
- package/Shared/Utils.cpp +12 -10
- package/Shared/Utils.h +2 -2
- package/Shared/WebSocketJSExecutorFactory.h +1 -0
- package/codegen/NativeBugReportingSpec.g.h +0 -6
- package/codegen/NativeFrameRateLoggerSpec.g.h +0 -2
- package/codegen/NativeImageLoaderAndroidSpec.g.h +10 -23
- package/codegen/NativePerformanceObserverSpec.g.h +6 -0
- package/codegen/NativePlatformConstantsIOSSpec.g.h +2 -0
- package/codegen/NativePlatformConstantsWinSpec.g.h +17 -0
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +8 -6
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +88 -0
- package/codegen/NativeUIManagerSpec.g.h +83 -95
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +10 -7
- package/codegen/react/components/rnwcore/EventEmitters.cpp +40 -52
- package/codegen/react/components/rnwcore/EventEmitters.h +66 -84
- package/codegen/react/components/rnwcore/Props.cpp +60 -95
- package/codegen/react/components/rnwcore/Props.h +198 -239
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +6 -7
- package/codegen/react/components/rnwcore/ShadowNodes.h +38 -29
- package/codegen/react/components/rnwcore/States.cpp +3 -5
- package/codegen/react/components/rnwcore/States.h +29 -16
- package/codegen/rnwcoreJSI-generated.cpp +1442 -1398
- package/codegen/rnwcoreJSI.h +6066 -3593
- package/index.js +66 -99
- package/index.windows.js +60 -102
- package/jest/assetFileTransformer.js +1 -1
- package/jest/local-setup.js +0 -5
- package/jest/mockModal.js +2 -1
- package/jest/mockScrollView.js +1 -2
- package/jest/renderer.js +1 -1
- package/jest/setup.js +6 -3
- package/just-task.js +1 -1
- package/package.json +30 -29
- package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
- package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
- package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
- package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
- package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
- package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
- package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
- package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
- package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
- package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
- package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
- package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
- package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
- package/src/private/specs/components/SwitchNativeComponent.js +61 -0
- package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
- package/src/private/specs/modules/NativeAlertManager.js +35 -0
- package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
- package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
- package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
- package/src/private/specs/modules/NativeAppState.js +33 -0
- package/src/private/specs/modules/NativeAppTheme.js +33 -0
- package/src/private/specs/modules/NativeAppearance.js +36 -0
- package/src/private/specs/modules/NativeBlobModule.js +59 -0
- package/src/private/specs/modules/NativeBugReporting.js +20 -0
- package/src/private/specs/modules/NativeClipboard.js +21 -0
- package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
- package/src/private/specs/modules/NativeDevMenu.js +23 -0
- package/src/private/specs/modules/NativeDevSettings.js +33 -0
- package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
- package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
- package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
- package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
- package/{Libraries/Alert → src/private/specs/modules}/NativeDialogManagerWindows.js +5 -4
- package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
- package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
- package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
- package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
- package/src/private/specs/modules/NativeI18nManager.js +28 -0
- package/src/private/specs/modules/NativeImageEditor.js +52 -0
- package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
- package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
- package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
- package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
- package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
- package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
- package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
- package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
- package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
- package/src/private/specs/modules/NativeLinkingManager.js +27 -0
- package/src/private/specs/modules/NativeLogBox.js +20 -0
- package/src/private/specs/modules/NativeModalManager.js +21 -0
- package/src/private/specs/modules/NativeMutationObserver.js +58 -0
- package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
- package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
- package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
- package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
- package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
- package/src/private/specs/modules/NativePlatformConstantsWin.js +38 -0
- package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
- package/src/private/specs/modules/NativeRedBox.js +20 -0
- package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
- package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
- package/src/private/specs/modules/NativeSettingsManager.js +25 -0
- package/src/private/specs/modules/NativeShareModule.js +23 -0
- package/src/private/specs/modules/NativeSoundManager.js +22 -0
- package/src/private/specs/modules/NativeSourceCode.js +36 -0
- package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
- package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
- package/src/private/specs/modules/NativeTiming.js +26 -0
- package/src/private/specs/modules/NativeToastAndroid.js +38 -0
- package/src/private/specs/modules/NativeUIManager.js +118 -0
- package/src/private/specs/modules/NativeVibration.js +24 -0
- package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
- package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
- package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
- package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
- package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
- package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
- package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
- package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
- package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
- package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
- package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
- package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
- package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
- package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
- package/template/cpp-app/src/App.cpp +2 -2
- package/template/cs-app/src/App.xaml.cs +2 -2
- package/templates/cpp-app/jest.config.windows.js +3 -0
- package/templates/cpp-app/metro.config.js +0 -2
- package/templates/cpp-app/template.config.js +24 -9
- package/templates/cpp-app/windows/ExperimentalFeatures.props +1 -1
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.cpp +13 -0
- package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.h +10 -0
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +134 -249
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +12 -11
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +6 -3
- package/templates/cpp-app/windows/MyApp/pch.h +12 -9
- package/templates/cpp-app/windows/MyApp/resource.h +0 -1
- package/templates/cpp-app/windows/MyApp.sln +26 -26
- package/templates/cpp-lib/example/metro.config.js +74 -0
- package/templates/cpp-lib/template.config.js +235 -0
- package/templates/cpp-lib/windows/ExperimentalFeatures.props +11 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.cpp +18 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.def +3 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.h +31 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.rc +0 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +148 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj.filters +44 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.cpp +20 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.h +24 -0
- package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.idl +9 -0
- package/templates/cpp-lib/windows/MyLib/pch.cpp +1 -0
- package/templates/cpp-lib/windows/MyLib/pch.h +30 -0
- package/templates/cpp-lib/windows/MyLib/resource.h +5 -0
- package/templates/cpp-lib/windows/MyLib/targetver.h +8 -0
- package/templates/cpp-lib/windows/MyLib.sln +156 -0
- package/templates/cpp-lib/windows/_gitignore +41 -0
- package/templates/templateUtils.js +137 -0
- package/types/modules/globals.d.ts +1 -0
- package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +0 -1016
- package/Libraries/Components/Button.flow.js +0 -265
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.windows.js +0 -8
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +0 -14
- package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +0 -34
- package/Libraries/Components/ScrollView/ScrollView.windows.js +0 -1941
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
- package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +0 -45
- package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
- package/Libraries/Image/Image.flow.js +0 -64
- package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
- package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
- package/Libraries/Settings/Settings.windows.js +0 -28
- package/Microsoft.ReactNative/CoreApp.cpp +0 -303
- package/Microsoft.ReactNative/CoreAppPage.cpp +0 -21
- package/Microsoft.ReactNative/CoreAppPage.idl +0 -12
- package/Microsoft.ReactNative/CoreAppPage.xaml +0 -14
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +0 -197
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +0 -84
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/EventEmitters.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/Props.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/ShadowNodes.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/States.h +0 -5
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +0 -245
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +0 -134
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +0 -27
- package/Microsoft.ReactNative/Modules/TimingModule.cpp +0 -229
- package/Microsoft.ReactNative/Modules/TimingModule.h +0 -88
- package/Microsoft.ReactNative.Cxx/CoreApp.h +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.cpp +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.h +0 -60
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +0 -63
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +0 -1038
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +0 -503
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +0 -895
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBufferBuilder.cpp +0 -182
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +0 -543
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +0 -1505
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +0 -67
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -93
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -88
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -606
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +0 -344
- package/ReactCommon/Yoga.cpp +0 -961
- /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
- /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
- /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
- /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
- /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
- /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
#include "CompositionViewComponentView.h"
|
|
8
8
|
|
|
9
|
+
#include <Fabric/AbiState.h>
|
|
10
|
+
#include <Fabric/AbiViewProps.h>
|
|
11
|
+
#include <Fabric/Composition/CompositionRootView.h>
|
|
12
|
+
#include <Fabric/FabricUIManagerModule.h>
|
|
9
13
|
#include <UI.Xaml.Controls.h>
|
|
10
14
|
#include <Utils/KeyboardUtils.h>
|
|
11
15
|
#include <Utils/ValueUtils.h>
|
|
@@ -15,82 +19,163 @@
|
|
|
15
19
|
#include "CompositionDynamicAutomationProvider.h"
|
|
16
20
|
#include "CompositionHelpers.h"
|
|
17
21
|
#include "RootComponentView.h"
|
|
22
|
+
#include "Theme.h"
|
|
18
23
|
#include "UiaHelpers.h"
|
|
19
24
|
#include "d2d1helper.h"
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
#include "Composition.ComponentView.g.cpp"
|
|
27
|
+
#include "Composition.ViewComponentView.g.cpp"
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
30
|
+
|
|
31
|
+
CreateCompositionComponentViewArgs::CreateCompositionComponentViewArgs(
|
|
32
|
+
const winrt::Microsoft::ReactNative::IReactContext &reactContext,
|
|
33
|
+
facebook::react::Tag tag,
|
|
34
|
+
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compositionContext)
|
|
35
|
+
: base_type(reactContext, tag), m_compositionContext(compositionContext){};
|
|
36
|
+
|
|
37
|
+
winrt::Microsoft::ReactNative::Composition::ICompositionContext CreateCompositionComponentViewArgs::CompositionContext()
|
|
38
|
+
const noexcept {
|
|
39
|
+
return m_compositionContext;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
ComponentViewFeatures CreateCompositionComponentViewArgs::Features() const noexcept {
|
|
43
|
+
return m_features;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void CreateCompositionComponentViewArgs::Features(ComponentViewFeatures value) noexcept {
|
|
47
|
+
m_features = value;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
ComponentView::ComponentView(const winrt::Microsoft::ReactNative::Composition::CreateCompositionComponentViewArgs &args)
|
|
51
|
+
: ComponentView(args.CompositionContext(), args.Tag(), args.ReactContext(), args.Features(), true) {}
|
|
52
|
+
|
|
53
|
+
ComponentView::ComponentView(
|
|
24
54
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
25
|
-
facebook::react::Tag tag
|
|
26
|
-
|
|
55
|
+
facebook::react::Tag tag,
|
|
56
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext,
|
|
57
|
+
ComponentViewFeatures flags,
|
|
58
|
+
bool customControl)
|
|
59
|
+
: base_type(tag, reactContext, customControl), m_compContext(compContext), m_flags(flags) {
|
|
27
60
|
m_outerVisual = compContext.CreateSpriteVisual(); // TODO could be a raw ContainerVisual if we had a
|
|
28
61
|
// CreateContainerVisual in ICompositionContext
|
|
29
62
|
m_focusVisual = compContext.CreateFocusVisual();
|
|
30
63
|
m_outerVisual.InsertAt(m_focusVisual.InnerVisual(), 0);
|
|
31
64
|
}
|
|
32
65
|
|
|
33
|
-
facebook::react::Tag
|
|
66
|
+
facebook::react::Tag ComponentView::Tag() const noexcept {
|
|
34
67
|
return m_tag;
|
|
35
68
|
}
|
|
36
69
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
70
|
+
facebook::react::Props::Shared ComponentView::props() noexcept {
|
|
71
|
+
return viewProps();
|
|
72
|
+
}
|
|
40
73
|
|
|
41
|
-
|
|
74
|
+
void ComponentView::onThemeChanged() noexcept {
|
|
75
|
+
if ((m_flags & ComponentViewFeatures::Background) == ComponentViewFeatures::Background) {
|
|
76
|
+
if (viewProps()->backgroundColor) {
|
|
77
|
+
Visual().as<ISpriteVisual>().Brush(theme()->Brush(*viewProps()->backgroundColor));
|
|
78
|
+
} else {
|
|
79
|
+
Visual().as<ISpriteVisual>().Brush(nullptr);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
|
|
84
|
+
m_needsBorderUpdate = true;
|
|
85
|
+
finalizeBorderUpdates(m_layoutMetrics, *viewProps());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if ((m_flags & ComponentViewFeatures::ShadowProps) == ComponentViewFeatures::ShadowProps) {
|
|
89
|
+
applyShadowProps(*viewProps());
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
base_type::onThemeChanged();
|
|
93
|
+
|
|
94
|
+
if (m_customComponent) {
|
|
95
|
+
// Review is it expected that I need this cast to call overridden methods?
|
|
96
|
+
winrt::Microsoft::ReactNative::Composition::ComponentView outer(*this);
|
|
97
|
+
outer.OnThemeChanged();
|
|
98
|
+
}
|
|
42
99
|
}
|
|
43
100
|
|
|
44
|
-
|
|
45
|
-
|
|
101
|
+
void ComponentView::OnThemeChanged() noexcept {}
|
|
102
|
+
|
|
103
|
+
void ComponentView::Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept {
|
|
104
|
+
theme(winrt::get_self<winrt::Microsoft::ReactNative::Composition::implementation::Theme>(value));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
winrt::Microsoft::ReactNative::Composition::Theme ComponentView::Theme() const noexcept {
|
|
108
|
+
return theme()->get_strong().as<winrt::Microsoft::ReactNative::Composition::Theme>();
|
|
46
109
|
}
|
|
47
110
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
111
|
+
winrt::Microsoft::ReactNative::Composition::ICompositionContext ComponentView::CompositionContext() const noexcept {
|
|
112
|
+
return m_compContext;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void ComponentView::updateProps(
|
|
116
|
+
facebook::react::Props::Shared const &props,
|
|
117
|
+
facebook::react::Props::Shared const &oldProps) noexcept {
|
|
118
|
+
const auto &oldViewProps = *viewProps();
|
|
119
|
+
const auto &newViewProps = *std::static_pointer_cast<const facebook::react::ViewProps>(props);
|
|
120
|
+
|
|
121
|
+
if ((m_flags & ComponentViewFeatures::Background) == ComponentViewFeatures::Background) {
|
|
122
|
+
if (oldViewProps.backgroundColor != newViewProps.backgroundColor) {
|
|
123
|
+
if (newViewProps.backgroundColor) {
|
|
124
|
+
Visual().as<ISpriteVisual>().Brush(theme()->Brush(*newViewProps.backgroundColor));
|
|
125
|
+
} else {
|
|
126
|
+
Visual().as<ISpriteVisual>().Brush(nullptr);
|
|
127
|
+
}
|
|
53
128
|
}
|
|
54
129
|
}
|
|
55
130
|
|
|
56
|
-
|
|
131
|
+
if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
|
|
132
|
+
updateBorderProps(oldViewProps, newViewProps);
|
|
133
|
+
}
|
|
134
|
+
if ((m_flags & ComponentViewFeatures::ShadowProps) == ComponentViewFeatures::ShadowProps) {
|
|
135
|
+
updateShadowProps(oldViewProps, newViewProps);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
base_type::updateProps(props, oldProps);
|
|
57
139
|
}
|
|
58
140
|
|
|
59
|
-
|
|
60
|
-
|
|
141
|
+
void ComponentView::updateLayoutMetrics(
|
|
142
|
+
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
143
|
+
facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
|
|
144
|
+
if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
|
|
145
|
+
updateBorderLayoutMetrics(layoutMetrics, *viewProps());
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
m_layoutMetrics = layoutMetrics;
|
|
149
|
+
UpdateCenterPropertySet();
|
|
150
|
+
|
|
151
|
+
base_type::updateLayoutMetrics(layoutMetrics, oldLayoutMetrics);
|
|
61
152
|
}
|
|
62
153
|
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
if (fn(**it))
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
for (auto it = m_children.rbegin(); it != m_children.rend(); ++it) {
|
|
71
|
-
if (fn(**it))
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
154
|
+
void ComponentView::FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept {
|
|
155
|
+
if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
|
|
156
|
+
finalizeBorderUpdates(m_layoutMetrics, *viewProps());
|
|
74
157
|
}
|
|
75
|
-
|
|
158
|
+
|
|
159
|
+
base_type::FinalizeUpdates(updateMask);
|
|
76
160
|
}
|
|
77
161
|
|
|
78
|
-
void
|
|
162
|
+
void ComponentView::onFocusLost() noexcept {
|
|
79
163
|
m_eventEmitter->onBlur();
|
|
80
164
|
showFocusVisual(false);
|
|
81
|
-
if (
|
|
165
|
+
if (m_uiaProvider) {
|
|
82
166
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
83
|
-
|
|
167
|
+
m_uiaProvider, UIA_HasKeyboardFocusPropertyId, true, false);
|
|
84
168
|
}
|
|
169
|
+
base_type::onFocusLost();
|
|
85
170
|
}
|
|
86
171
|
|
|
87
|
-
void
|
|
172
|
+
void ComponentView::onFocusGained() noexcept {
|
|
88
173
|
m_eventEmitter->onFocus();
|
|
89
174
|
if (m_enableFocusVisual) {
|
|
90
175
|
showFocusVisual(true);
|
|
91
176
|
}
|
|
92
|
-
if (
|
|
93
|
-
auto spProviderSimple =
|
|
177
|
+
if (m_uiaProvider) {
|
|
178
|
+
auto spProviderSimple = m_uiaProvider.try_as<IRawElementProviderSimple>();
|
|
94
179
|
if (spProviderSimple != nullptr) {
|
|
95
180
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
96
181
|
m_uiaProvider, UIA_HasKeyboardFocusPropertyId, false, true);
|
|
@@ -99,9 +184,11 @@ void CompositionBaseComponentView::onFocusGained() noexcept {
|
|
|
99
184
|
}
|
|
100
185
|
|
|
101
186
|
StartBringIntoView({});
|
|
187
|
+
base_type::onFocusGained();
|
|
102
188
|
}
|
|
103
189
|
|
|
104
|
-
void
|
|
190
|
+
void ComponentView::StartBringIntoView(
|
|
191
|
+
winrt::Microsoft::ReactNative::implementation::BringIntoViewOptions &&options) noexcept {
|
|
105
192
|
if (!options.TargetRect) {
|
|
106
193
|
// Default to bring the entire of this component into view
|
|
107
194
|
options.TargetRect = {
|
|
@@ -113,23 +200,25 @@ void CompositionBaseComponentView::StartBringIntoView(BringIntoViewOptions &&opt
|
|
|
113
200
|
if (m_parent) {
|
|
114
201
|
options.TargetRect->origin.y += m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor;
|
|
115
202
|
options.TargetRect->origin.x += m_layoutMetrics.frame.origin.x * m_layoutMetrics.pointScaleFactor;
|
|
116
|
-
m_parent->StartBringIntoView(
|
|
203
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(m_parent)->StartBringIntoView(
|
|
204
|
+
std::move(options));
|
|
117
205
|
}
|
|
118
206
|
}
|
|
119
207
|
|
|
120
|
-
void
|
|
121
|
-
facebook::react::EventEmitter::Shared const &eventEmitter) noexcept {
|
|
208
|
+
void ComponentView::updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept {
|
|
122
209
|
m_eventEmitter = std::static_pointer_cast<facebook::react::ViewEventEmitter const>(eventEmitter);
|
|
123
210
|
}
|
|
124
211
|
|
|
125
|
-
void
|
|
126
|
-
|
|
212
|
+
void ComponentView::HandleCommand(
|
|
213
|
+
winrt::hstring commandName,
|
|
214
|
+
const winrt::Microsoft::ReactNative::IJSValueReader &args) noexcept {
|
|
215
|
+
if (commandName == L"focus") {
|
|
127
216
|
if (auto root = rootComponentView()) {
|
|
128
|
-
root->SetFocusedComponent(
|
|
217
|
+
root->SetFocusedComponent(*get_strong());
|
|
129
218
|
}
|
|
130
219
|
return;
|
|
131
220
|
}
|
|
132
|
-
if (commandName == "blur") {
|
|
221
|
+
if (commandName == L"blur") {
|
|
133
222
|
if (auto root = rootComponentView()) {
|
|
134
223
|
root->SetFocusedComponent(nullptr); // Todo store this component as previously focused element
|
|
135
224
|
}
|
|
@@ -138,89 +227,76 @@ void CompositionBaseComponentView::handleCommand(std::string const &commandName,
|
|
|
138
227
|
assert(false); // Unhandled command
|
|
139
228
|
}
|
|
140
229
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
void CompositionBaseComponentView::onKeyDown(
|
|
146
|
-
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
147
|
-
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
148
|
-
if (m_parent && !args.Handled()) {
|
|
149
|
-
m_parent->onKeyDown(source, args);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
230
|
+
bool ComponentView::CapturePointer(const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer) noexcept {
|
|
231
|
+
auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_reactContext.Properties());
|
|
232
|
+
if (uiManager == nullptr)
|
|
233
|
+
return false;
|
|
152
234
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (m_parent && !args.Handled()) {
|
|
157
|
-
m_parent->onKeyUp(source, args);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
235
|
+
auto root = rootComponentView();
|
|
236
|
+
if (!root)
|
|
237
|
+
return false;
|
|
160
238
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
m_parent->onPointerEntered(args);
|
|
239
|
+
auto rootView = uiManager->GetCompositionRootView(root->Tag());
|
|
240
|
+
if (!rootView) {
|
|
241
|
+
return false;
|
|
165
242
|
}
|
|
166
|
-
}
|
|
167
243
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (m_parent && !args.Handled()) {
|
|
171
|
-
m_parent->onPointerExited(args);
|
|
172
|
-
}
|
|
244
|
+
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(rootView)->CapturePointer(
|
|
245
|
+
pointer, static_cast<facebook::react::Tag>(Tag()));
|
|
173
246
|
}
|
|
174
247
|
|
|
175
|
-
void
|
|
176
|
-
const winrt::Microsoft::ReactNative::Composition::Input::
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
248
|
+
void ComponentView::ReleasePointerCapture(
|
|
249
|
+
const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer) noexcept {
|
|
250
|
+
auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_reactContext.Properties());
|
|
251
|
+
if (uiManager == nullptr)
|
|
252
|
+
return;
|
|
181
253
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
m_parent->onPointerReleased(args);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
254
|
+
auto root = rootComponentView();
|
|
255
|
+
if (!root)
|
|
256
|
+
return;
|
|
188
257
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
m_parent->onPointerMoved(args);
|
|
258
|
+
auto rootView = uiManager->GetCompositionRootView(root->Tag());
|
|
259
|
+
if (!rootView) {
|
|
260
|
+
return;
|
|
193
261
|
}
|
|
194
|
-
}
|
|
195
262
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (m_parent && !args.Handled()) {
|
|
199
|
-
m_parent->onPointerWheelChanged(args);
|
|
200
|
-
}
|
|
263
|
+
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(rootView)
|
|
264
|
+
->ReleasePointerCapture(pointer, static_cast<facebook::react::Tag>(Tag()));
|
|
201
265
|
}
|
|
202
266
|
|
|
203
|
-
RECT
|
|
267
|
+
RECT ComponentView::getClientRect() const noexcept {
|
|
204
268
|
RECT rc{0};
|
|
269
|
+
facebook::react::Point parentOffset{0};
|
|
205
270
|
if (m_parent) {
|
|
206
|
-
|
|
271
|
+
parentOffset =
|
|
272
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(m_parent)->getClientOffset();
|
|
207
273
|
}
|
|
208
274
|
|
|
209
|
-
rc.left
|
|
210
|
-
rc.top += static_cast<LONG>(m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor);
|
|
275
|
+
rc.left = static_cast<LONG>((m_layoutMetrics.frame.origin.x * m_layoutMetrics.pointScaleFactor) + parentOffset.x);
|
|
276
|
+
rc.top += static_cast<LONG>((m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor) + parentOffset.y);
|
|
211
277
|
rc.right = rc.left + static_cast<LONG>(m_layoutMetrics.frame.size.width * m_layoutMetrics.pointScaleFactor);
|
|
212
278
|
rc.bottom = rc.top + static_cast<LONG>(m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor);
|
|
213
279
|
return rc;
|
|
214
280
|
}
|
|
215
281
|
|
|
216
|
-
|
|
282
|
+
facebook::react::Point ComponentView::getClientOffset() const noexcept {
|
|
283
|
+
facebook::react::Point parentOffset{0};
|
|
284
|
+
if (m_parent) {
|
|
285
|
+
parentOffset =
|
|
286
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(m_parent)->getClientOffset();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return {
|
|
290
|
+
(m_layoutMetrics.frame.origin.x * m_layoutMetrics.pointScaleFactor) + parentOffset.x,
|
|
291
|
+
(m_layoutMetrics.frame.origin.y * m_layoutMetrics.pointScaleFactor) + parentOffset.y};
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const facebook::react::SharedViewEventEmitter &ComponentView::GetEventEmitter() const noexcept {
|
|
217
295
|
return m_eventEmitter;
|
|
218
296
|
}
|
|
219
297
|
|
|
220
|
-
std::array<
|
|
221
|
-
|
|
222
|
-
CompositionBaseComponentView::SpecialBorderLayerCount>
|
|
223
|
-
CompositionBaseComponentView::FindSpecialBorderLayers() const noexcept {
|
|
298
|
+
std::array<winrt::Microsoft::ReactNative::Composition::ISpriteVisual, ComponentView::SpecialBorderLayerCount>
|
|
299
|
+
ComponentView::FindSpecialBorderLayers() const noexcept {
|
|
224
300
|
std::array<winrt::Microsoft::ReactNative::Composition::ISpriteVisual, SpecialBorderLayerCount> layers{
|
|
225
301
|
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr};
|
|
226
302
|
|
|
@@ -257,7 +333,7 @@ static winrt::com_ptr<ID2D1PathGeometry> GenerateRoundedRectPathGeometry(
|
|
|
257
333
|
const facebook::react::RectangleEdges<float> &rectPathGeometry) noexcept {
|
|
258
334
|
winrt::com_ptr<ID2D1PathGeometry> pathGeometry;
|
|
259
335
|
winrt::com_ptr<ID2D1Factory1> spD2dFactory;
|
|
260
|
-
compContext.as
|
|
336
|
+
compContext.as<::Microsoft::ReactNative::Composition::ICompositionContextInterop>()->D2DFactory(spD2dFactory.put());
|
|
261
337
|
|
|
262
338
|
// Create a path geometry.
|
|
263
339
|
HRESULT hr = spD2dFactory->CreatePathGeometry(pathGeometry.put());
|
|
@@ -472,7 +548,7 @@ void DrawShape(
|
|
|
472
548
|
}
|
|
473
549
|
|
|
474
550
|
struct AutoDrawHelper {
|
|
475
|
-
AutoDrawHelper(winrt::com_ptr
|
|
551
|
+
AutoDrawHelper(winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInterop> &surface) {
|
|
476
552
|
m_surface = surface;
|
|
477
553
|
m_surface->BeginDraw(m_pRT.put(), &m_offset);
|
|
478
554
|
}
|
|
@@ -490,17 +566,18 @@ struct AutoDrawHelper {
|
|
|
490
566
|
}
|
|
491
567
|
|
|
492
568
|
private:
|
|
493
|
-
winrt::com_ptr
|
|
569
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInterop> m_surface;
|
|
494
570
|
POINT m_offset;
|
|
495
571
|
winrt::com_ptr<ID2D1DeviceContext> m_pRT;
|
|
496
572
|
};
|
|
497
573
|
|
|
498
574
|
template <typename TShape>
|
|
499
575
|
void SetBorderLayerPropertiesCommon(
|
|
576
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
|
|
500
577
|
winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
501
578
|
winrt::Microsoft::ReactNative::Composition::ISpriteVisual &layer,
|
|
502
579
|
TShape &shape,
|
|
503
|
-
winrt::com_ptr
|
|
580
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInterop> &borderTexture,
|
|
504
581
|
const D2D1_RECT_F &textureRect,
|
|
505
582
|
facebook::react::Point anchorPoint,
|
|
506
583
|
facebook::react::Point anchorOffset,
|
|
@@ -509,7 +586,9 @@ void SetBorderLayerPropertiesCommon(
|
|
|
509
586
|
FLOAT strokeWidth,
|
|
510
587
|
const facebook::react::SharedColor &borderColor,
|
|
511
588
|
facebook::react::BorderStyle borderStyle) {
|
|
512
|
-
|
|
589
|
+
layer.Offset({anchorOffset.x, anchorOffset.y, 0}, {anchorPoint.x, anchorPoint.y, 0});
|
|
590
|
+
layer.RelativeSizeWithOffset(size, relativeSizeAdjustment);
|
|
591
|
+
if ((textureRect.right - textureRect.left) <= 0 || (textureRect.bottom - textureRect.top) <= 0)
|
|
513
592
|
return;
|
|
514
593
|
|
|
515
594
|
auto surface = compContext.CreateDrawingSurfaceBrush(
|
|
@@ -519,8 +598,6 @@ void SetBorderLayerPropertiesCommon(
|
|
|
519
598
|
surface.as(borderTexture);
|
|
520
599
|
|
|
521
600
|
layer.Brush(surface);
|
|
522
|
-
layer.Offset({anchorOffset.x, anchorOffset.y, 0}, {anchorPoint.x, anchorPoint.y, 0});
|
|
523
|
-
layer.RelativeSizeWithOffset(size, relativeSizeAdjustment);
|
|
524
601
|
|
|
525
602
|
AutoDrawHelper autoDraw(borderTexture);
|
|
526
603
|
|
|
@@ -544,7 +621,7 @@ void SetBorderLayerPropertiesCommon(
|
|
|
544
621
|
return;
|
|
545
622
|
|
|
546
623
|
winrt::com_ptr<ID2D1SolidColorBrush> spBorderBrush;
|
|
547
|
-
pRT->CreateSolidColorBrush(borderColor
|
|
624
|
+
pRT->CreateSolidColorBrush(theme->D2DColor(*borderColor), spBorderBrush.put());
|
|
548
625
|
assert(spBorderBrush);
|
|
549
626
|
if (spBorderBrush == nullptr)
|
|
550
627
|
return;
|
|
@@ -586,10 +663,11 @@ void SetBorderLayerPropertiesCommon(
|
|
|
586
663
|
|
|
587
664
|
template <typename TShape>
|
|
588
665
|
void SetBorderLayerProperties(
|
|
666
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
|
|
589
667
|
winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
590
668
|
winrt::Microsoft::ReactNative::Composition::ISpriteVisual &layer,
|
|
591
669
|
TShape &shape,
|
|
592
|
-
winrt::com_ptr
|
|
670
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInterop> &borderTexture,
|
|
593
671
|
const D2D1_RECT_F &textureRect,
|
|
594
672
|
facebook::react::Point anchorPoint,
|
|
595
673
|
facebook::react::Point anchorOffset,
|
|
@@ -600,6 +678,7 @@ void SetBorderLayerProperties(
|
|
|
600
678
|
facebook::react::BorderStyle borderStyle) {
|
|
601
679
|
if constexpr (!std::is_base_of_v<ID2D1GeometryGroup, TShape>) {
|
|
602
680
|
SetBorderLayerPropertiesCommon(
|
|
681
|
+
theme,
|
|
603
682
|
compContext,
|
|
604
683
|
layer,
|
|
605
684
|
shape,
|
|
@@ -618,22 +697,23 @@ void SetBorderLayerProperties(
|
|
|
618
697
|
layer.Offset({anchorOffset.x, anchorOffset.y, 0}, {anchorPoint.x, anchorPoint.y, 0});
|
|
619
698
|
layer.Size({textureRect.right - textureRect.left, textureRect.bottom - textureRect.top});
|
|
620
699
|
|
|
621
|
-
layer.Brush(
|
|
700
|
+
layer.Brush(theme->Brush(*borderColor));
|
|
622
701
|
|
|
623
702
|
winrt::com_ptr<ID2D1Factory1> spD2dFactory;
|
|
624
|
-
compContext.as
|
|
703
|
+
compContext.as<::Microsoft::ReactNative::Composition::ICompositionContextInterop>()->D2DFactory(
|
|
704
|
+
spD2dFactory.put());
|
|
625
705
|
|
|
626
706
|
winrt::com_ptr<ID2D1TransformedGeometry> transformedShape;
|
|
627
707
|
D2D1::Matrix3x2F translationTransform = D2D1::Matrix3x2F::Translation(-textureRect.left, -textureRect.top);
|
|
628
708
|
winrt::check_hresult(
|
|
629
709
|
spD2dFactory->CreateTransformedGeometry(&shape, &translationTransform, transformedShape.put()));
|
|
630
710
|
|
|
631
|
-
layer.as
|
|
711
|
+
layer.as<::Microsoft::ReactNative::Composition::IVisualInterop>()->SetClippingPath(transformedShape.get());
|
|
632
712
|
}
|
|
633
713
|
/*
|
|
634
714
|
else
|
|
635
715
|
{
|
|
636
|
-
SetBorderLayerPropertiesCommon(comContext, layer, shape, borderTexture, textureRect,
|
|
716
|
+
SetBorderLayerPropertiesCommon(theme, comContext, layer, shape, borderTexture, textureRect,
|
|
637
717
|
anchorPoint, anchorOffset, strokeWidth, borderColor, borderStyle);
|
|
638
718
|
}
|
|
639
719
|
*/
|
|
@@ -650,10 +730,10 @@ const float Bottom = 1.0;
|
|
|
650
730
|
|
|
651
731
|
template <typename TShape>
|
|
652
732
|
void DrawAllBorderLayers(
|
|
733
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
|
|
653
734
|
winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
654
|
-
std::array<
|
|
655
|
-
|
|
656
|
-
CompositionBaseComponentView::SpecialBorderLayerCount> &spBorderLayers,
|
|
735
|
+
std::array<winrt::Microsoft::ReactNative::Composition::ISpriteVisual, ComponentView::SpecialBorderLayerCount>
|
|
736
|
+
&spBorderLayers,
|
|
657
737
|
TShape &shape,
|
|
658
738
|
const facebook::react::BorderWidths &borderWidths,
|
|
659
739
|
const facebook::react::BorderRadii &borderRadii,
|
|
@@ -662,12 +742,13 @@ void DrawAllBorderLayers(
|
|
|
662
742
|
const facebook::react::BorderColors &borderColors,
|
|
663
743
|
facebook::react::BorderStyle borderStyle) {
|
|
664
744
|
// Now that we've drawn our nice border in one layer, split it into its component layers
|
|
665
|
-
winrt::com_ptr
|
|
666
|
-
spTextures[
|
|
745
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInterop>
|
|
746
|
+
spTextures[ComponentView::SpecialBorderLayerCount];
|
|
667
747
|
|
|
668
748
|
// Set component border properties
|
|
669
749
|
// Top Left Corner
|
|
670
750
|
SetBorderLayerProperties(
|
|
751
|
+
theme,
|
|
671
752
|
compContext,
|
|
672
753
|
spBorderLayers[0],
|
|
673
754
|
shape,
|
|
@@ -686,6 +767,7 @@ void DrawAllBorderLayers(
|
|
|
686
767
|
|
|
687
768
|
// Top Edge Border
|
|
688
769
|
SetBorderLayerProperties(
|
|
770
|
+
theme,
|
|
689
771
|
compContext,
|
|
690
772
|
spBorderLayers[1],
|
|
691
773
|
shape,
|
|
@@ -705,6 +787,7 @@ void DrawAllBorderLayers(
|
|
|
705
787
|
|
|
706
788
|
// Top Right Corner Border
|
|
707
789
|
SetBorderLayerProperties(
|
|
790
|
+
theme,
|
|
708
791
|
compContext,
|
|
709
792
|
spBorderLayers[2],
|
|
710
793
|
shape,
|
|
@@ -723,6 +806,7 @@ void DrawAllBorderLayers(
|
|
|
723
806
|
|
|
724
807
|
// Right Edge Border
|
|
725
808
|
SetBorderLayerProperties(
|
|
809
|
+
theme,
|
|
726
810
|
compContext,
|
|
727
811
|
spBorderLayers[3],
|
|
728
812
|
shape,
|
|
@@ -742,6 +826,7 @@ void DrawAllBorderLayers(
|
|
|
742
826
|
|
|
743
827
|
// Bottom Right Corner Border
|
|
744
828
|
SetBorderLayerProperties(
|
|
829
|
+
theme,
|
|
745
830
|
compContext,
|
|
746
831
|
spBorderLayers[4],
|
|
747
832
|
shape,
|
|
@@ -760,6 +845,7 @@ void DrawAllBorderLayers(
|
|
|
760
845
|
|
|
761
846
|
// Bottom Edge Border
|
|
762
847
|
SetBorderLayerProperties(
|
|
848
|
+
theme,
|
|
763
849
|
compContext,
|
|
764
850
|
spBorderLayers[5],
|
|
765
851
|
shape,
|
|
@@ -779,6 +865,7 @@ void DrawAllBorderLayers(
|
|
|
779
865
|
|
|
780
866
|
// Bottom Left Corner Border
|
|
781
867
|
SetBorderLayerProperties(
|
|
868
|
+
theme,
|
|
782
869
|
compContext,
|
|
783
870
|
spBorderLayers[6],
|
|
784
871
|
shape,
|
|
@@ -797,6 +884,7 @@ void DrawAllBorderLayers(
|
|
|
797
884
|
|
|
798
885
|
// Left Edge Border
|
|
799
886
|
SetBorderLayerProperties(
|
|
887
|
+
theme,
|
|
800
888
|
compContext,
|
|
801
889
|
spBorderLayers[7],
|
|
802
890
|
shape,
|
|
@@ -868,7 +956,7 @@ winrt::com_ptr<ID2D1GeometryGroup> GetGeometryForRoundedBorder(
|
|
|
868
956
|
|
|
869
957
|
ID2D1Geometry *ppGeometries[] = {outerPathGeometry.get(), innerPathGeometry.get()};
|
|
870
958
|
winrt::com_ptr<ID2D1Factory1> spD2dFactory;
|
|
871
|
-
compContext.as
|
|
959
|
+
compContext.as<::Microsoft::ReactNative::Composition::ICompositionContextInterop>()->D2DFactory(spD2dFactory.put());
|
|
872
960
|
|
|
873
961
|
winrt::com_ptr<ID2D1GeometryGroup> geometryGroup = nullptr;
|
|
874
962
|
// Create a geometry group.
|
|
@@ -946,7 +1034,8 @@ facebook::react::BorderMetrics resolveAndAlignBorderMetrics(
|
|
|
946
1034
|
return borderMetrics;
|
|
947
1035
|
}
|
|
948
1036
|
|
|
949
|
-
bool
|
|
1037
|
+
bool ComponentView::TryUpdateSpecialBorderLayers(
|
|
1038
|
+
winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
|
|
950
1039
|
std::array<winrt::Microsoft::ReactNative::Composition::ISpriteVisual, SpecialBorderLayerCount> &spBorderVisuals,
|
|
951
1040
|
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
952
1041
|
const facebook::react::ViewProps &viewProps) noexcept {
|
|
@@ -990,6 +1079,7 @@ bool CompositionBaseComponentView::TryUpdateSpecialBorderLayers(
|
|
|
990
1079
|
|
|
991
1080
|
if (pathGeometry) {
|
|
992
1081
|
DrawAllBorderLayers(
|
|
1082
|
+
theme,
|
|
993
1083
|
m_compContext,
|
|
994
1084
|
spBorderVisuals,
|
|
995
1085
|
*pathGeometry,
|
|
@@ -1013,6 +1103,7 @@ bool CompositionBaseComponentView::TryUpdateSpecialBorderLayers(
|
|
|
1013
1103
|
rectPathGeometry);
|
|
1014
1104
|
|
|
1015
1105
|
DrawAllBorderLayers(
|
|
1106
|
+
theme,
|
|
1016
1107
|
m_compContext,
|
|
1017
1108
|
spBorderVisuals,
|
|
1018
1109
|
*pathGeometry,
|
|
@@ -1032,6 +1123,7 @@ bool CompositionBaseComponentView::TryUpdateSpecialBorderLayers(
|
|
|
1032
1123
|
extentWidth - (borderMetrics.borderWidths.right / 2.0f),
|
|
1033
1124
|
extentHeight - (borderMetrics.borderWidths.bottom / 2.0f)};
|
|
1034
1125
|
DrawAllBorderLayers(
|
|
1126
|
+
theme,
|
|
1035
1127
|
m_compContext,
|
|
1036
1128
|
spBorderVisuals,
|
|
1037
1129
|
rectShape,
|
|
@@ -1045,12 +1137,17 @@ bool CompositionBaseComponentView::TryUpdateSpecialBorderLayers(
|
|
|
1045
1137
|
return true;
|
|
1046
1138
|
}
|
|
1047
1139
|
|
|
1048
|
-
void
|
|
1140
|
+
void ComponentView::finalizeBorderUpdates(
|
|
1049
1141
|
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
1050
1142
|
const facebook::react::ViewProps &viewProps) noexcept {
|
|
1143
|
+
if (!m_needsBorderUpdate || theme()->IsEmpty()) {
|
|
1144
|
+
return;
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
m_needsBorderUpdate = false;
|
|
1051
1148
|
auto spBorderLayers = FindSpecialBorderLayers();
|
|
1052
1149
|
|
|
1053
|
-
if (!TryUpdateSpecialBorderLayers(spBorderLayers, layoutMetrics, viewProps)) {
|
|
1150
|
+
if (!TryUpdateSpecialBorderLayers(theme(), spBorderLayers, layoutMetrics, viewProps)) {
|
|
1054
1151
|
for (auto &spBorderLayer : spBorderLayers) {
|
|
1055
1152
|
if (spBorderLayer) {
|
|
1056
1153
|
spBorderLayer.as<winrt::Microsoft::ReactNative::Composition::ISpriteVisual>().Brush(nullptr);
|
|
@@ -1059,11 +1156,11 @@ void CompositionBaseComponentView::UpdateSpecialBorderLayers(
|
|
|
1059
1156
|
}
|
|
1060
1157
|
}
|
|
1061
1158
|
|
|
1062
|
-
winrt::Microsoft::ReactNative::Composition::IVisual
|
|
1159
|
+
winrt::Microsoft::ReactNative::Composition::IVisual ComponentView::OuterVisual() const noexcept {
|
|
1063
1160
|
return m_outerVisual ? m_outerVisual : Visual();
|
|
1064
1161
|
}
|
|
1065
1162
|
|
|
1066
|
-
void
|
|
1163
|
+
void ComponentView::showFocusVisual(bool show) noexcept {
|
|
1067
1164
|
if (show) {
|
|
1068
1165
|
assert(m_enableFocusVisual);
|
|
1069
1166
|
m_focusVisual.IsFocused(true);
|
|
@@ -1072,11 +1169,12 @@ void CompositionBaseComponentView::showFocusVisual(bool show) noexcept {
|
|
|
1072
1169
|
}
|
|
1073
1170
|
}
|
|
1074
1171
|
|
|
1075
|
-
void
|
|
1172
|
+
void ComponentView::updateBorderProps(
|
|
1076
1173
|
const facebook::react::ViewProps &oldViewProps,
|
|
1077
1174
|
const facebook::react::ViewProps &newViewProps) noexcept {
|
|
1078
1175
|
if (oldViewProps.borderColors != newViewProps.borderColors || oldViewProps.borderRadii != newViewProps.borderRadii ||
|
|
1079
|
-
!(oldViewProps.yogaStyle.border() ==
|
|
1176
|
+
!(oldViewProps.yogaStyle.border(facebook::yoga::Edge::All) ==
|
|
1177
|
+
newViewProps.yogaStyle.border(facebook::yoga::Edge::All)) ||
|
|
1080
1178
|
oldViewProps.borderStyles != newViewProps.borderStyles) {
|
|
1081
1179
|
m_needsBorderUpdate = true;
|
|
1082
1180
|
}
|
|
@@ -1087,28 +1185,31 @@ void CompositionBaseComponentView::updateBorderProps(
|
|
|
1087
1185
|
}
|
|
1088
1186
|
}
|
|
1089
1187
|
|
|
1090
|
-
void
|
|
1188
|
+
void ComponentView::updateShadowProps(
|
|
1091
1189
|
const facebook::react::ViewProps &oldViewProps,
|
|
1092
|
-
const facebook::react::ViewProps &newViewProps
|
|
1093
|
-
winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_visual) noexcept {
|
|
1190
|
+
const facebook::react::ViewProps &newViewProps) noexcept {
|
|
1094
1191
|
// Shadow Properties
|
|
1095
1192
|
if (oldViewProps.shadowOffset != newViewProps.shadowOffset || oldViewProps.shadowColor != newViewProps.shadowColor ||
|
|
1096
1193
|
oldViewProps.shadowOpacity != newViewProps.shadowOpacity ||
|
|
1097
1194
|
oldViewProps.shadowRadius != newViewProps.shadowRadius) {
|
|
1098
|
-
|
|
1099
|
-
shadow.Offset({newViewProps.shadowOffset.width, newViewProps.shadowOffset.height, 0});
|
|
1100
|
-
shadow.Opacity(newViewProps.shadowOpacity);
|
|
1101
|
-
shadow.BlurRadius(newViewProps.shadowRadius);
|
|
1102
|
-
if (newViewProps.shadowColor)
|
|
1103
|
-
shadow.Color(newViewProps.shadowColor.AsWindowsColor());
|
|
1104
|
-
m_visual.Shadow(shadow);
|
|
1195
|
+
applyShadowProps(newViewProps);
|
|
1105
1196
|
}
|
|
1106
1197
|
}
|
|
1107
1198
|
|
|
1108
|
-
void
|
|
1199
|
+
void ComponentView::applyShadowProps(const facebook::react::ViewProps &viewProps) noexcept {
|
|
1200
|
+
auto shadow = m_compContext.CreateDropShadow();
|
|
1201
|
+
shadow.Offset({viewProps.shadowOffset.width, viewProps.shadowOffset.height, 0});
|
|
1202
|
+
shadow.Opacity(viewProps.shadowOpacity);
|
|
1203
|
+
shadow.BlurRadius(viewProps.shadowRadius);
|
|
1204
|
+
if (viewProps.shadowColor)
|
|
1205
|
+
shadow.Color(theme()->Color(*viewProps.shadowColor));
|
|
1206
|
+
Visual().as<winrt::Microsoft::ReactNative::Composition::ISpriteVisual>().Shadow(shadow);
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
void ComponentView::updateTransformProps(
|
|
1109
1210
|
const facebook::react::ViewProps &oldViewProps,
|
|
1110
1211
|
const facebook::react::ViewProps &newViewProps,
|
|
1111
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
1212
|
+
winrt::Microsoft::ReactNative::Composition::IVisual visual) noexcept {
|
|
1112
1213
|
// check for backfaceVisibility prop
|
|
1113
1214
|
if (oldViewProps.backfaceVisibility != newViewProps.backfaceVisibility) {
|
|
1114
1215
|
static_assert(
|
|
@@ -1123,7 +1224,7 @@ void CompositionBaseComponentView::updateTransformProps(
|
|
|
1123
1224
|
static_cast<facebook::react::BackfaceVisibility>(
|
|
1124
1225
|
winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Hidden) ==
|
|
1125
1226
|
facebook::react::BackfaceVisibility::Hidden);
|
|
1126
|
-
|
|
1227
|
+
visual.BackfaceVisibility(
|
|
1127
1228
|
static_cast<winrt::Microsoft::ReactNative::Composition::BackfaceVisibility>(newViewProps.backfaceVisibility));
|
|
1128
1229
|
}
|
|
1129
1230
|
|
|
@@ -1148,62 +1249,74 @@ void CompositionBaseComponentView::updateTransformProps(
|
|
|
1148
1249
|
transformMatrix.m44 = newViewProps.transform.matrix[15];
|
|
1149
1250
|
|
|
1150
1251
|
auto centerPointPropSet = EnsureCenterPointPropertySet();
|
|
1151
|
-
centerPointPropSet
|
|
1252
|
+
if (centerPointPropSet) {
|
|
1253
|
+
centerPointPropSet.InsertMatrix4x4(L"transform", transformMatrix);
|
|
1254
|
+
}
|
|
1152
1255
|
|
|
1153
1256
|
EnsureTransformMatrixFacade();
|
|
1154
1257
|
}
|
|
1155
1258
|
}
|
|
1156
1259
|
|
|
1157
|
-
void
|
|
1260
|
+
void ComponentView::updateAccessibilityProps(
|
|
1158
1261
|
const facebook::react::ViewProps &oldViewProps,
|
|
1159
1262
|
const facebook::react::ViewProps &newViewProps) noexcept {
|
|
1160
|
-
if (!
|
|
1263
|
+
if (!m_uiaProvider)
|
|
1161
1264
|
return;
|
|
1162
1265
|
|
|
1163
|
-
auto provider = EnsureUiaProvider();
|
|
1164
|
-
|
|
1165
1266
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1166
|
-
|
|
1267
|
+
m_uiaProvider, UIA_IsKeyboardFocusablePropertyId, oldViewProps.focusable, newViewProps.focusable);
|
|
1167
1268
|
|
|
1168
1269
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1169
|
-
|
|
1270
|
+
m_uiaProvider,
|
|
1170
1271
|
UIA_NamePropertyId,
|
|
1171
1272
|
oldViewProps.accessibilityLabel,
|
|
1172
1273
|
newViewProps.accessibilityLabel.empty() ? DefaultAccessibleName() : newViewProps.accessibilityLabel);
|
|
1173
1274
|
|
|
1174
1275
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1175
|
-
|
|
1276
|
+
m_uiaProvider,
|
|
1176
1277
|
UIA_IsContentElementPropertyId,
|
|
1177
1278
|
(oldViewProps.accessible && oldViewProps.accessibilityRole != "none"),
|
|
1178
1279
|
(newViewProps.accessible && newViewProps.accessibilityRole != "none"));
|
|
1179
1280
|
|
|
1180
1281
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1181
|
-
|
|
1282
|
+
m_uiaProvider,
|
|
1182
1283
|
UIA_IsControlElementPropertyId,
|
|
1183
1284
|
(oldViewProps.accessible && oldViewProps.accessibilityRole != "none"),
|
|
1184
1285
|
(newViewProps.accessible && newViewProps.accessibilityRole != "none"));
|
|
1185
1286
|
|
|
1186
1287
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1187
|
-
|
|
1288
|
+
m_uiaProvider,
|
|
1188
1289
|
UIA_IsEnabledPropertyId,
|
|
1189
|
-
!oldViewProps.accessibilityState.disabled,
|
|
1190
|
-
!newViewProps.accessibilityState.disabled);
|
|
1290
|
+
!(oldViewProps.accessibilityState && oldViewProps.accessibilityState->disabled),
|
|
1291
|
+
!(newViewProps.accessibilityState && newViewProps.accessibilityState->disabled));
|
|
1191
1292
|
|
|
1192
1293
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1193
|
-
|
|
1294
|
+
m_uiaProvider, UIA_ControlTypePropertyId, oldViewProps.accessibilityRole, newViewProps.accessibilityRole);
|
|
1194
1295
|
|
|
1195
1296
|
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
|
|
1196
|
-
|
|
1297
|
+
m_uiaProvider, UIA_HelpTextPropertyId, oldViewProps.accessibilityHint, newViewProps.accessibilityHint);
|
|
1197
1298
|
}
|
|
1198
1299
|
|
|
1199
|
-
|
|
1300
|
+
std::optional<std::string> ComponentView::getAcccessiblityValue() noexcept {
|
|
1301
|
+
return std::static_pointer_cast<const facebook::react::ViewProps>(props())->accessibilityValue.text;
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
void ComponentView::setAcccessiblityValue(std::string &&value) noexcept {
|
|
1305
|
+
// no-op
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
bool ComponentView::getAcccessiblityIsReadOnly() noexcept {
|
|
1309
|
+
return true;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
void ComponentView::updateBorderLayoutMetrics(
|
|
1200
1313
|
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
1201
1314
|
const facebook::react::ViewProps &viewProps) noexcept {
|
|
1202
1315
|
auto borderMetrics = resolveAndAlignBorderMetrics(layoutMetrics, viewProps);
|
|
1203
1316
|
|
|
1204
1317
|
if (borderMetrics.borderRadii.topLeft == 0 && borderMetrics.borderRadii.topRight == 0 &&
|
|
1205
1318
|
borderMetrics.borderRadii.bottomLeft == 0 && borderMetrics.borderRadii.bottomRight == 0) {
|
|
1206
|
-
Visual().as
|
|
1319
|
+
Visual().as<::Microsoft::ReactNative::Composition::IVisualInterop>()->SetClippingPath(nullptr);
|
|
1207
1320
|
} else {
|
|
1208
1321
|
winrt::com_ptr<ID2D1PathGeometry> pathGeometry = GenerateRoundedRectPathGeometry(
|
|
1209
1322
|
m_compContext,
|
|
@@ -1214,7 +1327,7 @@ void CompositionBaseComponentView::updateBorderLayoutMetrics(
|
|
|
1214
1327
|
layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor,
|
|
1215
1328
|
layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor});
|
|
1216
1329
|
|
|
1217
|
-
Visual().as
|
|
1330
|
+
Visual().as<::Microsoft::ReactNative::Composition::IVisualInterop>()->SetClippingPath(pathGeometry.get());
|
|
1218
1331
|
}
|
|
1219
1332
|
|
|
1220
1333
|
if (m_layoutMetrics != layoutMetrics) {
|
|
@@ -1232,18 +1345,18 @@ void CompositionBaseComponentView::updateBorderLayoutMetrics(
|
|
|
1232
1345
|
});
|
|
1233
1346
|
}
|
|
1234
1347
|
|
|
1235
|
-
void
|
|
1348
|
+
void ComponentView::indexOffsetForBorder(uint32_t &index) const noexcept {
|
|
1236
1349
|
index += m_numBorderVisuals;
|
|
1237
1350
|
}
|
|
1238
1351
|
|
|
1239
|
-
void
|
|
1352
|
+
void ComponentView::OnRenderingDeviceLost() noexcept {}
|
|
1240
1353
|
|
|
1241
1354
|
std::vector<facebook::react::ComponentDescriptorProvider>
|
|
1242
|
-
|
|
1355
|
+
ComponentView::supplementalComponentDescriptorProviders() noexcept {
|
|
1243
1356
|
return {};
|
|
1244
1357
|
}
|
|
1245
1358
|
|
|
1246
|
-
comp::CompositionPropertySet
|
|
1359
|
+
comp::CompositionPropertySet ComponentView::EnsureCenterPointPropertySet() noexcept {
|
|
1247
1360
|
if (m_centerPropSet == nullptr) {
|
|
1248
1361
|
if (auto compositor =
|
|
1249
1362
|
winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerCompositor(m_compContext)) {
|
|
@@ -1266,7 +1379,7 @@ comp::CompositionPropertySet CompositionBaseComponentView::EnsureCenterPointProp
|
|
|
1266
1379
|
// convert from px to dips "translation": An additional translation to apply to the to the visual in
|
|
1267
1380
|
// addition to Offset. This is used to apply any translation properties set, or animated
|
|
1268
1381
|
// "transform": A transform to apply to the visual. This transform is in dips.
|
|
1269
|
-
void
|
|
1382
|
+
void ComponentView::UpdateCenterPropertySet() noexcept {
|
|
1270
1383
|
if (m_centerPropSet != nullptr) {
|
|
1271
1384
|
m_centerPropSet.InsertVector3(
|
|
1272
1385
|
L"center",
|
|
@@ -1284,7 +1397,7 @@ void CompositionBaseComponentView::UpdateCenterPropertySet() noexcept {
|
|
|
1284
1397
|
}
|
|
1285
1398
|
}
|
|
1286
1399
|
|
|
1287
|
-
void
|
|
1400
|
+
void ComponentView::EnsureTransformMatrixFacade() noexcept {
|
|
1288
1401
|
if (m_hasTransformMatrixFacade)
|
|
1289
1402
|
return;
|
|
1290
1403
|
m_hasTransformMatrixFacade = true;
|
|
@@ -1301,98 +1414,139 @@ void CompositionBaseComponentView::EnsureTransformMatrixFacade() noexcept {
|
|
|
1301
1414
|
}
|
|
1302
1415
|
}
|
|
1303
1416
|
|
|
1304
|
-
facebook::react::SharedViewEventEmitter
|
|
1417
|
+
facebook::react::SharedViewEventEmitter ComponentView::eventEmitter() noexcept {
|
|
1305
1418
|
return m_eventEmitter;
|
|
1306
1419
|
}
|
|
1307
1420
|
|
|
1308
|
-
facebook::react::SharedViewEventEmitter
|
|
1309
|
-
facebook::react::Point /*pt*/) noexcept {
|
|
1421
|
+
facebook::react::SharedViewEventEmitter ComponentView::eventEmitterAtPoint(facebook::react::Point /*pt*/) noexcept {
|
|
1310
1422
|
return m_eventEmitter;
|
|
1311
1423
|
}
|
|
1312
1424
|
|
|
1313
|
-
bool
|
|
1425
|
+
bool ComponentView::anyHitTestHelper(
|
|
1426
|
+
facebook::react::Tag &targetTag,
|
|
1427
|
+
facebook::react::Point &ptContent,
|
|
1428
|
+
facebook::react::Point &localPt) const noexcept {
|
|
1429
|
+
if (auto index = m_children.Size()) {
|
|
1430
|
+
do {
|
|
1431
|
+
index--;
|
|
1432
|
+
targetTag = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(m_children.GetAt(index))
|
|
1433
|
+
->hitTest(ptContent, localPt);
|
|
1434
|
+
if (targetTag != -1) {
|
|
1435
|
+
return true;
|
|
1436
|
+
}
|
|
1437
|
+
} while (index != 0);
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1314
1440
|
return false;
|
|
1315
1441
|
}
|
|
1316
1442
|
|
|
1317
|
-
std::string
|
|
1443
|
+
std::string ComponentView::DefaultControlType() const noexcept {
|
|
1318
1444
|
return "group";
|
|
1319
1445
|
}
|
|
1320
1446
|
|
|
1321
|
-
std::string
|
|
1447
|
+
std::string ComponentView::DefaultAccessibleName() const noexcept {
|
|
1322
1448
|
return "";
|
|
1323
1449
|
}
|
|
1324
1450
|
|
|
1325
|
-
std::string
|
|
1451
|
+
std::string ComponentView::DefaultHelpText() const noexcept {
|
|
1326
1452
|
return "";
|
|
1327
1453
|
}
|
|
1328
1454
|
|
|
1329
|
-
|
|
1455
|
+
ViewComponentView::ViewComponentView(
|
|
1456
|
+
const winrt::Microsoft::ReactNative::Composition::CreateCompositionComponentViewArgs &args)
|
|
1457
|
+
: ViewComponentView(args.CompositionContext(), args.Tag(), args.ReactContext(), args.Features(), true) {}
|
|
1458
|
+
|
|
1459
|
+
ViewComponentView::ViewComponentView(
|
|
1330
1460
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
1331
|
-
facebook::react::Tag tag
|
|
1332
|
-
|
|
1461
|
+
facebook::react::Tag tag,
|
|
1462
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext,
|
|
1463
|
+
ComponentViewFeatures flags,
|
|
1464
|
+
bool customComponent)
|
|
1465
|
+
: base_type(compContext, tag, reactContext, flags, customComponent) {
|
|
1333
1466
|
static auto const defaultProps = std::make_shared<facebook::react::ViewProps const>();
|
|
1334
1467
|
m_props = defaultProps;
|
|
1335
|
-
m_visual = m_compContext.CreateSpriteVisual();
|
|
1336
|
-
OuterVisual().InsertAt(m_visual, 0);
|
|
1337
1468
|
}
|
|
1338
1469
|
|
|
1339
|
-
|
|
1470
|
+
winrt::Microsoft::ReactNative::Composition::IVisual ViewComponentView::CreateVisual() noexcept {
|
|
1471
|
+
return m_compContext.CreateSpriteVisual();
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
void ViewComponentView::ensureVisual() noexcept {
|
|
1475
|
+
if (!m_visual) {
|
|
1476
|
+
if (m_customComponent) {
|
|
1477
|
+
// Review is it expected that I need this cast to call overridden methods?
|
|
1478
|
+
winrt::Microsoft::ReactNative::Composition::ViewComponentView outer(*this);
|
|
1479
|
+
m_visual = outer.CreateVisual();
|
|
1480
|
+
} else {
|
|
1481
|
+
m_visual = CreateVisual();
|
|
1482
|
+
}
|
|
1483
|
+
OuterVisual().InsertAt(m_visual, 0);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
winrt::Microsoft::ReactNative::ComponentView ViewComponentView::Create(
|
|
1340
1488
|
const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
|
|
1341
|
-
facebook::react::Tag tag
|
|
1342
|
-
|
|
1489
|
+
facebook::react::Tag tag,
|
|
1490
|
+
winrt::Microsoft::ReactNative::ReactContext const &reactContext) noexcept {
|
|
1491
|
+
return winrt::make<ViewComponentView>(compContext, tag, reactContext, ComponentViewFeatures::Default, false);
|
|
1343
1492
|
}
|
|
1344
1493
|
|
|
1345
|
-
void
|
|
1346
|
-
|
|
1494
|
+
void ViewComponentView::MountChildComponentView(
|
|
1495
|
+
const winrt::Microsoft::ReactNative::ComponentView &childComponentView,
|
|
1347
1496
|
uint32_t index) noexcept {
|
|
1348
|
-
|
|
1497
|
+
base_type::MountChildComponentView(childComponentView, index);
|
|
1349
1498
|
|
|
1350
1499
|
indexOffsetForBorder(index);
|
|
1500
|
+
ensureVisual();
|
|
1351
1501
|
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1502
|
+
// TODO if we get mixed children of composition and non-composition ComponentViews the indexes will get mixed up
|
|
1503
|
+
// We could offset the index based on non-composition children in m_children
|
|
1504
|
+
if (auto compositionChild = childComponentView.try_as<ComponentView>()) {
|
|
1505
|
+
m_visual.InsertAt(compositionChild->OuterVisual(), index);
|
|
1506
|
+
}
|
|
1355
1507
|
}
|
|
1356
1508
|
|
|
1357
|
-
void
|
|
1358
|
-
|
|
1509
|
+
void ViewComponentView::UnmountChildComponentView(
|
|
1510
|
+
const winrt::Microsoft::ReactNative::ComponentView &childComponentView,
|
|
1359
1511
|
uint32_t index) noexcept {
|
|
1360
|
-
|
|
1512
|
+
base_type::UnmountChildComponentView(childComponentView, index);
|
|
1361
1513
|
|
|
1362
1514
|
indexOffsetForBorder(index);
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1515
|
+
if (auto compositionChild = childComponentView.try_as<ComponentView>()) {
|
|
1516
|
+
m_visual.Remove(compositionChild->OuterVisual());
|
|
1517
|
+
}
|
|
1366
1518
|
}
|
|
1367
1519
|
|
|
1368
|
-
void
|
|
1520
|
+
void ViewComponentView::updateProps(
|
|
1369
1521
|
facebook::react::Props::Shared const &props,
|
|
1370
1522
|
facebook::react::Props::Shared const &oldProps) noexcept {
|
|
1371
1523
|
const auto &oldViewProps = *std::static_pointer_cast<const facebook::react::ViewProps>(m_props);
|
|
1372
1524
|
const auto &newViewProps = *std::static_pointer_cast<const facebook::react::ViewProps>(props);
|
|
1373
1525
|
|
|
1374
|
-
|
|
1375
|
-
if (newViewProps.backgroundColor) {
|
|
1376
|
-
m_visual.Brush(m_compContext.CreateColorBrush(newViewProps.backgroundColor.AsWindowsColor()));
|
|
1377
|
-
} else {
|
|
1378
|
-
m_visual.Brush(nullptr);
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
|
|
1526
|
+
ensureVisual();
|
|
1382
1527
|
if (oldViewProps.opacity != newViewProps.opacity) {
|
|
1383
1528
|
m_visual.Opacity(newViewProps.opacity);
|
|
1384
1529
|
}
|
|
1530
|
+
if (oldViewProps.testId != newViewProps.testId) {
|
|
1531
|
+
m_visual.Comment(winrt::to_hstring(newViewProps.testId));
|
|
1532
|
+
}
|
|
1385
1533
|
|
|
1386
1534
|
// update BaseComponentView props
|
|
1387
1535
|
updateAccessibilityProps(oldViewProps, newViewProps);
|
|
1388
|
-
updateShadowProps(oldViewProps, newViewProps, m_visual);
|
|
1389
1536
|
updateTransformProps(oldViewProps, newViewProps, m_visual);
|
|
1390
|
-
|
|
1537
|
+
base_type::updateProps(props, oldProps);
|
|
1391
1538
|
|
|
1392
1539
|
m_props = std::static_pointer_cast<facebook::react::ViewProps const>(props);
|
|
1393
1540
|
}
|
|
1394
1541
|
|
|
1395
|
-
|
|
1542
|
+
const winrt::Microsoft::ReactNative::IComponentProps ViewComponentView::userProps(
|
|
1543
|
+
facebook::react::Props::Shared const &props) noexcept {
|
|
1544
|
+
assert(m_customComponent);
|
|
1545
|
+
const auto &abiViewProps = *std::static_pointer_cast<const ::Microsoft::ReactNative::AbiViewProps>(props);
|
|
1546
|
+
return abiViewProps.UserProps();
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
facebook::react::Tag ViewComponentView::hitTest(
|
|
1396
1550
|
facebook::react::Point pt,
|
|
1397
1551
|
facebook::react::Point &localPt,
|
|
1398
1552
|
bool ignorePointerEvents) const noexcept {
|
|
@@ -1402,10 +1556,7 @@ facebook::react::Tag CompositionViewComponentView::hitTest(
|
|
|
1402
1556
|
|
|
1403
1557
|
if ((ignorePointerEvents || m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
1404
1558
|
m_props->pointerEvents == facebook::react::PointerEventsMode::BoxNone) &&
|
|
1405
|
-
|
|
1406
|
-
targetTag = static_cast<const CompositionBaseComponentView *>(child)->hitTest(ptLocal, localPt);
|
|
1407
|
-
return targetTag != -1;
|
|
1408
|
-
}))
|
|
1559
|
+
anyHitTestHelper(targetTag, ptLocal, localPt))
|
|
1409
1560
|
return targetTag;
|
|
1410
1561
|
|
|
1411
1562
|
if ((ignorePointerEvents || m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
|
|
@@ -1413,16 +1564,16 @@ facebook::react::Tag CompositionViewComponentView::hitTest(
|
|
|
1413
1564
|
ptLocal.x >= 0 && ptLocal.x <= m_layoutMetrics.frame.size.width && ptLocal.y >= 0 &&
|
|
1414
1565
|
ptLocal.y <= m_layoutMetrics.frame.size.height) {
|
|
1415
1566
|
localPt = ptLocal;
|
|
1416
|
-
return
|
|
1567
|
+
return Tag();
|
|
1417
1568
|
}
|
|
1418
1569
|
|
|
1419
1570
|
return -1;
|
|
1420
1571
|
}
|
|
1421
1572
|
|
|
1422
|
-
void
|
|
1573
|
+
void ViewComponentView::OnKeyDown(
|
|
1423
1574
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
1424
1575
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
1425
|
-
auto eventCode = CodeFromVirtualKey(args.Key());
|
|
1576
|
+
auto eventCode = ::Microsoft::ReactNative::CodeFromVirtualKey(args.Key());
|
|
1426
1577
|
bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) !=
|
|
1427
1578
|
winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
|
|
1428
1579
|
bool fAlt = source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) !=
|
|
@@ -1434,14 +1585,14 @@ void CompositionViewComponentView::onKeyDown(
|
|
|
1434
1585
|
(source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) !=
|
|
1435
1586
|
winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
|
|
1436
1587
|
|
|
1437
|
-
if (args.OriginalSource() ==
|
|
1588
|
+
if (args.OriginalSource() == Tag()) {
|
|
1438
1589
|
facebook::react::KeyEvent event;
|
|
1439
1590
|
event.shiftKey = fShift;
|
|
1440
1591
|
event.ctrlKey = fCtrl;
|
|
1441
1592
|
event.altKey = fAlt;
|
|
1442
1593
|
event.metaKey = fMeta;
|
|
1443
1594
|
|
|
1444
|
-
event.key = FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
|
|
1595
|
+
event.key = ::Microsoft::ReactNative::FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
|
|
1445
1596
|
event.code = eventCode;
|
|
1446
1597
|
m_eventEmitter->onKeyDown(event);
|
|
1447
1598
|
}
|
|
@@ -1455,13 +1606,13 @@ void CompositionViewComponentView::onKeyDown(
|
|
|
1455
1606
|
}
|
|
1456
1607
|
}
|
|
1457
1608
|
|
|
1458
|
-
|
|
1609
|
+
base_type::OnKeyDown(source, args);
|
|
1459
1610
|
}
|
|
1460
1611
|
|
|
1461
|
-
void
|
|
1612
|
+
void ViewComponentView::OnKeyUp(
|
|
1462
1613
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
1463
1614
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
1464
|
-
auto eventCode = CodeFromVirtualKey(args.Key());
|
|
1615
|
+
auto eventCode = ::Microsoft::ReactNative::CodeFromVirtualKey(args.Key());
|
|
1465
1616
|
bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) !=
|
|
1466
1617
|
winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
|
|
1467
1618
|
bool fAlt = source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) !=
|
|
@@ -1473,14 +1624,14 @@ void CompositionViewComponentView::onKeyUp(
|
|
|
1473
1624
|
(source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) !=
|
|
1474
1625
|
winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
|
|
1475
1626
|
|
|
1476
|
-
if (args.OriginalSource() ==
|
|
1627
|
+
if (args.OriginalSource() == Tag()) {
|
|
1477
1628
|
facebook::react::KeyEvent event;
|
|
1478
1629
|
event.shiftKey = fShift;
|
|
1479
1630
|
event.ctrlKey = fCtrl;
|
|
1480
1631
|
event.altKey = fAlt;
|
|
1481
1632
|
event.metaKey = fMeta;
|
|
1482
1633
|
|
|
1483
|
-
event.key = FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
|
|
1634
|
+
event.key = ::Microsoft::ReactNative::FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
|
|
1484
1635
|
event.code = eventCode;
|
|
1485
1636
|
m_eventEmitter->onKeyUp(event);
|
|
1486
1637
|
}
|
|
@@ -1494,125 +1645,173 @@ void CompositionViewComponentView::onKeyUp(
|
|
|
1494
1645
|
}
|
|
1495
1646
|
}
|
|
1496
1647
|
|
|
1497
|
-
|
|
1648
|
+
base_type::OnKeyUp(source, args);
|
|
1498
1649
|
}
|
|
1499
1650
|
|
|
1500
|
-
void
|
|
1501
|
-
facebook::react::State::Shared const &state,
|
|
1502
|
-
facebook::react::State::Shared const &oldState) noexcept {}
|
|
1503
|
-
|
|
1504
|
-
void CompositionViewComponentView::updateLayoutMetrics(
|
|
1651
|
+
void ViewComponentView::updateLayoutMetrics(
|
|
1505
1652
|
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
1506
1653
|
facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
|
|
1507
1654
|
// Set Position & Size Properties
|
|
1508
1655
|
if ((layoutMetrics.displayType != m_layoutMetrics.displayType)) {
|
|
1509
1656
|
OuterVisual().IsVisible(layoutMetrics.displayType != facebook::react::DisplayType::None);
|
|
1510
1657
|
}
|
|
1658
|
+
ensureVisual();
|
|
1659
|
+
base_type::updateLayoutMetrics(layoutMetrics, oldLayoutMetrics);
|
|
1660
|
+
}
|
|
1511
1661
|
|
|
1512
|
-
|
|
1662
|
+
void ViewComponentView::UpdateLayoutMetrics(const LayoutMetrics &metrics, const LayoutMetrics &oldMetrics) noexcept {
|
|
1663
|
+
m_visual.Size({metrics.Frame.Width * metrics.PointScaleFactor, metrics.Frame.Height * metrics.PointScaleFactor});
|
|
1664
|
+
}
|
|
1513
1665
|
|
|
1514
|
-
|
|
1666
|
+
void ViewComponentView::prepareForRecycle() noexcept {}
|
|
1515
1667
|
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
{layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor,
|
|
1519
|
-
layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor});
|
|
1668
|
+
facebook::react::SharedViewProps ViewComponentView::viewProps() noexcept {
|
|
1669
|
+
return m_props;
|
|
1520
1670
|
}
|
|
1521
1671
|
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1672
|
+
winrt::Microsoft::ReactNative::ViewProps ViewComponentView::ViewProps() noexcept {
|
|
1673
|
+
// If we have AbiViewProps, then we dont need to new up a props wrapper
|
|
1674
|
+
if (m_customComponent) {
|
|
1675
|
+
const auto &abiViewProps = *std::static_pointer_cast<const ::Microsoft::ReactNative::AbiViewProps>(m_props);
|
|
1676
|
+
return abiViewProps.ViewProps();
|
|
1526
1677
|
}
|
|
1527
|
-
}
|
|
1528
1678
|
|
|
1529
|
-
|
|
1530
|
-
facebook::react::Props::Shared CompositionViewComponentView::props() noexcept {
|
|
1531
|
-
return m_props;
|
|
1679
|
+
return winrt::make<winrt::Microsoft::ReactNative::implementation::ViewProps>(m_props);
|
|
1532
1680
|
}
|
|
1533
1681
|
|
|
1534
|
-
winrt::Microsoft::ReactNative::Composition::IVisual
|
|
1682
|
+
winrt::Microsoft::ReactNative::Composition::IVisual ViewComponentView::Visual() const noexcept {
|
|
1683
|
+
assert(m_visual);
|
|
1535
1684
|
return m_visual;
|
|
1536
1685
|
}
|
|
1537
1686
|
|
|
1538
|
-
bool
|
|
1687
|
+
bool ViewComponentView::focusable() const noexcept {
|
|
1539
1688
|
return m_props->focusable;
|
|
1540
1689
|
}
|
|
1541
1690
|
|
|
1542
|
-
std::string
|
|
1691
|
+
std::string ViewComponentView::DefaultControlType() const noexcept {
|
|
1543
1692
|
return "group";
|
|
1544
1693
|
}
|
|
1545
1694
|
|
|
1546
|
-
|
|
1547
|
-
|
|
1695
|
+
winrt::IInspectable ComponentView::EnsureUiaProvider() noexcept {
|
|
1696
|
+
if (m_uiaProvider == nullptr) {
|
|
1697
|
+
m_uiaProvider =
|
|
1698
|
+
winrt::make<winrt::Microsoft::ReactNative::implementation::CompositionDynamicAutomationProvider>(*get_strong());
|
|
1699
|
+
}
|
|
1700
|
+
return m_uiaProvider;
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
bool IntersectRect(RECT *prcDst, const RECT &prcSrc1, const RECT &prcSrc2) {
|
|
1704
|
+
prcDst->left = std::max(prcSrc1.left, prcSrc2.left);
|
|
1705
|
+
prcDst->right = std::min(prcSrc1.right, prcSrc2.right);
|
|
1706
|
+
|
|
1707
|
+
if (prcDst->left < prcDst->right) {
|
|
1708
|
+
prcDst->top = std::max(prcSrc1.top, prcSrc2.top);
|
|
1709
|
+
prcDst->bottom = std::min(prcSrc1.bottom, prcSrc2.bottom);
|
|
1710
|
+
|
|
1711
|
+
if (prcDst->top < prcDst->bottom) {
|
|
1712
|
+
return true;
|
|
1713
|
+
}
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
prcDst->left = prcDst->top = prcDst->right = prcDst->bottom = 0;
|
|
1717
|
+
return false;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
winrt::Microsoft::ReactNative::implementation::ClipState ComponentView::getClipState() noexcept {
|
|
1721
|
+
if (!m_parent) {
|
|
1722
|
+
return winrt::Microsoft::ReactNative::implementation::ClipState::FullyClipped;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
RECT intersection;
|
|
1726
|
+
const auto parentRect =
|
|
1727
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(m_parent)->getClientRect();
|
|
1728
|
+
const auto clientRect = getClientRect();
|
|
1729
|
+
|
|
1730
|
+
IntersectRect(&intersection, parentRect, clientRect);
|
|
1731
|
+
|
|
1732
|
+
if (intersection == clientRect) {
|
|
1733
|
+
return m_parent.as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()->getClipState();
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
if (((intersection.right - intersection.left) == 0) && ((intersection.bottom - intersection.top) == 0)) {
|
|
1737
|
+
return winrt::Microsoft::ReactNative::implementation::ClipState::FullyClipped;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
if (m_parent.as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()->getClipState() ==
|
|
1741
|
+
winrt::Microsoft::ReactNative::implementation::ClipState::FullyClipped) {
|
|
1742
|
+
return winrt::Microsoft::ReactNative::implementation::ClipState::FullyClipped;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
return winrt::Microsoft::ReactNative::implementation::ClipState::PartialClip;
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
1749
|
+
|
|
1750
|
+
namespace winrt::Microsoft::ReactNative::implementation {
|
|
1751
|
+
|
|
1752
|
+
winrt::Microsoft::ReactNative::ComponentView lastDeepChild(
|
|
1753
|
+
const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
|
|
1754
|
+
auto current = view;
|
|
1548
1755
|
while (current) {
|
|
1549
|
-
auto children = current
|
|
1550
|
-
|
|
1551
|
-
if (itLastChild == children.rend()) {
|
|
1756
|
+
auto children = current.Children();
|
|
1757
|
+
if (children.Size() == 0)
|
|
1552
1758
|
break;
|
|
1553
|
-
|
|
1554
|
-
current = *itLastChild;
|
|
1759
|
+
current = children.GetAt(children.Size() - 1);
|
|
1555
1760
|
}
|
|
1556
1761
|
return current;
|
|
1557
1762
|
}
|
|
1558
1763
|
|
|
1559
|
-
bool walkTree(
|
|
1764
|
+
bool walkTree(
|
|
1765
|
+
const winrt::Microsoft::ReactNative::ComponentView &view,
|
|
1766
|
+
bool forward,
|
|
1767
|
+
Mso::Functor<bool(const winrt::Microsoft::ReactNative::ComponentView &)> &fn) noexcept {
|
|
1560
1768
|
if (forward) {
|
|
1561
1769
|
if (fn(view)) {
|
|
1562
1770
|
return true;
|
|
1563
1771
|
}
|
|
1564
1772
|
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1773
|
+
auto children = view.Children();
|
|
1774
|
+
for (auto it = children.begin(); it != children.end(); ++it) {
|
|
1775
|
+
return walkTree(*it, forward, fn);
|
|
1568
1776
|
}
|
|
1569
1777
|
|
|
1570
|
-
auto current =
|
|
1571
|
-
auto parent = current
|
|
1778
|
+
auto current = view;
|
|
1779
|
+
auto parent = current.Parent();
|
|
1572
1780
|
while (parent) {
|
|
1573
|
-
auto
|
|
1781
|
+
auto parentsChildren = parent.Children();
|
|
1574
1782
|
auto itNextView = std::find(parentsChildren.begin(), parentsChildren.end(), current);
|
|
1575
1783
|
assert(itNextView != parentsChildren.end());
|
|
1576
1784
|
++itNextView;
|
|
1577
1785
|
if (itNextView != parentsChildren.end()) {
|
|
1578
|
-
return walkTree(
|
|
1786
|
+
return walkTree(*itNextView, true, fn);
|
|
1579
1787
|
}
|
|
1580
1788
|
current = parent;
|
|
1581
|
-
parent = current
|
|
1789
|
+
parent = current.Parent();
|
|
1582
1790
|
}
|
|
1583
1791
|
|
|
1584
1792
|
} else {
|
|
1585
|
-
auto current =
|
|
1586
|
-
auto parent = current
|
|
1793
|
+
auto current = view;
|
|
1794
|
+
auto parent = current.Parent();
|
|
1587
1795
|
while (parent) {
|
|
1588
|
-
auto
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
if (fn(*lastChild))
|
|
1796
|
+
auto parentsChildren = parent.Children();
|
|
1797
|
+
uint32_t index;
|
|
1798
|
+
bool success = parent.Children().IndexOf(current, index);
|
|
1799
|
+
assert(success);
|
|
1800
|
+
if (index > 0) {
|
|
1801
|
+
auto lastChild = lastDeepChild(parent.Children().GetAt(index - 1));
|
|
1802
|
+
if (fn(lastChild))
|
|
1596
1803
|
return true;
|
|
1597
|
-
return walkTree(
|
|
1804
|
+
return walkTree(lastChild, false, fn);
|
|
1598
1805
|
}
|
|
1599
1806
|
|
|
1600
|
-
if (fn(
|
|
1807
|
+
if (fn(parent)) {
|
|
1601
1808
|
return true;
|
|
1602
1809
|
}
|
|
1603
1810
|
current = parent;
|
|
1604
|
-
parent = current
|
|
1811
|
+
parent = current.Parent();
|
|
1605
1812
|
}
|
|
1606
1813
|
}
|
|
1607
1814
|
return false;
|
|
1608
1815
|
}
|
|
1609
1816
|
|
|
1610
|
-
winrt::
|
|
1611
|
-
if (m_uiaProvider == nullptr) {
|
|
1612
|
-
m_uiaProvider = winrt::make<winrt::Microsoft::ReactNative::implementation::CompositionDynamicAutomationProvider>(
|
|
1613
|
-
shared_from_this());
|
|
1614
|
-
}
|
|
1615
|
-
return m_uiaProvider;
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
|
-
} // namespace Microsoft::ReactNative
|
|
1817
|
+
} // namespace winrt::Microsoft::ReactNative::implementation
|