@office-iss/react-native-win32 0.73.2 → 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/.eslintignore +1 -1
- package/.flowconfig +11 -3
- package/CHANGELOG.json +411 -54
- package/CHANGELOG.md +157 -30
- package/IntegrationTests/AccessibilityManagerTest.js +2 -2
- package/IntegrationTests/AppEventsTest.js +2 -2
- package/IntegrationTests/LayoutEventsTest.js +8 -10
- package/IntegrationTests/LoggingTestModule.js +1 -2
- package/IntegrationTests/websocket_integration_test_server.js +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/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/NativeAnimatedHelper.win32.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/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/AccessibilityInfo.d.ts +5 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +48 -7
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +3 -2
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
- package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
- package/Libraries/Components/Button/ButtonWin32.Props.js +2 -2
- package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
- package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
- package/Libraries/Components/Button/ButtonWin32.js +82 -82
- package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
- package/Libraries/Components/Button.js +103 -107
- package/Libraries/Components/Button.win32.js +297 -301
- 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/EnterString.win32.d.ts +12 -12
- package/Libraries/Components/EnterString.win32.js +81 -81
- package/Libraries/Components/EnterString.win32.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.win32.js +1 -1
- 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/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/ScrollView.win32.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/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/Tests/TextInputTest.d.ts +8 -8
- package/Libraries/Components/TextInput/Tests/TextInputTest.js +127 -127
- package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
- 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.win32.js +70 -37
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +343 -344
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
- package/Libraries/Components/Touchable/Touchable.js +2 -3
- package/Libraries/Components/Touchable/Touchable.win32.js +2 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
- package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -37
- package/Libraries/Components/Touchable/TouchableWin32.Props.js +2 -2
- package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
- package/Libraries/Components/Touchable/TouchableWin32.Types.js +2 -2
- package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
- package/Libraries/Components/Touchable/TouchableWin32.js +506 -506
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- 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.win32.js +18 -17
- 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.win32.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/ReactNativeVersionCheck.win32.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.win32.js +52 -74
- package/Libraries/Image/ImageBackground.js +2 -2
- package/Libraries/Image/ImageInjection.js +76 -18
- package/Libraries/Image/ImageTypes.d.ts +25 -25
- package/Libraries/Image/ImageTypes.flow.js +71 -0
- package/Libraries/Image/ImageTypes.js +7 -7
- package/Libraries/Image/ImageTypes.js.map +1 -1
- 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/NativeImageLoaderWin32.js +4 -36
- package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
- package/Libraries/Image/NativeImageStoreIOS.js +3 -23
- package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
- package/Libraries/Image/Tests/ImageWin32Test.js +21 -21
- package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
- package/Libraries/Image/resolveAssetSource.js +59 -26
- package/Libraries/Inspector/ElementProperties.js +26 -52
- package/Libraries/Inspector/Inspector.js +122 -186
- package/Libraries/Inspector/Inspector.win32.js +118 -185
- package/Libraries/Inspector/InspectorOverlay.js +21 -33
- package/Libraries/Inspector/InspectorOverlay.win32.js +22 -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/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/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/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/Performance/NativeJSCSamplingProfiler.js +3 -9
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
- package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
- package/Libraries/PersonaCoin/PersonaCoin.js +14 -14
- package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -1
- package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
- package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +19 -19
- package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -1
- package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
- package/Libraries/PersonaCoin/PersonaCoinTypes.js +23 -23
- package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -1
- package/Libraries/Pressability/Pressability.js +12 -2
- package/Libraries/Pressability/Pressability.win32.js +12 -2
- 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.win32.js +26 -7
- 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.win32.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
- package/Libraries/StyleSheet/StyleSheet.js +5 -28
- package/Libraries/StyleSheet/StyleSheet.win32.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.d.ts +5 -6
- package/Libraries/Text/Text.js +0 -6
- package/Libraries/Text/Text.win32.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/Dimensions.win32.js +8 -16
- package/Libraries/Utilities/FocusManager.win32.js +2 -0
- 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.win32.js +18 -5
- package/Libraries/Utilities/Platform.ios.js +11 -0
- package/Libraries/Utilities/Platform.win32.js +9 -1
- 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/platform-types.d.ts +2 -3
- package/Libraries/vendor/emitter/EventEmitter.js +1 -0
- package/babel.config.js +1 -1
- package/flow/jest.js +1 -1
- package/flow/react.js +15 -0
- package/index.js +66 -99
- package/index.win32.js +60 -101
- 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/jest.config.js +2 -1
- package/overrides.json +152 -131
- package/package.json +26 -26
- 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/NativeAccessibilityInfoWin32.js +39 -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/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/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/NativeImageLoaderWin32.js +45 -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 +37 -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/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +161 -0
- package/{src → src-win}/Libraries/Components/Button/ButtonWin32.tsx +3 -3
- package/{src → src-win}/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +9 -10
- package/{src → src-win}/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
- package/{src → src-win}/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
- package/{src → src-win}/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
- package/{src → src-win}/Libraries/Text/Text.d.ts +5 -6
- package/{src → src-win}/Libraries/platform-types.d.ts +2 -3
- package/types/modules/globals.d.ts +1 -0
- package/Libraries/Components/Button.flow.js +0 -265
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
- package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -63
- package/Libraries/Components/Text/TextWin32.Props.js +0 -3
- package/Libraries/Components/Text/TextWin32.Props.js.map +0 -1
- package/Libraries/Components/Text/TextWin32.d.ts +0 -6
- package/Libraries/Components/Text/TextWin32.js +0 -18
- package/Libraries/Components/Text/TextWin32.js.map +0 -1
- 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/src/Libraries/Components/Text/TextWin32.Props.ts +0 -82
- package/src/Libraries/Components/Text/TextWin32.tsx +0 -25
- /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
- /package/{src → src-win}/Libraries/Components/Button/ButtonWin32.Props.ts +0 -0
- /package/{src → src-win}/Libraries/Components/EnterString.win32.tsx +0 -0
- /package/{src → src-win}/Libraries/Components/TextInput/Tests/TextInputTest.tsx +0 -0
- /package/{src → src-win}/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +0 -0
- /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Props.tsx +0 -0
- /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Types.tsx +0 -0
- /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.tsx +0 -0
- /package/{src → src-win}/Libraries/Components/View/ViewWin32.d.ts +0 -0
- /package/{src → src-win}/Libraries/Image/ImageTypes.ts +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/ImageWin32Test.tsx +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/dpitest.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
- /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
- /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoin.tsx +0 -0
- /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +0 -0
- /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinTypes.ts +0 -0
- /package/{src → src-win}/Libraries/Utilities/FocusManager.win32.d.ts +0 -0
- /package/{src → src-win}/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +0 -0
|
@@ -0,0 +1,513 @@
|
|
|
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
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type ReactNativeElement from '../../src/private/webapis/dom/nodes/ReactNativeElement';
|
|
13
|
+
import type ReadOnlyElement from '../../src/private/webapis/dom/nodes/ReadOnlyElement';
|
|
14
|
+
import type {
|
|
15
|
+
AppContainerRootViewRef,
|
|
16
|
+
DebuggingOverlayRef,
|
|
17
|
+
} from '../ReactNative/AppContainer-dev';
|
|
18
|
+
import type {NativeMethods} from '../Renderer/shims/ReactNativeTypes';
|
|
19
|
+
import type {
|
|
20
|
+
InstanceFromReactDevTools,
|
|
21
|
+
ReactDevToolsAgent,
|
|
22
|
+
ReactDevToolsAgentEvents,
|
|
23
|
+
ReactDevToolsGlobalHook,
|
|
24
|
+
} from '../Types/ReactDevToolsTypes';
|
|
25
|
+
import type {
|
|
26
|
+
ElementRectangle,
|
|
27
|
+
TraceUpdate,
|
|
28
|
+
} from './DebuggingOverlayNativeComponent';
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
findNodeHandle,
|
|
32
|
+
isChildPublicInstance,
|
|
33
|
+
} from '../ReactNative/RendererProxy';
|
|
34
|
+
import processColor from '../StyleSheet/processColor';
|
|
35
|
+
|
|
36
|
+
// TODO(T171193075): __REACT_DEVTOOLS_GLOBAL_HOOK__ is always injected in dev-bundles,
|
|
37
|
+
// but it is not mocked in some Jest tests. We should update Jest tests setup, so it would be the same as expected testing environment.
|
|
38
|
+
const reactDevToolsHook: ?ReactDevToolsGlobalHook =
|
|
39
|
+
window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
40
|
+
|
|
41
|
+
export type DebuggingOverlayRegistrySubscriberProtocol = {
|
|
42
|
+
rootViewRef: AppContainerRootViewRef,
|
|
43
|
+
debuggingOverlayRef: DebuggingOverlayRef,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
type ModernNodeUpdate = {
|
|
47
|
+
id: number,
|
|
48
|
+
instance: ReactNativeElement,
|
|
49
|
+
color: string,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
type LegacyNodeUpdate = {
|
|
53
|
+
id: number,
|
|
54
|
+
instance: NativeMethods,
|
|
55
|
+
color: string,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
class DebuggingOverlayRegistry {
|
|
59
|
+
#registry: Set<DebuggingOverlayRegistrySubscriberProtocol> = new Set();
|
|
60
|
+
#reactDevToolsAgent: ReactDevToolsAgent | null = null;
|
|
61
|
+
|
|
62
|
+
constructor() {
|
|
63
|
+
if (reactDevToolsHook?.reactDevtoolsAgent != null) {
|
|
64
|
+
this.#onReactDevToolsAgentAttached(reactDevToolsHook.reactDevtoolsAgent);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
reactDevToolsHook?.on?.(
|
|
69
|
+
'react-devtools',
|
|
70
|
+
this.#onReactDevToolsAgentAttached,
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
subscribe(subscriber: DebuggingOverlayRegistrySubscriberProtocol) {
|
|
75
|
+
this.#registry.add(subscriber);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
unsubscribe(subscriber: DebuggingOverlayRegistrySubscriberProtocol) {
|
|
79
|
+
const wasPresent = this.#registry.delete(subscriber);
|
|
80
|
+
if (!wasPresent) {
|
|
81
|
+
console.error(
|
|
82
|
+
'[DebuggingOverlayRegistry] Unexpected argument for unsubscription, which was not previously subscribed:',
|
|
83
|
+
subscriber,
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#onReactDevToolsAgentAttached = (agent: ReactDevToolsAgent): void => {
|
|
89
|
+
this.#reactDevToolsAgent = agent;
|
|
90
|
+
|
|
91
|
+
agent.addListener('drawTraceUpdates', this.#onDrawTraceUpdates);
|
|
92
|
+
agent.addListener('showNativeHighlight', this.#onHighlightElements);
|
|
93
|
+
agent.addListener('hideNativeHighlight', this.#onClearElementsHighlights);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
#getPublicInstanceFromInstance = (
|
|
97
|
+
instanceHandle: InstanceFromReactDevTools,
|
|
98
|
+
): NativeMethods | null => {
|
|
99
|
+
// `canonical.publicInstance` => Fabric
|
|
100
|
+
if (instanceHandle.canonical?.publicInstance != null) {
|
|
101
|
+
return instanceHandle.canonical?.publicInstance;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// `canonical` => Legacy Fabric
|
|
105
|
+
if (instanceHandle.canonical != null) {
|
|
106
|
+
// $FlowFixMe[incompatible-return]
|
|
107
|
+
return instanceHandle.canonical;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// `instanceHandle` => Legacy renderer
|
|
111
|
+
if (instanceHandle.measure != null) {
|
|
112
|
+
// $FlowFixMe[incompatible-return]
|
|
113
|
+
return instanceHandle;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return null;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
#findLowestParentFromRegistryForInstance(
|
|
120
|
+
instance: ReactNativeElement,
|
|
121
|
+
): ?DebuggingOverlayRegistrySubscriberProtocol {
|
|
122
|
+
let iterator: ?ReadOnlyElement = instance;
|
|
123
|
+
while (iterator != null) {
|
|
124
|
+
for (const subscriber of this.#registry) {
|
|
125
|
+
if (subscriber.rootViewRef.current === iterator) {
|
|
126
|
+
return subscriber;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
iterator = iterator.parentElement;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
#findLowestParentFromRegistryForInstanceLegacy(
|
|
137
|
+
instance: NativeMethods,
|
|
138
|
+
): ?DebuggingOverlayRegistrySubscriberProtocol {
|
|
139
|
+
const candidates: Array<DebuggingOverlayRegistrySubscriberProtocol> = [];
|
|
140
|
+
|
|
141
|
+
for (const subscriber of this.#registry) {
|
|
142
|
+
if (
|
|
143
|
+
subscriber.rootViewRef.current != null &&
|
|
144
|
+
// $FlowFixMe[incompatible-call] There is a lot of stuff to untangle to make types for refs work.
|
|
145
|
+
isChildPublicInstance(subscriber.rootViewRef.current, instance)
|
|
146
|
+
) {
|
|
147
|
+
candidates.push(subscriber);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (candidates.length === 0) {
|
|
152
|
+
// In some cases, like with LogBox in custom integrations, the whole subtree for specific React root might not have an AppContainer.
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (candidates.length === 1) {
|
|
157
|
+
return candidates[0];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// If there are multiple candidates, we need to find the lowest.
|
|
161
|
+
// Imagine the case when there is a modal on the screen, both of them will have their own AppContainers,
|
|
162
|
+
// but modal's AppContainer is a child of screen's AppContainer.
|
|
163
|
+
const candidatesWithNoChildren: Array<DebuggingOverlayRegistrySubscriberProtocol> =
|
|
164
|
+
[];
|
|
165
|
+
for (const potentialParent of candidates) {
|
|
166
|
+
let shouldSkipThisParent = false;
|
|
167
|
+
|
|
168
|
+
if (potentialParent.rootViewRef.current == null) {
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
for (const potentialChild of candidates) {
|
|
173
|
+
if (potentialChild === potentialParent) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (potentialChild.rootViewRef.current == null) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (
|
|
182
|
+
isChildPublicInstance(
|
|
183
|
+
// $FlowFixMe[incompatible-call] There is a lot of stuff to untangle to make types for refs work.
|
|
184
|
+
potentialParent.rootViewRef.current,
|
|
185
|
+
// $FlowFixMe[incompatible-call] There is a lot of stuff to untangle to make types for refs work.
|
|
186
|
+
potentialChild.rootViewRef.current,
|
|
187
|
+
)
|
|
188
|
+
) {
|
|
189
|
+
shouldSkipThisParent = true;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (!shouldSkipThisParent) {
|
|
195
|
+
candidatesWithNoChildren.push(potentialParent);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (candidatesWithNoChildren.length === 0) {
|
|
200
|
+
console.error(
|
|
201
|
+
'[DebuggingOverlayRegistry] Unexpected circular relationship between AppContainers',
|
|
202
|
+
);
|
|
203
|
+
return null;
|
|
204
|
+
} else if (candidatesWithNoChildren.length > 1) {
|
|
205
|
+
console.error(
|
|
206
|
+
'[DebuggingOverlayRegistry] Unexpected multiple options for lowest parent AppContainer',
|
|
207
|
+
);
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return candidatesWithNoChildren[0];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
#onDrawTraceUpdates: (
|
|
215
|
+
...ReactDevToolsAgentEvents['drawTraceUpdates']
|
|
216
|
+
) => void = traceUpdates => {
|
|
217
|
+
const modernNodesUpdates: Array<ModernNodeUpdate> = [];
|
|
218
|
+
const legacyNodesUpdates: Array<LegacyNodeUpdate> = [];
|
|
219
|
+
|
|
220
|
+
for (const {node, color} of traceUpdates) {
|
|
221
|
+
const publicInstance = this.#getPublicInstanceFromInstance(node);
|
|
222
|
+
if (publicInstance == null) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const instanceReactTag = findNodeHandle(node);
|
|
227
|
+
if (instanceReactTag == null) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Lazy import to avoid dependency cycle.
|
|
232
|
+
const ReactNativeElementClass =
|
|
233
|
+
require('../../src/private/webapis/dom/nodes/ReactNativeElement').default;
|
|
234
|
+
if (publicInstance instanceof ReactNativeElementClass) {
|
|
235
|
+
modernNodesUpdates.push({
|
|
236
|
+
id: instanceReactTag,
|
|
237
|
+
instance: publicInstance,
|
|
238
|
+
color,
|
|
239
|
+
});
|
|
240
|
+
} else {
|
|
241
|
+
legacyNodesUpdates.push({
|
|
242
|
+
id: instanceReactTag,
|
|
243
|
+
instance: publicInstance,
|
|
244
|
+
color,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (modernNodesUpdates.length > 0) {
|
|
250
|
+
this.#drawTraceUpdatesModern(modernNodesUpdates);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (legacyNodesUpdates.length > 0) {
|
|
254
|
+
this.#drawTraceUpdatesLegacy(legacyNodesUpdates);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
#drawTraceUpdatesModern(updates: Array<ModernNodeUpdate>): void {
|
|
259
|
+
const parentToTraceUpdatesMap = new Map<
|
|
260
|
+
DebuggingOverlayRegistrySubscriberProtocol,
|
|
261
|
+
Array<TraceUpdate>,
|
|
262
|
+
>();
|
|
263
|
+
for (const {id, instance, color} of updates) {
|
|
264
|
+
const parent = this.#findLowestParentFromRegistryForInstance(instance);
|
|
265
|
+
if (parent == null) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
let traceUpdatesForParent = parentToTraceUpdatesMap.get(parent);
|
|
270
|
+
if (traceUpdatesForParent == null) {
|
|
271
|
+
traceUpdatesForParent = [];
|
|
272
|
+
parentToTraceUpdatesMap.set(parent, traceUpdatesForParent);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const {x, y, width, height} = instance.getBoundingClientRect();
|
|
276
|
+
|
|
277
|
+
const rootViewInstance = parent.rootViewRef.current;
|
|
278
|
+
if (rootViewInstance == null) {
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const {x: parentX, y: parentY} =
|
|
283
|
+
// $FlowFixMe[prop-missing] React Native View is not a descendant of ReactNativeElement yet. We should be able to remove it once Paper is no longer supported.
|
|
284
|
+
rootViewInstance.getBoundingClientRect();
|
|
285
|
+
|
|
286
|
+
// DebuggingOverlay will scale to the same size as a Root view. Substract Root view position from the element position
|
|
287
|
+
// to calculate the element's position relatively to its parent DebuggingOverlay.
|
|
288
|
+
// We can't call `getBoundingClientRect` on the debuggingOverlayRef, because its a ref for the native component, which doesn't have it, hopefully yet.
|
|
289
|
+
traceUpdatesForParent.push({
|
|
290
|
+
id,
|
|
291
|
+
rectangle: {x: x - parentX, y: y - parentY, width, height},
|
|
292
|
+
color: processColor(color),
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
for (const [parent, traceUpdates] of parentToTraceUpdatesMap.entries()) {
|
|
297
|
+
const {debuggingOverlayRef} = parent;
|
|
298
|
+
debuggingOverlayRef.current?.highlightTraceUpdates(traceUpdates);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// TODO: remove once DOM Node APIs are opt-in by default and Paper is no longer supported.
|
|
303
|
+
#drawTraceUpdatesLegacy(updates: Array<LegacyNodeUpdate>): void {
|
|
304
|
+
const parentToTraceUpdatesPromisesMap = new Map<
|
|
305
|
+
DebuggingOverlayRegistrySubscriberProtocol,
|
|
306
|
+
Array<Promise<TraceUpdate>>,
|
|
307
|
+
>();
|
|
308
|
+
|
|
309
|
+
for (const {id, instance, color} of updates) {
|
|
310
|
+
const parent =
|
|
311
|
+
this.#findLowestParentFromRegistryForInstanceLegacy(instance);
|
|
312
|
+
|
|
313
|
+
if (parent == null) {
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
let traceUpdatesPromisesForParent =
|
|
318
|
+
parentToTraceUpdatesPromisesMap.get(parent);
|
|
319
|
+
if (traceUpdatesPromisesForParent == null) {
|
|
320
|
+
traceUpdatesPromisesForParent = [];
|
|
321
|
+
parentToTraceUpdatesPromisesMap.set(
|
|
322
|
+
parent,
|
|
323
|
+
traceUpdatesPromisesForParent,
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const frameToDrawPromise = new Promise<TraceUpdate>((resolve, reject) => {
|
|
328
|
+
instance.measure((x, y, width, height, left, top) => {
|
|
329
|
+
// measure can execute callback without any values provided to signal error.
|
|
330
|
+
if (left == null || top == null || width == null || height == null) {
|
|
331
|
+
reject('Unexpectedly failed to call measure on an instance.');
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
resolve({
|
|
335
|
+
id,
|
|
336
|
+
rectangle: {x: left, y: top, width, height},
|
|
337
|
+
color: processColor(color),
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
traceUpdatesPromisesForParent.push(frameToDrawPromise);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
for (const [
|
|
346
|
+
parent,
|
|
347
|
+
traceUpdatesPromises,
|
|
348
|
+
] of parentToTraceUpdatesPromisesMap.entries()) {
|
|
349
|
+
Promise.all(traceUpdatesPromises)
|
|
350
|
+
.then(resolvedTraceUpdates =>
|
|
351
|
+
parent.debuggingOverlayRef.current?.highlightTraceUpdates(
|
|
352
|
+
resolvedTraceUpdates,
|
|
353
|
+
),
|
|
354
|
+
)
|
|
355
|
+
.catch(() => {
|
|
356
|
+
// noop. For legacy architecture (Paper) this can happen for root views or LogBox button.
|
|
357
|
+
// LogBox case: it has a separate React root, so `measure` fails.
|
|
358
|
+
// Calling `console.error` here would trigger rendering a new LogBox button, for which we will call measure again, this is a cycle.
|
|
359
|
+
// Don't spam the UI with errors for such cases.
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
#onHighlightElements: (
|
|
365
|
+
...ReactDevToolsAgentEvents['showNativeHighlight']
|
|
366
|
+
) => void = nodes => {
|
|
367
|
+
// First clear highlights for every container
|
|
368
|
+
for (const subscriber of this.#registry) {
|
|
369
|
+
subscriber.debuggingOverlayRef.current?.clearElementsHighlight();
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Lazy import to avoid dependency cycle.
|
|
373
|
+
const ReactNativeElementClass =
|
|
374
|
+
require('../../src/private/webapis/dom/nodes/ReactNativeElement').default;
|
|
375
|
+
|
|
376
|
+
const reactNativeElements: Array<ReactNativeElement> = [];
|
|
377
|
+
const legacyPublicInstances: Array<NativeMethods> = [];
|
|
378
|
+
|
|
379
|
+
for (const node of nodes) {
|
|
380
|
+
const publicInstance = this.#getPublicInstanceFromInstance(node);
|
|
381
|
+
if (publicInstance == null) {
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (publicInstance instanceof ReactNativeElementClass) {
|
|
386
|
+
reactNativeElements.push(publicInstance);
|
|
387
|
+
} else {
|
|
388
|
+
legacyPublicInstances.push(publicInstance);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (reactNativeElements.length > 0) {
|
|
393
|
+
this.#onHighlightElementsModern(reactNativeElements);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (legacyPublicInstances.length > 0) {
|
|
397
|
+
this.#onHighlightElementsLegacy(legacyPublicInstances);
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
#onHighlightElementsModern(elements: Array<ReactNativeElement>): void {
|
|
402
|
+
const parentToElementsMap = new Map<
|
|
403
|
+
DebuggingOverlayRegistrySubscriberProtocol,
|
|
404
|
+
Array<ReactNativeElement>,
|
|
405
|
+
>();
|
|
406
|
+
|
|
407
|
+
for (const element of elements) {
|
|
408
|
+
const parent = this.#findLowestParentFromRegistryForInstance(element);
|
|
409
|
+
if (parent == null) {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
let childElementOfAParent = parentToElementsMap.get(parent);
|
|
414
|
+
if (childElementOfAParent == null) {
|
|
415
|
+
childElementOfAParent = [];
|
|
416
|
+
parentToElementsMap.set(parent, childElementOfAParent);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
childElementOfAParent.push(element);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
for (const [parent, elementsToHighlight] of parentToElementsMap.entries()) {
|
|
423
|
+
const rootViewInstance = parent.rootViewRef.current;
|
|
424
|
+
if (rootViewInstance == null) {
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
const {x: parentX, y: parentY} =
|
|
429
|
+
// $FlowFixMe[prop-missing] React Native View is not a descendant of ReactNativeElement yet. We should be able to remove it once Paper is no longer supported.
|
|
430
|
+
rootViewInstance.getBoundingClientRect();
|
|
431
|
+
|
|
432
|
+
// DebuggingOverlay will scale to the same size as a Root view. Substract Root view position from the element position
|
|
433
|
+
// to calculate the element's position relatively to its parent DebuggingOverlay.
|
|
434
|
+
// We can't call `getBoundingClientRect` on the debuggingOverlayRef, because its a ref for the native component, which doesn't have it, hopefully yet.
|
|
435
|
+
const elementsRectangles = elementsToHighlight.map(element => {
|
|
436
|
+
const {x, y, width, height} = element.getBoundingClientRect();
|
|
437
|
+
return {x: x - parentX, y: y - parentY, width, height};
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
parent.debuggingOverlayRef.current?.highlightElements(elementsRectangles);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// TODO: remove once DOM Node APIs are opt-in by default and Paper is no longer supported.
|
|
445
|
+
#onHighlightElementsLegacy(elements: Array<NativeMethods>): void {
|
|
446
|
+
const parentToElementsMap = new Map<
|
|
447
|
+
DebuggingOverlayRegistrySubscriberProtocol,
|
|
448
|
+
Array<NativeMethods>,
|
|
449
|
+
>();
|
|
450
|
+
|
|
451
|
+
for (const element of elements) {
|
|
452
|
+
const parent =
|
|
453
|
+
this.#findLowestParentFromRegistryForInstanceLegacy(element);
|
|
454
|
+
if (parent == null) {
|
|
455
|
+
continue;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
let childElementOfAParent = parentToElementsMap.get(parent);
|
|
459
|
+
if (childElementOfAParent == null) {
|
|
460
|
+
childElementOfAParent = [];
|
|
461
|
+
parentToElementsMap.set(parent, childElementOfAParent);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
childElementOfAParent.push(element);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
for (const [parent, elementsToHighlight] of parentToElementsMap.entries()) {
|
|
468
|
+
const promises = elementsToHighlight.map(
|
|
469
|
+
element =>
|
|
470
|
+
new Promise<ElementRectangle>((resolve, reject) => {
|
|
471
|
+
element.measure((x, y, width, height, left, top) => {
|
|
472
|
+
// measure can execute callback without any values provided to signal error.
|
|
473
|
+
if (
|
|
474
|
+
left == null ||
|
|
475
|
+
top == null ||
|
|
476
|
+
width == null ||
|
|
477
|
+
height == null
|
|
478
|
+
) {
|
|
479
|
+
reject('Unexpectedly failed to call measure on an instance.');
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
resolve({x: left, y: top, width, height});
|
|
483
|
+
});
|
|
484
|
+
}),
|
|
485
|
+
);
|
|
486
|
+
|
|
487
|
+
Promise.all(promises)
|
|
488
|
+
.then(resolvedElementsRectangles =>
|
|
489
|
+
parent.debuggingOverlayRef.current?.highlightElements(
|
|
490
|
+
resolvedElementsRectangles,
|
|
491
|
+
),
|
|
492
|
+
)
|
|
493
|
+
.catch(() => {
|
|
494
|
+
// noop. For legacy architecture (Paper) this can happen for root views or LogBox button.
|
|
495
|
+
// LogBox case: it has a separate React root, so `measure` fails.
|
|
496
|
+
// Calling `console.error` here would trigger rendering a new LogBox button, for which we will call measure again, this is a cycle.
|
|
497
|
+
// Don't spam the UI with errors for such cases.
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
#onClearElementsHighlights: (
|
|
503
|
+
...ReactDevToolsAgentEvents['hideNativeHighlight']
|
|
504
|
+
) => void = () => {
|
|
505
|
+
for (const subscriber of this.#registry) {
|
|
506
|
+
subscriber.debuggingOverlayRef.current?.clearElementsHighlight();
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
const debuggingOverlayRegistryInstance: DebuggingOverlayRegistry =
|
|
512
|
+
new DebuggingOverlayRegistry();
|
|
513
|
+
export default debuggingOverlayRegistryInstance;
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
AppContainerRootViewRef,
|
|
14
|
+
DebuggingOverlayRef,
|
|
15
|
+
} from '../ReactNative/AppContainer-dev';
|
|
16
|
+
|
|
17
|
+
import DebuggingOverlayRegistry from './DebuggingOverlayRegistry';
|
|
18
|
+
import {useEffect} from 'react';
|
|
19
|
+
|
|
20
|
+
const useSubscribeToDebuggingOverlayRegistry = (
|
|
21
|
+
rootViewRef: AppContainerRootViewRef,
|
|
22
|
+
debuggingOverlayRef: DebuggingOverlayRef,
|
|
23
|
+
) => {
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const subscriber = {rootViewRef, debuggingOverlayRef};
|
|
26
|
+
|
|
27
|
+
DebuggingOverlayRegistry.subscribe(subscriber);
|
|
28
|
+
return () => DebuggingOverlayRegistry.unsubscribe(subscriber);
|
|
29
|
+
}, [rootViewRef, debuggingOverlayRef]);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default useSubscribeToDebuggingOverlayRegistry;
|
|
@@ -8,17 +8,6 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export interface Spec extends TurboModule {
|
|
16
|
-
+setConsolePatchSettings: (newConsolePatchSettings: string) => void;
|
|
17
|
-
+getConsolePatchSettings: () => ?string;
|
|
18
|
-
+setProfilingSettings?: (newProfilingSettings: string) => void;
|
|
19
|
-
+getProfilingSettings?: () => ?string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default (TurboModuleRegistry.get<Spec>(
|
|
23
|
-
'DevToolsSettingsManager',
|
|
24
|
-
): ?Spec);
|
|
11
|
+
export * from '../../src/private/specs/modules/NativeDevToolsSettingsManager';
|
|
12
|
+
import NativeDevToolsSettingsManager from '../../src/private/specs/modules/NativeDevToolsSettingsManager';
|
|
13
|
+
export default NativeDevToolsSettingsManager;
|
|
@@ -8,12 +8,6 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export interface Spec extends TurboModule {
|
|
16
|
-
+captureComplete: (path: string, error: ?string) => void;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default (TurboModuleRegistry.get<Spec>('JSCHeapCapture'): ?Spec);
|
|
11
|
+
export * from '../../src/private/specs/modules/NativeJSCHeapCapture';
|
|
12
|
+
import NativeJSCHeapCapture from '../../src/private/specs/modules/NativeJSCHeapCapture';
|
|
13
|
+
export default NativeJSCHeapCapture;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
@@ -68,7 +68,7 @@ class AssetSourceResolver {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
isLoadedFromFileSystem(): boolean {
|
|
71
|
-
return
|
|
71
|
+
return this.jsbundleUrl != null && this.jsbundleUrl?.startsWith('file://');
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
defaultAsset(): ResolvedAssetSource {
|
|
@@ -90,7 +90,7 @@ class AssetSourceResolver {
|
|
|
90
90
|
* from the devserver
|
|
91
91
|
*/
|
|
92
92
|
assetServerURL(): ResolvedAssetSource {
|
|
93
|
-
invariant(
|
|
93
|
+
invariant(this.serverUrl != null, 'need server to load from');
|
|
94
94
|
return this.fromSource(
|
|
95
95
|
this.serverUrl +
|
|
96
96
|
getScaledAssetPath(this.asset) +
|
|
@@ -114,7 +114,7 @@ class AssetSourceResolver {
|
|
|
114
114
|
* E.g. 'file:///sdcard/bundle/assets/AwesomeModule/icon@2x.png'
|
|
115
115
|
*/
|
|
116
116
|
scaledAssetURLNearBundle(): ResolvedAssetSource {
|
|
117
|
-
const path = this.jsbundleUrl
|
|
117
|
+
const path = this.jsbundleUrl ?? 'file://';
|
|
118
118
|
return this.fromSource(
|
|
119
119
|
// Assets can have relative paths outside of the project root.
|
|
120
120
|
// When bundling them we replace `../` with `_` to make sure they
|
|
@@ -143,7 +143,7 @@ class AssetSourceResolver {
|
|
|
143
143
|
* E.g. 'file:///sdcard/AwesomeModule/drawable-mdpi/icon.png'
|
|
144
144
|
*/
|
|
145
145
|
drawableFolderInBundle(): ResolvedAssetSource {
|
|
146
|
-
const path = this.jsbundleUrl
|
|
146
|
+
const path = this.jsbundleUrl ?? 'file://';
|
|
147
147
|
return this.fromSource(path + getAssetPathInDrawableFolder(this.asset));
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
@@ -14,12 +14,11 @@ let cacheBreaker;
|
|
|
14
14
|
let warnIfCacheBreakerUnset = true;
|
|
15
15
|
|
|
16
16
|
export function pickScale(scales: Array<number>, deviceScale?: number): number {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
17
|
+
const requiredDeviceScale = deviceScale ?? PixelRatio.get();
|
|
18
|
+
|
|
20
19
|
// Packager guarantees that `scales` array is sorted
|
|
21
20
|
for (let i = 0; i < scales.length; i++) {
|
|
22
|
-
if (scales[i] >=
|
|
21
|
+
if (scales[i] >= requiredDeviceScale) {
|
|
23
22
|
return scales[i];
|
|
24
23
|
}
|
|
25
24
|
}
|