react-native-windows 0.80.1 → 0.81.0-preview.4
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 +10 -5
- package/Directory.Build.props +1 -1
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.js +3 -3
- package/Libraries/Alert/Alert.windows.js +5 -2
- package/Libraries/Alert/NativeAlertManager.js +1 -0
- package/Libraries/Alert/RCTAlertManager.android.js +19 -13
- package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
- package/Libraries/Alert/RCTAlertManager.js +1 -3
- package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
- package/Libraries/Animated/Animated.js +0 -1
- package/Libraries/Animated/Animated.js.flow +0 -1
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js +0 -1
- package/Libraries/Animated/AnimatedExports.js.flow +5 -1
- package/Libraries/Animated/AnimatedImplementation.js +44 -44
- package/Libraries/Animated/AnimatedMock.js +2 -2
- package/Libraries/Animated/Easing.js +1 -1
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/SpringConfig.js +1 -1
- package/Libraries/Animated/animations/Animation.js +10 -2
- package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
- package/Libraries/Animated/components/AnimatedText.js +2 -5
- package/Libraries/Animated/components/AnimatedView.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +39 -37
- package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
- package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
- package/Libraries/AppState/NativeAppState.js +1 -0
- package/Libraries/AppTheme/AppTheme.js +1 -1
- package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/BlobManager.js +4 -0
- package/Libraries/Blob/NativeBlobModule.js +1 -0
- package/Libraries/Blob/NativeFileReaderModule.js +1 -0
- package/Libraries/Blob/URL.js +1 -1
- package/Libraries/Blob/URLSearchParams.js +5 -1
- package/Libraries/Blob/URLSearchParams.js.flow +2 -1
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +1 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
- package/Libraries/Components/Button.js +10 -7
- package/Libraries/Components/Button.windows.js +4 -4
- package/Libraries/Components/Clipboard/Clipboard.js +1 -1
- package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
- package/Libraries/Components/Flyout/FlyoutNativeComponent.js +1 -1
- package/Libraries/Components/Glyph/GlyphNativeComponent.js +1 -1
- package/Libraries/Components/Keyboard/Keyboard.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
- package/Libraries/Components/Popup/PopupNativeComponent.js +1 -1
- package/Libraries/Components/Pressable/Pressable.js +17 -8
- package/Libraries/Components/Pressable/Pressable.windows.js +17 -14
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
- package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
- package/Libraries/Components/ScrollView/ScrollView.js +25 -15
- package/Libraries/Components/ScrollView/ScrollView.windows.js +25 -14
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
- package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
- package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
- package/Libraries/Components/Sound/SoundManager.js +1 -1
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
- package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
- package/Libraries/Components/StatusBar/StatusBar.js +6 -1
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
- package/Libraries/Components/Switch/Switch.js +10 -3
- package/Libraries/Components/Switch/Switch.windows.js +10 -3
- package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
- package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
- package/Libraries/Components/TextInput/TextInput.flow.windows.js +12 -15
- package/Libraries/Components/TextInput/TextInput.js +42 -39
- package/Libraries/Components/TextInput/TextInput.windows.js +69 -38
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -17
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
- package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Position.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +17 -3
- package/Libraries/Components/Touchable/Touchable.windows.js +17 -3
- package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +14 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +5 -3
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +10 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +3 -3
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
- package/Libraries/Components/View/View.js +114 -29
- package/Libraries/Components/View/View.windows.js +261 -217
- package/Libraries/Components/View/ViewAccessibility.js +1 -8
- package/Libraries/Components/View/ViewAccessibility.windows.js +1 -8
- package/Libraries/Components/View/ViewPropTypes.d.ts +21 -1
- package/Libraries/Components/View/ViewPropTypes.js +9 -1
- package/Libraries/Components/View/ViewPropTypes.windows.js +9 -1
- package/Libraries/Core/Devtools/getDevServer.js +1 -1
- package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
- package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +49 -7
- package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
- package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
- package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +27 -16
- package/Libraries/Core/InitializeCore.js +2 -23
- package/Libraries/Core/NativeExceptionsManager.js +1 -0
- package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +3 -2
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
- package/Libraries/Core/Timers/JSTimers.js +1 -1
- package/Libraries/Core/Timers/NativeTiming.js +1 -0
- package/Libraries/Core/Timers/immediateShim.js +1 -1
- package/Libraries/Core/Timers/queueMicrotask.js +1 -1
- package/Libraries/Core/checkNativeVersion.js +1 -0
- package/Libraries/Core/setUpDeveloperTools.js +13 -11
- package/Libraries/Core/setUpReactDevTools.js +21 -4
- package/Libraries/Debugging/DebuggingOverlay.js +12 -14
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
- package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
- package/Libraries/Image/AssetRegistry.js +4 -10
- package/Libraries/Image/Image.android.js +113 -107
- package/Libraries/Image/Image.ios.js +10 -2
- package/Libraries/Image/Image.windows.js +30 -20
- package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
- package/Libraries/Image/ImageInjection.js +1 -1
- package/Libraries/Image/ImageSource.d.ts +5 -0
- package/Libraries/Image/ImageViewNativeComponent.js +3 -3
- package/Libraries/Image/NativeImageEditor.js +1 -0
- package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
- package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/RelativeImageStub.js +2 -1
- package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Image/resolveAssetSource.windows.js +1 -1
- package/Libraries/Interaction/FrameRateLogger.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +64 -54
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/TaskQueue.js +8 -9
- package/Libraries/Interaction/TouchHistoryMath.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Linking/NativeIntentAndroid.js +1 -0
- package/Libraries/Linking/NativeLinkingManager.js +1 -0
- package/Libraries/Lists/FlatList.d.ts +9 -5
- package/Libraries/Lists/FlatList.js +6 -7
- package/Libraries/Lists/SectionList.js +4 -4
- package/Libraries/Lists/SectionListModern.js +9 -3
- package/Libraries/Lists/VirtualizedList.js +3 -2
- package/Libraries/LogBox/Data/LogBoxData.js +7 -4
- package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
- package/Libraries/LogBox/LogBox.js +72 -99
- package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
- package/Libraries/Modal/Modal.d.ts +8 -2
- package/Libraries/Modal/Modal.js +24 -3
- package/Libraries/Modal/Modal.windows.js +24 -3
- package/Libraries/Modal/NativeModalManager.js +1 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
- package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +9 -18
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
- package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
- package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +1 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
- package/Libraries/Network/FormData.js +1 -1
- package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
- package/Libraries/Network/NativeNetworkingIOS.js +1 -0
- package/Libraries/Network/RCTNetworking.android.js +2 -2
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.windows.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +3 -3
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/Pressability/Pressability.windows.js +1 -1
- package/Libraries/Promise.js +1 -1
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
- package/Libraries/ReactNative/AppContainer-dev.js +4 -4
- package/Libraries/ReactNative/AppContainer-prod.js +0 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
- package/Libraries/ReactNative/NativeI18nManager.js +1 -0
- package/Libraries/ReactNative/NativeUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +1 -1
- package/Libraries/ReactNative/RendererProxy.js +1 -1
- package/Libraries/ReactNative/RootTag.js +2 -2
- package/Libraries/ReactNative/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
- package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +261 -0
- package/Libraries/Settings/NativeSettingsManager.js +1 -0
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/Settings/Settings.js +1 -1
- package/Libraries/Settings/SettingsFallback.js +1 -1
- package/Libraries/Share/NativeShareModule.js +1 -0
- package/Libraries/Share/Share.js +1 -1
- package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
- package/Libraries/StyleSheet/PointPropType.js +1 -1
- package/Libraries/StyleSheet/Rect.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +1 -0
- package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +1 -1
- package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
- package/Libraries/StyleSheet/processBoxShadow.js +0 -1
- package/Libraries/StyleSheet/processColor.js +1 -1
- package/Libraries/StyleSheet/processColorArray.js +1 -1
- package/Libraries/StyleSheet/processFilter.js +1 -2
- package/Libraries/StyleSheet/processFontVariant.js +1 -1
- package/Libraries/StyleSheet/processTransform.js +1 -1
- package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
- package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
- package/Libraries/Text/Text.d.ts +1 -2
- package/Libraries/Text/Text.js +255 -246
- package/Libraries/Text/Text.windows.js +282 -301
- package/Libraries/Text/TextAncestor.js +3 -9
- package/Libraries/Text/TextAncestorContext.js +23 -0
- package/Libraries/Text/TextNativeComponent.js +4 -0
- package/Libraries/Text/TextProps.js +2 -5
- package/Libraries/Text/TextProps.windows.js +2 -6
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CodegenTypesNamespace.js +2 -1
- package/Libraries/Types/CoreEventTypes.d.ts +4 -0
- package/Libraries/Types/ReactDevToolsTypes.js +0 -1
- package/Libraries/Utilities/Appearance.js +1 -1
- package/Libraries/Utilities/BackHandler.js.flow +1 -1
- package/Libraries/Utilities/DevLoadingView.js +1 -1
- package/Libraries/Utilities/DeviceInfo.js +1 -1
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/HMRClient.js +13 -3
- package/Libraries/Utilities/HMRClientProdShim.js +1 -1
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
- package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
- package/Libraries/Utilities/PixelRatio.js +1 -1
- package/Libraries/Utilities/Platform.android.js +2 -5
- package/Libraries/Utilities/Platform.ios.js +2 -5
- package/Libraries/Utilities/Platform.js +1 -1
- package/Libraries/Utilities/Platform.js.flow +2 -2
- package/Libraries/Utilities/Platform.windows.js +2 -5
- package/Libraries/Utilities/PlatformTypes.js +2 -2
- package/Libraries/Utilities/RCTLog.js +1 -1
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +5 -3
- package/Libraries/Utilities/codegenNativeComponent.js +4 -4
- package/Libraries/Utilities/createPerformanceLogger.js +27 -20
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
- package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
- package/Libraries/Utilities/differ/deepDiffer.js +1 -1
- package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
- package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
- package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/mapWithSeparator.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +1 -1
- package/Libraries/Utilities/stringifyViewConfig.js +1 -1
- package/Libraries/Utilities/useColorScheme.js +1 -1
- package/Libraries/Utilities/useWindowDimensions.js +1 -1
- package/Libraries/Utilities/warnOnce.js +1 -1
- package/Libraries/Vibration/NativeVibration.js +1 -0
- package/Libraries/Vibration/Vibration.js +1 -2
- package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +6 -6
- package/Microsoft.ReactNative/CompositionSwitcher.idl +163 -162
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +3 -3
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +2 -1
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +2 -2
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +2 -1
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +104 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +18 -7
- package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.cpp +169 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.h +42 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +41 -33
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +68 -1
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +9 -0
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +108 -24
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -1
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +6 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +62 -39
- package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.cpp +75 -24
- package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.h +4 -25
- package/Microsoft.ReactNative/JsiApi.cpp +1 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -0
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +3 -0
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +0 -2
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -1
- package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +27 -11
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
- package/Microsoft.ReactNative/QuirkSettings.cpp +16 -0
- package/Microsoft.ReactNative/QuirkSettings.h +3 -0
- package/Microsoft.ReactNative/QuirkSettings.idl +5 -0
- package/Microsoft.ReactNative/ReactHost/DebuggerNotifications.h +54 -0
- package/Microsoft.ReactNative/ReactHost/React.h +11 -4
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +199 -29
- package/Microsoft.ReactNative/ReactHost/ReactHost.h +22 -4
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +68 -52
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactRootView.cpp +108 -0
- package/Microsoft.ReactNative/ReactRootView.h +6 -0
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +1 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -1
- package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
- package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
- package/Microsoft.ReactNative/Views/ViewManager.h +0 -1
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +41 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +16 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +125 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +167 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +110 -38
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +5 -5
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +0 -2
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.h +0 -19
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +14 -8
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +44 -31
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +13 -14
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +19 -4
- package/Microsoft.ReactNative.Cxx/node-api/node_api.h +270 -0
- package/Microsoft.ReactNative.Cxx/node-api/node_api_types.h +52 -0
- package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +13 -4
- package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/React.Cpp.props +6 -4
- package/README.md +1 -1
- package/ReactCommon/ReactCommon.vcxproj +29 -21
- package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +6 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +111 -7
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +57 -4
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +17 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/network/HttpUtils.cpp +175 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +69 -56
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +35 -18
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +445 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +37 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +250 -80
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +528 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +9 -12
- package/ReactCommon/cgmanifest.json +1 -1
- package/Scripts/Analyze-Crash.ps1 +87 -3
- package/Scripts/OfficeReact.Win32.nuspec +0 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -0
- package/Scripts/Tfs/Start-TestServers.ps1 +2 -1
- package/Scripts/creaternwapp.cmd +10 -6
- package/Scripts/rnw-dependencies.ps1 +33 -4
- package/Shared/CreateModules.h +0 -35
- package/Shared/DevServerHelper.h +13 -3
- package/Shared/DevSettings.h +6 -5
- package/Shared/DevSupportManager.cpp +79 -20
- package/Shared/DevSupportManager.h +7 -19
- package/Shared/Hermes/HermesRuntimeAgentDelegate.cpp +99 -0
- package/Shared/Hermes/HermesRuntimeAgentDelegate.h +81 -0
- package/Shared/Hermes/HermesRuntimeTargetDelegate.cpp +274 -0
- package/Shared/Hermes/HermesRuntimeTargetDelegate.h +77 -0
- package/Shared/HermesRuntimeHolder.cpp +29 -111
- package/Shared/HermesRuntimeHolder.h +214 -32
- package/Shared/IDevSupportManager.h +5 -2
- package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.cpp +108 -0
- package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.h +19 -0
- package/Shared/Inspector/ReactInspectorThread.h +18 -0
- package/Shared/JSI/RuntimeHolder.h +5 -2
- package/Shared/Modules/BlobModule.cpp +0 -90
- package/Shared/Modules/BlobModule.h +0 -40
- package/Shared/Modules/FileReaderModule.cpp +0 -104
- package/Shared/Modules/FileReaderModule.h +0 -38
- package/Shared/Modules/HttpModule.cpp +0 -172
- package/Shared/Modules/HttpModule.h +0 -47
- package/Shared/Modules/WebSocketModule.cpp +0 -287
- package/Shared/Modules/WebSocketModule.h +1 -94
- package/Shared/OInstance.cpp +45 -139
- package/Shared/OInstance.h +0 -1
- package/Shared/Shared.vcxitems +33 -32
- package/Shared/Shared.vcxitems.filters +38 -51
- package/Shared/TurboModuleManager.cpp +0 -1
- package/codegen/NativeDOMSpec.g.h +6 -0
- package/codegen/NativeDeviceInfoSpec.g.h +2 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
- package/codegen/NativeMutationObserverSpec.g.h +4 -4
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +159 -93
- package/codegen/react/components/rnwcore/EventEmitters.cpp +25 -0
- package/codegen/react/components/rnwcore/EventEmitters.h +25 -0
- package/codegen/react/components/rnwcore/ModalHostView.g.h +4 -0
- package/codegen/react/components/rnwcore/Props.cpp +535 -24
- package/codegen/react/components/rnwcore/Props.h +138 -0
- package/codegen/react/components/rnwcore/States.h +9 -78
- package/codegen/react/components/rnwcore/VirtualView.g.h +226 -0
- package/codegen/rnwcoreJSI-generated.cpp +101 -31
- package/codegen/rnwcoreJSI.h +169 -88
- package/include/Shared/II18nModule.h +0 -1
- package/index.js +22 -2
- package/index.windows.js +131 -221
- package/interface.js +1 -1
- package/jest/MockNativeMethods.js +9 -3
- package/jest/RefreshControlMock.js +32 -0
- package/jest/assetFileTransformer.js +1 -0
- package/jest/local-setup.js +4 -3
- package/jest/mock.js +39 -0
- package/jest/mockComponent.js +47 -17
- package/jest/mockNativeComponent.js +26 -15
- package/jest/mocks/AccessibilityInfo.js +62 -0
- package/jest/mocks/ActivityIndicator.js +23 -0
- package/jest/mocks/AppState.js +19 -0
- package/jest/mocks/Clipboard.js +16 -0
- package/jest/mocks/Image.js +23 -0
- package/jest/mocks/InitializeCore.js +9 -0
- package/jest/mocks/Linking.js +28 -0
- package/jest/mocks/Modal.js +33 -0
- package/jest/mocks/NativeComponentRegistry.js +30 -0
- package/jest/mocks/NativeModules.js +239 -0
- package/jest/mocks/RefreshControl.js +31 -0
- package/jest/mocks/RendererProxy.js +45 -0
- package/jest/mocks/ScrollView.js +58 -0
- package/jest/mocks/Text.js +27 -0
- package/jest/mocks/TextInput.js +32 -0
- package/jest/mocks/UIManager.js +60 -0
- package/jest/mocks/Vibration.js +16 -0
- package/jest/mocks/View.js +27 -0
- package/jest/mocks/ViewNativeComponent.js +23 -0
- package/jest/mocks/requireNativeComponent.js +22 -0
- package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
- package/jest/react-native-env.js +1 -0
- package/jest/renderer.js +1 -2
- package/jest/resolver.js +1 -0
- package/jest/setup.js +64 -449
- package/package.json +24 -24
- package/src/private/animated/NativeAnimatedHelper.js +8 -1
- package/src/private/animated/createAnimatedPropsHook.js +14 -4
- package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
- package/src/private/components/virtualview/VirtualView.js +145 -0
- package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
- package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
- package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
- package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.windows.js +8 -9
- package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
- package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
- package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
- package/src/private/setup/setUpPerformanceObserver.js +7 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
- package/src/private/styles/composeStyles.js +5 -12
- package/src/private/types/HostInstance.js +1 -1
- package/src/private/webapis/dom/events/Event.js +3 -0
- package/src/private/webapis/dom/events/EventTarget.js +3 -0
- package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
- package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
- package/src/private/webapis/errors/DOMException.js +166 -0
- package/src/private/webapis/geometry/DOMRect.js +5 -0
- package/src/private/webapis/geometry/DOMRectList.js +4 -1
- package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
- package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
- package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
- package/src/private/webapis/performance/EventTiming.js +1 -1
- package/src/private/webapis/performance/LongTasks.js +1 -1
- package/src/private/webapis/performance/MemoryInfo.js +4 -1
- package/src/private/webapis/performance/Performance.js +20 -9
- package/src/private/webapis/performance/PerformanceEntry.js +5 -1
- package/src/private/webapis/performance/PerformanceObserver.js +32 -28
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
- package/src/private/webapis/performance/ResourceTiming.js +108 -0
- package/src/private/webapis/performance/UserTiming.js +1 -1
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
- package/src/private/webapis/structuredClone/structuredClone.js +233 -0
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src/private/webapis/webidl/PlatformObjects.js +59 -0
- package/template/metro.config.js +2 -4
- package/templates/cpp-app/metro.config.js +2 -4
- package/templates/cpp-lib/example/metro.config.js +2 -3
- package/templates/cpp-lib/template.config.js +24 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.h +20 -1
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
- package/types/modules/Devtools.d.ts +23 -9
- package/Libraries/BugReporting/BugReporting.js +0 -140
- package/Libraries/BugReporting/NativeBugReporting.js +0 -13
- package/Libraries/BugReporting/dumpReactTree.js +0 -151
- package/Libraries/BugReporting/getReactData.js +0 -187
- package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jserrorhandler/JsErrorHandler.cpp +0 -429
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.cpp +0 -45
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.h +0 -91
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/CullingContext.cpp +0 -49
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +0 -191
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +0 -670
- package/Shared/InspectorPackagerConnection.cpp +0 -232
- package/Shared/InspectorPackagerConnection.h +0 -61
- package/Shared/Modules/ExceptionsManagerModule.cpp +0 -209
- package/Shared/Modules/ExceptionsManagerModule.h +0 -32
- package/Shared/Modules/I18nModule.cpp +0 -36
- package/Shared/Modules/I18nModule.h +0 -28
- package/Shared/Modules/NetworkingModule.cpp +0 -432
- package/Shared/Modules/NetworkingModule.h +0 -34
- package/Shared/Modules/PlatformConstantsModule.cpp +0 -60
- package/Shared/Modules/PlatformConstantsModule.h +0 -23
- package/Shared/Modules/SourceCodeModule.cpp +0 -35
- package/Shared/Modules/SourceCodeModule.h +0 -27
- package/Shared/Modules/StatusBarManagerModule.cpp +0 -25
- package/Shared/Modules/StatusBarManagerModule.h +0 -19
- package/codegen/NativeBugReportingSpec.g.h +0 -41
- package/jest/mockModal.js +0 -32
- package/jest/mockScrollView.js +0 -35
- package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
- /package/Shared/{HermesSamplingProfiler.cpp → Hermes/HermesSamplingProfiler.cpp} +0 -0
- /package/Shared/{HermesSamplingProfiler.h → Hermes/HermesSamplingProfiler.h} +0 -0
package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#include <winrt/Microsoft.UI.Input.h>
|
|
20
20
|
#include <winrt/Windows.System.h>
|
|
21
21
|
#include <winrt/Windows.UI.h>
|
|
22
|
+
#include "../Composition.Input.h"
|
|
22
23
|
#include "../CompositionHelpers.h"
|
|
23
24
|
#include "../RootComponentView.h"
|
|
24
25
|
#include "JSValueReader.h"
|
|
@@ -216,15 +217,14 @@ struct CompTextHost : public winrt::implements<CompTextHost, ITextHost> {
|
|
|
216
217
|
|
|
217
218
|
//@cmember Get mouse capture
|
|
218
219
|
void TxSetCapture(BOOL fCapture) override {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
auto mousePointer = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::Pointer>(
|
|
221
|
+
winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Mouse, 1 /* 1 is Mouse PointerId*/);
|
|
222
|
+
|
|
222
223
|
if (fCapture) {
|
|
223
|
-
|
|
224
|
+
m_outer->CapturePointer(mousePointer);
|
|
224
225
|
} else {
|
|
225
|
-
|
|
226
|
+
m_outer->ReleasePointerCapture(mousePointer);
|
|
226
227
|
}
|
|
227
|
-
*/
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
//@cmember Set the focus to the text window
|
|
@@ -697,10 +697,17 @@ void WindowsTextInputComponentView::OnPointerPressed(
|
|
|
697
697
|
}
|
|
698
698
|
|
|
699
699
|
if (m_textServices && msg) {
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
700
|
+
if (msg == WM_RBUTTONUP && !windowsTextInputProps().contextMenuHidden) {
|
|
701
|
+
ShowContextMenu(position);
|
|
702
|
+
args.Handled(true);
|
|
703
|
+
} else if (msg == WM_RBUTTONUP && windowsTextInputProps().contextMenuHidden) {
|
|
704
|
+
args.Handled(true);
|
|
705
|
+
} else {
|
|
706
|
+
LRESULT lresult;
|
|
707
|
+
DrawBlock db(*this);
|
|
708
|
+
auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
|
|
709
|
+
args.Handled(hr != S_FALSE);
|
|
710
|
+
}
|
|
704
711
|
}
|
|
705
712
|
|
|
706
713
|
// Emits the OnPressIn event
|
|
@@ -844,8 +851,8 @@ void WindowsTextInputComponentView::OnPointerWheelChanged(
|
|
|
844
851
|
}
|
|
845
852
|
void WindowsTextInputComponentView::OnKeyDown(
|
|
846
853
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
847
|
-
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
848
|
-
// behavior We do forward Ctrl+Tab to the textinput.
|
|
854
|
+
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
855
|
+
// WinUI behavior We do forward Ctrl+Tab to the textinput.
|
|
849
856
|
if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
|
|
850
857
|
(args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
|
|
851
858
|
winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
|
|
@@ -872,8 +879,8 @@ void WindowsTextInputComponentView::OnKeyDown(
|
|
|
872
879
|
|
|
873
880
|
void WindowsTextInputComponentView::OnKeyUp(
|
|
874
881
|
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
|
|
875
|
-
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
876
|
-
// behavior We do forward Ctrl+Tab to the textinput.
|
|
882
|
+
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
883
|
+
// WinUI behavior We do forward Ctrl+Tab to the textinput.
|
|
877
884
|
if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
|
|
878
885
|
(args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
|
|
879
886
|
winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
|
|
@@ -943,8 +950,8 @@ bool WindowsTextInputComponentView::ShouldSubmit(
|
|
|
943
950
|
|
|
944
951
|
void WindowsTextInputComponentView::OnCharacterReceived(
|
|
945
952
|
const winrt::Microsoft::ReactNative::Composition::Input::CharacterReceivedRoutedEventArgs &args) noexcept {
|
|
946
|
-
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
947
|
-
// behavior We do forward Ctrl+Tab to the textinput.
|
|
953
|
+
// Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
|
|
954
|
+
// WinUI behavior We do forward Ctrl+Tab to the textinput.
|
|
948
955
|
if ((args.KeyCode() == '\t') &&
|
|
949
956
|
((args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
|
|
950
957
|
winrt::Microsoft::UI::Input::VirtualKeyStates::Down) != winrt::Microsoft::UI::Input::VirtualKeyStates::Down)) {
|
|
@@ -1547,25 +1554,59 @@ void WindowsTextInputComponentView::UpdateParaFormat() noexcept {
|
|
|
1547
1554
|
m_pf.dwMask = PFM_ALL;
|
|
1548
1555
|
|
|
1549
1556
|
auto &textAlign = windowsTextInputProps().textAlign;
|
|
1557
|
+
auto &baseWritingDirection = windowsTextInputProps().textAttributes.baseWritingDirection;
|
|
1558
|
+
|
|
1559
|
+
// Handle writingDirection (baseWritingDirection)
|
|
1560
|
+
// For WritingDirection::Natural, use the computed layout direction from the layout tree
|
|
1561
|
+
// since direction can be overridden at any point in the tree
|
|
1562
|
+
bool isRTL = false;
|
|
1563
|
+
if (baseWritingDirection.has_value()) {
|
|
1564
|
+
if (*baseWritingDirection == facebook::react::WritingDirection::RightToLeft) {
|
|
1565
|
+
isRTL = true;
|
|
1566
|
+
m_pf.dwMask |= PFM_RTLPARA;
|
|
1567
|
+
m_pf.wEffects |= PFE_RTLPARA;
|
|
1568
|
+
} else if (*baseWritingDirection == facebook::react::WritingDirection::LeftToRight) {
|
|
1569
|
+
isRTL = false;
|
|
1570
|
+
// Ensure RTL flag is not set
|
|
1571
|
+
m_pf.wEffects &= ~PFE_RTLPARA;
|
|
1572
|
+
} else if (*baseWritingDirection == facebook::react::WritingDirection::Natural) {
|
|
1573
|
+
// Natural uses the layout direction computed from the tree
|
|
1574
|
+
isRTL = (layoutMetrics().layoutDirection == facebook::react::LayoutDirection::RightToLeft);
|
|
1575
|
+
if (isRTL) {
|
|
1576
|
+
m_pf.dwMask |= PFM_RTLPARA;
|
|
1577
|
+
m_pf.wEffects |= PFE_RTLPARA;
|
|
1578
|
+
} else {
|
|
1579
|
+
m_pf.wEffects &= ~PFE_RTLPARA;
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
} else {
|
|
1583
|
+
// No explicit writing direction set - use layout direction from tree
|
|
1584
|
+
isRTL = (layoutMetrics().layoutDirection == facebook::react::LayoutDirection::RightToLeft);
|
|
1585
|
+
if (isRTL) {
|
|
1586
|
+
m_pf.dwMask |= PFM_RTLPARA;
|
|
1587
|
+
m_pf.wEffects |= PFE_RTLPARA;
|
|
1588
|
+
} else {
|
|
1589
|
+
m_pf.wEffects &= ~PFE_RTLPARA;
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1550
1592
|
|
|
1593
|
+
// Handle textAlign
|
|
1551
1594
|
if (textAlign == facebook::react::TextAlignment::Center) {
|
|
1552
1595
|
m_pf.wAlignment = PFA_CENTER;
|
|
1553
1596
|
} else if (textAlign == facebook::react::TextAlignment::Right) {
|
|
1554
1597
|
m_pf.wAlignment = PFA_RIGHT;
|
|
1598
|
+
} else if (textAlign == facebook::react::TextAlignment::Justified) {
|
|
1599
|
+
m_pf.wAlignment = PFA_JUSTIFY;
|
|
1600
|
+
} else if (textAlign == facebook::react::TextAlignment::Natural) {
|
|
1601
|
+
// Natural alignment respects writing direction
|
|
1602
|
+
m_pf.wAlignment = isRTL ? PFA_RIGHT : PFA_LEFT;
|
|
1555
1603
|
} else {
|
|
1604
|
+
// Default to left alignment
|
|
1556
1605
|
m_pf.wAlignment = PFA_LEFT;
|
|
1557
1606
|
}
|
|
1558
1607
|
|
|
1559
1608
|
m_pf.cTabCount = 1;
|
|
1560
1609
|
m_pf.rgxTabs[0] = lDefaultTab;
|
|
1561
|
-
|
|
1562
|
-
/*
|
|
1563
|
-
if (m_spcontroller->IsCurrentReadingOrderRTL())
|
|
1564
|
-
{
|
|
1565
|
-
m_pf.dwMask |= PFM_RTLPARA;
|
|
1566
|
-
m_pf.wEffects |= PFE_RTLPARA;
|
|
1567
|
-
}
|
|
1568
|
-
*/
|
|
1569
1610
|
}
|
|
1570
1611
|
|
|
1571
1612
|
void WindowsTextInputComponentView::OnRenderingDeviceLost() noexcept {
|
|
@@ -1826,4 +1867,47 @@ void WindowsTextInputComponentView::updateSpellCheck(bool enable) noexcept {
|
|
|
1826
1867
|
winrt::check_hresult(
|
|
1827
1868
|
m_textServices->TxSendMessage(EM_SETLANGOPTIONS, IMF_SPELLCHECKING, enable ? newLangOptions : 0, &lresult));
|
|
1828
1869
|
}
|
|
1870
|
+
|
|
1871
|
+
void WindowsTextInputComponentView::ShowContextMenu(const winrt::Windows::Foundation::Point &position) noexcept {
|
|
1872
|
+
HMENU menu = CreatePopupMenu();
|
|
1873
|
+
if (!menu)
|
|
1874
|
+
return;
|
|
1875
|
+
|
|
1876
|
+
CHARRANGE selection;
|
|
1877
|
+
LRESULT res;
|
|
1878
|
+
m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&selection), &res);
|
|
1879
|
+
|
|
1880
|
+
bool hasSelection = selection.cpMin != selection.cpMax;
|
|
1881
|
+
bool isEmpty = GetTextFromRichEdit().empty();
|
|
1882
|
+
bool isReadOnly = windowsTextInputProps().editable == false;
|
|
1883
|
+
bool canPaste = !isReadOnly && IsClipboardFormatAvailable(CF_UNICODETEXT);
|
|
1884
|
+
|
|
1885
|
+
AppendMenuW(menu, MF_STRING | (hasSelection && !isReadOnly ? 0 : MF_GRAYED), 1, L"Cut");
|
|
1886
|
+
AppendMenuW(menu, MF_STRING | (hasSelection ? 0 : MF_GRAYED), 2, L"Copy");
|
|
1887
|
+
AppendMenuW(menu, MF_STRING | (canPaste ? 0 : MF_GRAYED), 3, L"Paste");
|
|
1888
|
+
AppendMenuW(menu, MF_STRING | (!isEmpty && !isReadOnly ? 0 : MF_GRAYED), 4, L"Select All");
|
|
1889
|
+
|
|
1890
|
+
POINT cursorPos;
|
|
1891
|
+
GetCursorPos(&cursorPos);
|
|
1892
|
+
|
|
1893
|
+
HWND hwnd = GetActiveWindow();
|
|
1894
|
+
|
|
1895
|
+
int cmd = TrackPopupMenu(
|
|
1896
|
+
menu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwnd, NULL);
|
|
1897
|
+
|
|
1898
|
+
if (cmd == 1) { // Cut
|
|
1899
|
+
m_textServices->TxSendMessage(WM_CUT, 0, 0, &res);
|
|
1900
|
+
OnTextUpdated();
|
|
1901
|
+
} else if (cmd == 2) { // Copy
|
|
1902
|
+
m_textServices->TxSendMessage(WM_COPY, 0, 0, &res);
|
|
1903
|
+
} else if (cmd == 3) { // Paste
|
|
1904
|
+
m_textServices->TxSendMessage(WM_PASTE, 0, 0, &res);
|
|
1905
|
+
OnTextUpdated();
|
|
1906
|
+
} else if (cmd == 4) { // Select All
|
|
1907
|
+
m_textServices->TxSendMessage(EM_SETSEL, 0, -1, &res);
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1910
|
+
DestroyMenu(menu);
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1829
1913
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -118,6 +118,7 @@ struct WindowsTextInputComponentView
|
|
|
118
118
|
void updateLetterSpacing(float letterSpacing) noexcept;
|
|
119
119
|
void updateAutoCorrect(bool value) noexcept;
|
|
120
120
|
void updateSpellCheck(bool value) noexcept;
|
|
121
|
+
void ShowContextMenu(const winrt::Windows::Foundation::Point &position) noexcept;
|
|
121
122
|
|
|
122
123
|
winrt::Windows::UI::Composition::CompositionSurfaceBrush m_brush{nullptr};
|
|
123
124
|
winrt::Microsoft::ReactNative::Composition::Experimental::ICaretVisual m_caretVisual{nullptr};
|
|
@@ -125,8 +125,8 @@ void WindowsTextInputShadowNode::updateStateIfNeeded(const LayoutContext &layout
|
|
|
125
125
|
// so no changes are applied There's no way to prevent a state update from
|
|
126
126
|
// flowing to Java, so we just ensure it's a noop in those cases.
|
|
127
127
|
|
|
128
|
-
setStateData(
|
|
129
|
-
AttributedStringBox(newAttributedString), reactTreeAttributedString, {}, newEventCount});
|
|
128
|
+
setStateData(
|
|
129
|
+
WindowsTextInputState{AttributedStringBox(newAttributedString), reactTreeAttributedString, {}, newEventCount});
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
AttributedString WindowsTextInputShadowNode::getAttributedString(const LayoutContext &layoutContext) const {
|
|
@@ -181,24 +181,28 @@ AttributedString WindowsTextInputShadowNode::getMostRecentAttributedString(const
|
|
|
181
181
|
return (!treeAttributedStringChanged ? state.attributedStringBox.getValue() : reactTreeAttributedString);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
// For measurement purposes, we want to make sure that there's at least a
|
|
185
|
-
// single character in the string so that the measured height is greater
|
|
186
|
-
// than zero. Otherwise, empty TextInputs with no placeholder don't
|
|
187
|
-
// display at all.
|
|
188
|
-
// TODO T67606511: We will redefine the measurement of empty strings as part
|
|
189
|
-
// of T67606511
|
|
190
184
|
AttributedString WindowsTextInputShadowNode::getPlaceholderAttributedString(const LayoutContext &layoutContext) const {
|
|
191
|
-
const auto &props =
|
|
185
|
+
const auto &props = getConcreteProps();
|
|
192
186
|
|
|
193
187
|
AttributedString attributedString;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
188
|
+
//[windows
|
|
189
|
+
if (!props.placeholder.empty()) {
|
|
190
|
+
auto textAttributes = TextAttributes::defaultTextAttributes();
|
|
191
|
+
textAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier;
|
|
192
|
+
textAttributes.apply(props.textAttributes);
|
|
193
|
+
|
|
194
|
+
/*
|
|
195
|
+
* These props are applied to `View`, therefore they must not be a part of
|
|
196
|
+
* base text attributes.
|
|
197
|
+
*/
|
|
198
|
+
textAttributes.backgroundColor = clearColor();
|
|
199
|
+
textAttributes.opacity = 1;
|
|
200
|
+
|
|
201
|
+
attributedString.appendFragment(
|
|
202
|
+
{.string = props.placeholder, .textAttributes = textAttributes, .parentShadowView = ShadowView(*this)});
|
|
203
|
+
}
|
|
204
|
+
// windows]
|
|
205
|
+
|
|
202
206
|
return attributedString;
|
|
203
207
|
}
|
|
204
208
|
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
6
|
#include <react/renderer/textlayoutmanager/WindowsTextLayoutManager.h>
|
|
7
|
+
#include "WindowsTextInputEventEmitter.h"
|
|
8
|
+
#include "WindowsTextInputProps.h"
|
|
9
|
+
#include "WindowsTextInputState.h"
|
|
7
10
|
|
|
8
11
|
#include <react/components/rnwcore/EventEmitters.h>
|
|
9
12
|
#include <unordered_map>
|
|
10
|
-
#include "WindowsTextInputEventEmitter.h"
|
|
11
|
-
#include "WindowsTextInputProps.h"
|
|
12
13
|
|
|
13
14
|
#include <react/renderer/attributedstring/AttributedString.h>
|
|
14
|
-
#include <react/renderer/components/textinput/TextInputState.h>
|
|
15
15
|
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
16
16
|
#include <react/utils/ContextContainer.h>
|
|
17
17
|
|
|
@@ -26,7 +26,7 @@ class WindowsTextInputShadowNode final : public ConcreteViewShadowNode<
|
|
|
26
26
|
WindowsTextInputComponentName,
|
|
27
27
|
WindowsTextInputProps,
|
|
28
28
|
WindowsTextInputEventEmitter,
|
|
29
|
-
|
|
29
|
+
WindowsTextInputState> {
|
|
30
30
|
public:
|
|
31
31
|
using ConcreteViewShadowNode::ConcreteViewShadowNode;
|
|
32
32
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "WindowsTextInputState.h"
|
|
9
|
+
|
|
10
|
+
#include <react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h> // [windows]
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
folly::dynamic WindowsTextInputState::getDynamic() const {
|
|
15
|
+
LOG(FATAL) << "TextInputState state should only be read using MapBuffer";
|
|
16
|
+
return folly::dynamic::object(); // windows
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <react/renderer/attributedstring/AttributedStringBox.h>
|
|
11
|
+
#include <react/renderer/attributedstring/ParagraphAttributes.h>
|
|
12
|
+
#include <react/renderer/textlayoutmanager/TextLayoutManager.h>
|
|
13
|
+
|
|
14
|
+
#include <folly/dynamic.h>
|
|
15
|
+
#include <react/renderer/mapbuffer/MapBuffer.h>
|
|
16
|
+
#include <react/renderer/mapbuffer/MapBufferBuilder.h> // [windows]
|
|
17
|
+
|
|
18
|
+
namespace facebook::react {
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* State for <TextInput> component.
|
|
22
|
+
*/
|
|
23
|
+
class WindowsTextInputState final {
|
|
24
|
+
public:
|
|
25
|
+
WindowsTextInputState() = default;
|
|
26
|
+
|
|
27
|
+
WindowsTextInputState(
|
|
28
|
+
AttributedStringBox attributedStringBox,
|
|
29
|
+
AttributedString reactTreeAttributedString,
|
|
30
|
+
ParagraphAttributes paragraphAttributes,
|
|
31
|
+
int64_t mostRecentEventCount)
|
|
32
|
+
: attributedStringBox(std::move(attributedStringBox)),
|
|
33
|
+
reactTreeAttributedString(std::move(reactTreeAttributedString)),
|
|
34
|
+
paragraphAttributes(std::move(paragraphAttributes)),
|
|
35
|
+
mostRecentEventCount(mostRecentEventCount) {}
|
|
36
|
+
|
|
37
|
+
WindowsTextInputState(const WindowsTextInputState &previousState, const folly::dynamic &data)
|
|
38
|
+
: attributedStringBox(previousState.attributedStringBox),
|
|
39
|
+
reactTreeAttributedString(previousState.reactTreeAttributedString),
|
|
40
|
+
paragraphAttributes(previousState.paragraphAttributes),
|
|
41
|
+
mostRecentEventCount(data.getDefault("mostRecentEventCount", previousState.mostRecentEventCount).getInt()),
|
|
42
|
+
cachedAttributedStringId(data.getDefault("opaqueCacheId", previousState.cachedAttributedStringId).getInt()) {}
|
|
43
|
+
|
|
44
|
+
folly::dynamic getDynamic() const;
|
|
45
|
+
MapBuffer getMapBuffer() const;
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* All content of <TextInput> component.
|
|
49
|
+
*/
|
|
50
|
+
AttributedStringBox attributedStringBox;
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* All content of <TextInput> component represented as an `AttributedString`.
|
|
54
|
+
* This stores the previous computed *from the React tree*. This usually
|
|
55
|
+
* doesn't change as the TextInput contents are being updated. If it does
|
|
56
|
+
* change, we need to wipe out current contents of the TextInput and replace
|
|
57
|
+
* with the new value from the tree.
|
|
58
|
+
*/
|
|
59
|
+
AttributedString reactTreeAttributedString{};
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* Represents all visual attributes of a paragraph of text represented as
|
|
63
|
+
* a ParagraphAttributes.
|
|
64
|
+
*/
|
|
65
|
+
ParagraphAttributes paragraphAttributes;
|
|
66
|
+
|
|
67
|
+
int64_t mostRecentEventCount{0};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Stores an opaque cache ID used on the Java side to refer to a specific
|
|
71
|
+
* AttributedString for measurement purposes only.
|
|
72
|
+
*/
|
|
73
|
+
int64_t cachedAttributedStringId{0};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
} // namespace facebook::react
|
|
@@ -167,6 +167,9 @@ void FabricUIManager::setProps(facebook::react::SurfaceId surfaceId, const folly
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
void FabricUIManager::stopSurface(facebook::react::SurfaceId surfaceId) noexcept {
|
|
170
|
+
if (surfaceId == -1) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
170
173
|
visit(surfaceId, [&](const facebook::react::SurfaceHandler &surfaceHandler) {
|
|
171
174
|
surfaceHandler.stop();
|
|
172
175
|
m_scheduler->unregisterSurface(surfaceHandler);
|
|
@@ -176,7 +179,9 @@ void FabricUIManager::stopSurface(facebook::react::SurfaceId surfaceId) noexcept
|
|
|
176
179
|
std::unique_lock lock(m_handlerMutex);
|
|
177
180
|
|
|
178
181
|
auto iterator = m_handlerRegistry.find(surfaceId);
|
|
179
|
-
m_handlerRegistry.
|
|
182
|
+
if (iterator != m_handlerRegistry.end()) {
|
|
183
|
+
m_handlerRegistry.erase(iterator);
|
|
184
|
+
}
|
|
180
185
|
}
|
|
181
186
|
|
|
182
187
|
auto &rootDescriptor = m_registry.componentViewDescriptorWithTag(surfaceId);
|
|
@@ -477,6 +482,12 @@ void FabricUIManager::schedulerDidSendAccessibilityEvent(
|
|
|
477
482
|
assert(false);
|
|
478
483
|
}
|
|
479
484
|
|
|
485
|
+
void FabricUIManager::schedulerDidUpdateShadowTree(
|
|
486
|
+
const std::unordered_map<facebook::react::Tag, folly::dynamic> &tagToProps) {
|
|
487
|
+
// TODO: Implement shadow tree update handling if needed
|
|
488
|
+
// This method is called when the scheduler updates shadow tree props
|
|
489
|
+
}
|
|
490
|
+
|
|
480
491
|
void FabricUIManager::Initialize(winrt::Microsoft::ReactNative::ReactContext const &reactContext) noexcept {
|
|
481
492
|
m_context = reactContext;
|
|
482
493
|
|
|
@@ -104,6 +104,8 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
|
|
|
104
104
|
virtual void schedulerDidSendAccessibilityEvent(
|
|
105
105
|
const facebook::react::ShadowView &shadowView,
|
|
106
106
|
std::string const &eventType) override;
|
|
107
|
+
virtual void schedulerDidUpdateShadowTree(
|
|
108
|
+
const std::unordered_map<facebook::react::Tag, folly::dynamic> &tagToProps) override;
|
|
107
109
|
};
|
|
108
110
|
|
|
109
111
|
} // namespace Microsoft::ReactNative
|
|
@@ -97,6 +97,12 @@ inline ColorComponents colorComponentsFromHostPlatformColor(Color color) {
|
|
|
97
97
|
(float)windowsColor.A / ratio};
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
// windows
|
|
101
|
+
inline bool hostPlatformColorIsColorMeaningful(Color color) noexcept {
|
|
102
|
+
auto windowsColor = color.AsWindowsColor();
|
|
103
|
+
return windowsColor.A > 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
100
106
|
} // namespace facebook::react
|
|
101
107
|
|
|
102
108
|
namespace std {
|
|
@@ -80,6 +80,12 @@ void WindowsTextLayoutManager::GetTextLayout(
|
|
|
80
80
|
TextMeasurement::Attachments &attachments) noexcept {
|
|
81
81
|
const auto &attributedString = attributedStringBox.getValue();
|
|
82
82
|
auto fragments = attributedString.getFragments();
|
|
83
|
+
|
|
84
|
+
// Check if fragments is empty to avoid out-of-bounds access
|
|
85
|
+
if (fragments.empty()) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
83
89
|
auto outerFragment = fragments[0];
|
|
84
90
|
|
|
85
91
|
DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL;
|
|
@@ -130,6 +136,25 @@ void WindowsTextLayoutManager::GetTextLayout(
|
|
|
130
136
|
outerFragment.textAttributes.lineHeight * 0.8f));
|
|
131
137
|
}
|
|
132
138
|
|
|
139
|
+
// Set reading direction (RTL/LTR) based on baseWritingDirection
|
|
140
|
+
// Only set reading direction if explicitly specified to avoid breaking existing layouts
|
|
141
|
+
bool isRTL = false;
|
|
142
|
+
if (outerFragment.textAttributes.baseWritingDirection.has_value()) {
|
|
143
|
+
DWRITE_READING_DIRECTION readingDirection = DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
|
|
144
|
+
if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::RightToLeft) {
|
|
145
|
+
readingDirection = DWRITE_READING_DIRECTION_RIGHT_TO_LEFT;
|
|
146
|
+
isRTL = true;
|
|
147
|
+
} else if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::LeftToRight) {
|
|
148
|
+
readingDirection = DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
|
|
149
|
+
isRTL = false;
|
|
150
|
+
} else if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::Natural) {
|
|
151
|
+
// Natural uses the layout direction from textAttributes
|
|
152
|
+
isRTL = (outerFragment.textAttributes.layoutDirection == facebook::react::LayoutDirection::RightToLeft);
|
|
153
|
+
readingDirection = isRTL ? DWRITE_READING_DIRECTION_RIGHT_TO_LEFT : DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
|
|
154
|
+
}
|
|
155
|
+
winrt::check_hresult(spTextFormat->SetReadingDirection(readingDirection));
|
|
156
|
+
}
|
|
157
|
+
|
|
133
158
|
// Set text alignment
|
|
134
159
|
DWRITE_TEXT_ALIGNMENT alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
|
|
135
160
|
if (outerFragment.textAttributes.alignment) {
|
|
@@ -146,9 +171,9 @@ void WindowsTextLayoutManager::GetTextLayout(
|
|
|
146
171
|
case facebook::react::TextAlignment::Right:
|
|
147
172
|
alignment = DWRITE_TEXT_ALIGNMENT_TRAILING;
|
|
148
173
|
break;
|
|
149
|
-
// TODO use LTR values
|
|
150
174
|
case facebook::react::TextAlignment::Natural:
|
|
151
|
-
alignment
|
|
175
|
+
// Natural alignment respects reading direction if baseWritingDirection was set
|
|
176
|
+
alignment = isRTL ? DWRITE_TEXT_ALIGNMENT_TRAILING : DWRITE_TEXT_ALIGNMENT_LEADING;
|
|
152
177
|
break;
|
|
153
178
|
default:
|
|
154
179
|
assert(false);
|
|
@@ -375,47 +400,45 @@ TextMeasurement TextLayoutManager::measure(
|
|
|
375
400
|
TextMeasurement measurement{};
|
|
376
401
|
auto &attributedString = attributedStringBox.getValue();
|
|
377
402
|
|
|
378
|
-
measurement = textMeasureCache_.get(
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
}
|
|
403
|
+
measurement = textMeasureCache_.get({attributedString, paragraphAttributes, layoutConstraints}, [&]() {
|
|
404
|
+
auto telemetry = TransactionTelemetry::threadLocalTelemetry();
|
|
405
|
+
if (telemetry) {
|
|
406
|
+
telemetry->willMeasureText();
|
|
407
|
+
}
|
|
384
408
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
if (spTextLayout) {
|
|
392
|
-
auto maxHeight = std::numeric_limits<float>().max();
|
|
393
|
-
if (paragraphAttributes.maximumNumberOfLines > 0) {
|
|
394
|
-
std::vector<DWRITE_LINE_METRICS> lineMetrics;
|
|
395
|
-
uint32_t actualLineCount;
|
|
396
|
-
spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
|
|
397
|
-
lineMetrics.resize(static_cast<size_t>(actualLineCount));
|
|
398
|
-
winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
|
|
399
|
-
maxHeight = 0;
|
|
400
|
-
const auto count =
|
|
401
|
-
std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount);
|
|
402
|
-
for (uint32_t i = 0; i < count; ++i) {
|
|
403
|
-
maxHeight += lineMetrics[i].height;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
DWRITE_TEXT_METRICS dtm{};
|
|
408
|
-
winrt::check_hresult(spTextLayout->GetMetrics(&dtm));
|
|
409
|
-
measurement.size = {dtm.width, std::min(dtm.height, maxHeight)};
|
|
410
|
-
measurement.attachments = attachments;
|
|
411
|
-
}
|
|
409
|
+
winrt::com_ptr<IDWriteTextLayout> spTextLayout;
|
|
410
|
+
|
|
411
|
+
TextMeasurement::Attachments attachments;
|
|
412
|
+
WindowsTextLayoutManager::GetTextLayout(
|
|
413
|
+
attributedStringBox, paragraphAttributes, layoutConstraints.maximumSize, spTextLayout, attachments);
|
|
412
414
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
+
if (spTextLayout) {
|
|
416
|
+
auto maxHeight = std::numeric_limits<float>().max();
|
|
417
|
+
if (paragraphAttributes.maximumNumberOfLines > 0) {
|
|
418
|
+
std::vector<DWRITE_LINE_METRICS> lineMetrics;
|
|
419
|
+
uint32_t actualLineCount;
|
|
420
|
+
spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
|
|
421
|
+
lineMetrics.resize(static_cast<size_t>(actualLineCount));
|
|
422
|
+
winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
|
|
423
|
+
maxHeight = 0;
|
|
424
|
+
const auto count = std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount);
|
|
425
|
+
for (uint32_t i = 0; i < count; ++i) {
|
|
426
|
+
maxHeight += lineMetrics[i].height;
|
|
415
427
|
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
DWRITE_TEXT_METRICS dtm{};
|
|
431
|
+
winrt::check_hresult(spTextLayout->GetMetrics(&dtm));
|
|
432
|
+
measurement.size = {dtm.width, std::min(dtm.height, maxHeight)};
|
|
433
|
+
measurement.attachments = attachments;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (telemetry) {
|
|
437
|
+
telemetry->didMeasureText();
|
|
438
|
+
}
|
|
416
439
|
|
|
417
|
-
|
|
418
|
-
|
|
440
|
+
return measurement;
|
|
441
|
+
});
|
|
419
442
|
return measurement;
|
|
420
443
|
}
|
|
421
444
|
|