Move Libraries/Inspector/ to src/private/ (#49022)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49022

These modules support the in-app Inspector Overlay.

Breaking change that's unlikely to hit any users. Unreferenced by Expo.

Changelog:
[General][Breaking] Move `Libraries/Inspector/` modules to `src/private/`

Reviewed By: cortinico

Differential Revision: D68781896

fbshipit-source-id: 8fcd72d56684319019f64a375c2e2ef317a47c13
This commit is contained in:
Alex Hunt
2025-01-29 09:56:54 -08:00
committed by Facebook GitHub Bot
parent 9a9aa19387
commit 0bde08fe67
15 changed files with 75 additions and 290 deletions
@@ -52,7 +52,7 @@ const InspectorDeferred = ({
}: InspectorDeferredProps) => {
// D39382967 adds a require cycle: InitializeCore -> AppContainer -> Inspector -> InspectorPanel -> ScrollView -> InitializeCore
// We can't remove it yet, fallback to dynamic require for now. This is the only reason why this logic is in a separate function.
const Inspector = require('../Inspector/Inspector').default;
const Inspector = require('../../src/private/inspector/Inspector').default;
return (
<Inspector
@@ -73,7 +73,7 @@ const ReactDevToolsOverlayDeferred = ({
reactDevToolsAgent,
}: ReactDevToolsOverlayDeferredProps) => {
const ReactDevToolsOverlay =
require('../Inspector/ReactDevToolsOverlay').default;
require('../../src/private/inspector/ReactDevToolsOverlay').default;
return (
<ReactDevToolsOverlay
@@ -5135,228 +5135,6 @@ declare module.exports: resolveAssetSource;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/BorderBox.js 1`] = `
"type Props = $ReadOnly<{
children: React.Node,
box?: ?$ReadOnly<{
top: number,
right: number,
bottom: number,
left: number,
...
}>,
style?: ViewStyleProp,
}>;
declare function BorderBox(Props): React.Node;
declare export default typeof BorderBox;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/BoxInspector.js 1`] = `
"type BoxInspectorProps = $ReadOnly<{
style: ViewStyleProp,
frame: ?InspectedElementFrame,
}>;
declare function BoxInspector(BoxInspectorProps): React.Node;
declare export default typeof BoxInspector;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/ElementBox.js 1`] = `
"type Props = $ReadOnly<{
frame: InspectedElementFrame,
style?: ?ViewStyleProp,
}>;
declare function ElementBox(Props): React.Node;
declare export default typeof ElementBox;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/ElementProperties.js 1`] = `
"type Props = $ReadOnly<{
hierarchy: ?InspectorData[\\"hierarchy\\"],
style?: ?ViewStyleProp,
frame?: ?Object,
selection?: ?number,
setSelection?: (number) => mixed,
}>;
declare class ElementProperties extends React.Component<Props> {
render(): React.Node;
}
declare export default typeof ElementProperties;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/Inspector.js 1`] = `
"export type InspectedElementFrame = TouchedViewDataAtPoint[\\"frame\\"];
export type InspectedElement = $ReadOnly<{
frame: InspectedElementFrame,
style?: ViewStyleProp,
}>;
export type ElementsHierarchy = InspectorData[\\"hierarchy\\"];
type Props = {
inspectedViewRef: InspectedViewRef,
onRequestRerenderApp: () => void,
reactDevToolsAgent?: ReactDevToolsAgent,
};
declare function Inspector(Props): React.Node;
declare export default typeof Inspector;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/InspectorOverlay.js 1`] = `
"type Props = $ReadOnly<{
inspected?: ?InspectedElement,
onTouchPoint: (locationX: number, locationY: number) => void,
}>;
declare function InspectorOverlay(Props): React.Node;
declare export default typeof InspectorOverlay;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/InspectorPanel.js 1`] = `
"type Props = $ReadOnly<{
devtoolsIsOpen: boolean,
inspecting: boolean,
setInspecting: (val: boolean) => void,
perfing: boolean,
setPerfing: (val: boolean) => void,
touchTargeting: boolean,
setTouchTargeting: (val: boolean) => void,
networking: boolean,
setNetworking: (val: boolean) => void,
hierarchy?: ?ElementsHierarchy,
selection?: ?number,
setSelection: (number) => mixed,
inspected?: ?InspectedElement,
}>;
declare class InspectorPanel extends React.Component<Props> {
renderWaiting(): React.Node;
render(): React.Node;
}
declare export default typeof InspectorPanel;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/NetworkOverlay.js 1`] = `
"type NetworkRequestInfo = {
id: number,
type?: string,
url?: string,
method?: string,
status?: number,
dataSent?: any,
responseContentType?: string,
responseSize?: number,
requestHeaders?: Object,
responseHeaders?: string,
response?: Object | string,
responseURL?: string,
responseType?: string,
timeout?: number,
closeReason?: string,
messages?: string,
serverClose?: Object,
serverError?: Object,
...
};
type Props = $ReadOnly<{}>;
type State = {
detailRowId: ?number,
requests: Array<NetworkRequestInfo>,
};
declare class NetworkOverlay extends React.Component<Props, State> {
_requestsListView: ?React.ElementRef<Class<FlatList<NetworkRequestInfo>>>;
_detailScrollView: ?React.ElementRef<typeof ScrollView>;
_requestsListViewScrollMetrics: {
contentLength: number,
offset: number,
visibleLength: number,
};
_socketIdMap: { [number]: number };
_xhrIdMap: { [key: number]: number, ... };
state: State;
_enableXHRInterception(): void;
_enableWebSocketInterception(): void;
componentDidMount(): void;
componentWillUnmount(): void;
_renderItem: $FlowFixMe;
_renderItemDetail(id: number): React.Node;
_indicateAdditionalRequests: $FlowFixMe;
_captureRequestsListView: $FlowFixMe;
_requestsListViewOnScroll: $FlowFixMe;
_pressRow(rowId: number): void;
_scrollDetailToTop: $FlowFixMe;
_closeButtonClicked: $FlowFixMe;
_getRequestIndexByXHRID(index: number): number;
render(): React.Node;
}
declare export default typeof NetworkOverlay;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/PerformanceOverlay.js 1`] = `
"declare class PerformanceOverlay extends React.Component<{ ... }> {
render(): React.Node;
}
declare export default typeof PerformanceOverlay;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/ReactDevToolsOverlay.js 1`] = `
"type Props = {
inspectedViewRef: InspectedViewRef,
reactDevToolsAgent: ReactDevToolsAgent,
};
declare export default function ReactDevToolsOverlay(Props): React.Node;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/StyleInspector.js 1`] = `
"type Props = $ReadOnly<{
style?: ?____FlattenStyleProp_Internal<ViewStyleProp>,
}>;
declare function StyleInspector(Props): React.Node;
declare export default typeof StyleInspector;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/getInspectorDataForViewAtPoint.js 1`] = `
"export type ReactRenderer = {
rendererConfig: {
getInspectorDataForViewAtPoint: (
inspectedView: ?HostInstance,
locationX: number,
locationY: number,
callback: Function
) => void,
...
},
};
declare function getInspectorDataForViewAtPoint(
inspectedView: ?HostInstance,
locationX: number,
locationY: number,
callback: (viewData: TouchedViewDataAtPoint) => boolean
): void;
declare export default typeof getInspectorDataForViewAtPoint;
"
`;
exports[`public API should not change unintentionally Libraries/Inspector/resolveBoxStyle.js 1`] = `
"declare function resolveBoxStyle(
prefix: string,
style: Object
): ?$ReadOnly<{
bottom: number,
left: number,
right: number,
top: number,
}>;
declare export default typeof resolveBoxStyle;
"
`;
exports[`public API should not change unintentionally Libraries/Interaction/FrameRateLogger.js 1`] = `
"declare const FrameRateLogger: {
setGlobalOptions: (options: { debug?: boolean, ... }) => void,
@@ -10,11 +10,11 @@
'use strict';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {ViewStyleProp} from '../../../Libraries/StyleSheet/StyleSheet';
import React from 'react';
const View = require('../Components/View/View').default;
const View = require('../../../Libraries/Components/View/View').default;
type Props = $ReadOnly<{
children: React.Node,
@@ -10,14 +10,17 @@
'use strict';
import type {TextStyleProp, ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {
TextStyleProp,
ViewStyleProp,
} from '../../../Libraries/StyleSheet/StyleSheet';
import type {InspectedElementFrame} from './Inspector';
import React from 'react';
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
const View = require('../../../Libraries/Components/View/View').default;
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
const resolveBoxStyle = require('./resolveBoxStyle').default;
const blank = {
@@ -10,15 +10,15 @@
'use strict';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {ViewStyleProp} from '../../../Libraries/StyleSheet/StyleSheet';
import type {InspectedElementFrame} from './Inspector';
import React from 'react';
const View = require('../Components/View/View').default;
const flattenStyle = require('../StyleSheet/flattenStyle');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Dimensions = require('../Utilities/Dimensions').default;
const View = require('../../../Libraries/Components/View/View').default;
const flattenStyle = require('../../../Libraries/StyleSheet/flattenStyle');
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Dimensions = require('../../../Libraries/Utilities/Dimensions').default;
const BorderBox = require('./BorderBox').default;
const resolveBoxStyle = require('./resolveBoxStyle').default;
@@ -10,20 +10,20 @@
'use strict';
import type {InspectorData} from '../Renderer/shims/ReactNativeTypes';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {InspectorData} from '../../../Libraries/Renderer/shims/ReactNativeTypes';
import type {ViewStyleProp} from '../../../Libraries/StyleSheet/StyleSheet';
import React from 'react';
const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
require('../../../Libraries/Components/Touchable/TouchableHighlight').default;
const TouchableWithoutFeedback =
require('../Components/Touchable/TouchableWithoutFeedback').default;
const View = require('../Components/View/View').default;
const flattenStyle = require('../StyleSheet/flattenStyle');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
const mapWithSeparator = require('../Utilities/mapWithSeparator');
require('../../../Libraries/Components/Touchable/TouchableWithoutFeedback').default;
const View = require('../../../Libraries/Components/View/View').default;
const flattenStyle = require('../../../Libraries/StyleSheet/flattenStyle');
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
const mapWithSeparator = require('../../../Libraries/Utilities/mapWithSeparator');
const BoxInspector = require('./BoxInspector').default;
const StyleInspector = require('./StyleInspector').default;
@@ -10,23 +10,25 @@
'use strict';
import type {InspectedViewRef} from '../ReactNative/AppContainer-dev';
import type {InspectedViewRef} from '../../../Libraries/ReactNative/AppContainer-dev';
import type {
InspectorData,
TouchedViewDataAtPoint,
} from '../Renderer/shims/ReactNativeTypes';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {ReactDevToolsAgent} from '../Types/ReactDevToolsTypes';
} from '../../../Libraries/Renderer/shims/ReactNativeTypes';
import type {ViewStyleProp} from '../../../Libraries/StyleSheet/StyleSheet';
import type {ReactDevToolsAgent} from '../../../Libraries/Types/ReactDevToolsTypes';
import SafeAreaView from '../../src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE';
import SafeAreaView from '../components/SafeAreaView_INTERNAL_DO_NOT_USE';
import React from 'react';
const View = require('../Components/View/View').default;
const PressabilityDebug = require('../Pressability/PressabilityDebug');
const {findNodeHandle} = require('../ReactNative/RendererProxy');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Dimensions = require('../Utilities/Dimensions').default;
const Platform = require('../Utilities/Platform');
const View = require('../../../Libraries/Components/View/View').default;
const PressabilityDebug = require('../../../Libraries/Pressability/PressabilityDebug');
const {
findNodeHandle,
} = require('../../../Libraries/ReactNative/RendererProxy');
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Dimensions = require('../../../Libraries/Utilities/Dimensions').default;
const Platform = require('../../../Libraries/Utilities/Platform');
const getInspectorDataForViewAtPoint =
require('./getInspectorDataForViewAtPoint').default;
const InspectorOverlay = require('./InspectorOverlay').default;
@@ -10,13 +10,13 @@
'use strict';
import type {PressEvent} from '../Types/CoreEventTypes';
import type {PressEvent} from '../../../Libraries/Types/CoreEventTypes';
import type {InspectedElement} from './Inspector';
import React from 'react';
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const View = require('../../../Libraries/Components/View/View').default;
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const ElementBox = require('./ElementBox').default;
type Props = $ReadOnly<{
@@ -12,15 +12,16 @@
import type {ElementsHierarchy, InspectedElement} from './Inspector';
import SafeAreaView from '../Components/SafeAreaView/SafeAreaView';
import SafeAreaView from '../../../Libraries/Components/SafeAreaView/SafeAreaView';
import React from 'react';
const ScrollView = require('../Components/ScrollView/ScrollView').default;
const ScrollView =
require('../../../Libraries/Components/ScrollView/ScrollView').default;
const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
require('../../../Libraries/Components/Touchable/TouchableHighlight').default;
const View = require('../../../Libraries/Components/View/View').default;
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
const ElementProperties = require('./ElementProperties').default;
const NetworkOverlay = require('./NetworkOverlay').default;
const PerformanceOverlay = require('./PerformanceOverlay').default;
@@ -12,18 +12,18 @@
import type {RenderItemProps} from '@react-native/virtualized-lists';
import ScrollView from '../Components/ScrollView/ScrollView';
import ScrollView from '../../../Libraries/Components/ScrollView/ScrollView';
import React from 'react';
const TouchableHighlight =
require('../Components/Touchable/TouchableHighlight').default;
const View = require('../Components/View/View').default;
const FlatList = require('../Lists/FlatList').default;
const XHRInterceptor = require('../Network/XHRInterceptor');
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
require('../../../Libraries/Components/Touchable/TouchableHighlight').default;
const View = require('../../../Libraries/Components/View/View').default;
const FlatList = require('../../../Libraries/Lists/FlatList').default;
const XHRInterceptor = require('../../../Libraries/Network/XHRInterceptor');
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
const WebSocketInterceptor =
require('../WebSocket/WebSocketInterceptor').default;
require('../../../Libraries/WebSocket/WebSocketInterceptor').default;
const LISTVIEW_CELL_HEIGHT = 15;
@@ -12,10 +12,10 @@
import React from 'react';
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
const PerformanceLogger = require('../Utilities/GlobalPerformanceLogger');
const View = require('../../../Libraries/Components/View/View').default;
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
const PerformanceLogger = require('../../../Libraries/Utilities/GlobalPerformanceLogger');
class PerformanceOverlay extends React.Component<{...}> {
render(): React.Node {
@@ -8,15 +8,15 @@
* @flow
*/
import type {InspectedViewRef} from '../ReactNative/AppContainer-dev';
import type {PointerEvent} from '../Types/CoreEventTypes';
import type {PressEvent} from '../Types/CoreEventTypes';
import type {ReactDevToolsAgent} from '../Types/ReactDevToolsTypes';
import type {InspectedViewRef} from '../../../Libraries/ReactNative/AppContainer-dev';
import type {PointerEvent} from '../../../Libraries/Types/CoreEventTypes';
import type {PressEvent} from '../../../Libraries/Types/CoreEventTypes';
import type {ReactDevToolsAgent} from '../../../Libraries/Types/ReactDevToolsTypes';
import type {InspectedElement} from './Inspector';
import View from '../Components/View/View';
import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
import StyleSheet from '../StyleSheet/StyleSheet';
import View from '../../../Libraries/Components/View/View';
import ReactNativeFeatureFlags from '../../../Libraries/ReactNative/ReactNativeFeatureFlags';
import StyleSheet from '../../../Libraries/StyleSheet/StyleSheet';
import ElementBox from './ElementBox';
import * as React from 'react';
@@ -10,14 +10,14 @@
'use strict';
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
import type {____FlattenStyleProp_Internal} from '../StyleSheet/StyleSheetTypes';
import type {ViewStyleProp} from '../../../Libraries/StyleSheet/StyleSheet';
import type {____FlattenStyleProp_Internal} from '../../../Libraries/StyleSheet/StyleSheetTypes';
import React from 'react';
const View = require('../Components/View/View').default;
const StyleSheet = require('../StyleSheet/StyleSheet');
const Text = require('../Text/Text').default;
const View = require('../../../Libraries/Components/View/View').default;
const StyleSheet = require('../../../Libraries/StyleSheet/StyleSheet');
const Text = require('../../../Libraries/Text/Text').default;
type Props = $ReadOnly<{
style?: ?____FlattenStyleProp_Internal<ViewStyleProp>,
@@ -11,7 +11,7 @@
import type {
HostInstance,
TouchedViewDataAtPoint,
} from '../Renderer/shims/ReactNativeTypes';
} from '../../../Libraries/Renderer/shims/ReactNativeTypes';
const invariant = require('invariant');
@@ -10,7 +10,8 @@
'use strict';
const I18nManager = require('../ReactNative/I18nManager').default;
const I18nManager =
require('../../../Libraries/ReactNative/I18nManager').default;
/**
* Resolve a style property into its component parts.