/*** Copyright (c) Meta Platforms, Inc. and affiliates.** This source code is licensed under the MIT license found in the* LICENSE file in the root directory of this source tree.** @flow*/import * as React from 'react';
import KeyValue from './KeyValue';
import Store from '../../store';
import sharedStyles from './InspectedElementSharedStyles.css';
import styles from './InspectedElementStyleXPlugin.css';
import {enableStyleXFeatures} from 'react-devtools-feature-flags';
import type {InspectedElement} from 'react-devtools-shared/src/frontend/types';
import type {FrontendBridge} from 'react-devtools-shared/src/bridge';
import type {Element} from 'react-devtools-shared/src/frontend/types';
type Props = {
bridge: FrontendBridge,
element: Element,
inspectedElement: InspectedElement,
store: Store,
};export default function InspectedElementStyleXPlugin({
bridge,element,inspectedElement,store,}: Props): React.Node {
if (!enableStyleXFeatures) {
return null;
}const styleXPlugin = inspectedElement.plugins.stylex;
if (styleXPlugin == null) {
return null;
}const {resolvedStyles, sources} = styleXPlugin;
return (
<div className={sharedStyles.InspectedElementTree}>
<div className={sharedStyles.HeaderRow}>
<div className={sharedStyles.Header}>stylex</div>
</div>
{sources.map(source => (
<div key={source} className={styles.Source}>
{source}
</div>
))}{Object.entries(resolvedStyles).map(([name, value]) => (
<KeyValuekey={name}alphaSort={true}bridge={bridge}canDeletePaths={false}canEditValues={false}canRenamePaths={false}depth={1}
element={element}hidden={false}inspectedElement={inspectedElement}name={name}path={[name]}
pathRoot="stylex"store={store}value={value}/>))}</div>
);
}